繁体   English   中英

Gradle:从 fat jar 中排除 compileOnly 提供的依赖项

[英]Gradle: exclude dependencies provided from compileOnly from fat jar

我在compileOnly配置和其他几个库中使用了一个巨大的依赖项(Spark)。 我正在尝试构建一个胖 jar,当然,没有compileOnly依赖项。 Gradle 做得很好,但是,一些库声明了compile / runtimeOnly依赖项,这些依赖项也是compileOnly巨大依赖项的依赖项,例如:

my-module
|-> compileOnly: spark
|   ...
|   \-> compile: scala-reflect
|   ...
\-> implementation: library
    ...
    \-> runtimeOnly: scala-reflect

这导致scala-reflect作为运行时依赖项包含在 jar 中,我试图避免这种情况。 这里仅以 Scala 为例,实际上还有更多类似的(Jackson,Apache Commons 的一部分,……)。

有没有办法强制compileOnly训练依赖?

正如我所看到的,我可以手动exclude那些传递依赖项并将它们重新声明为compileOnly ,但这会有点混乱(我错过了什么?我是否排除了实际上没有提供的东西?)。

您可以尝试通过dependencies指令强制影子插件删除那些不需要的dependencies

例如:

shadowJar {
  dependencies {
    exclude(dependency('org.scala-lang:scala-reflect:.*'))
  }
}

更多信息在这里https://imperceptiblethoughts.com/shadow/configuration/dependencies/#filtering-dependencies

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM