我在compileOnly配置和其他几个库中使用了一个巨大的依赖项(Spark)。当然,我正在尝试构建一个不依赖compileOnly的胖jar。但是,Gradle这样做很好,但是有几个库声明了compile/runtimeOnly依赖项,这些依赖项也是compileOnly巨大依赖项的依赖项,例如:
my-module
|-> compileOnly: spark
| ...
| \-> compile: scala-reflect
| ...
\-> implementation: library
...
\-> runtimeOnly: scala-reflect这会导致scala-reflect作为运行时依赖项被包含到jar中,这是我正在试图避免的。这里只以Scala为例,实际上有更多类似的例子(杰克逊,ApacheCommons的一部分,…)。。
是否有办法强制执行compileOnly传统依赖关系?
正如我所看到的,我可以手动地exclude那些传递的依赖项并将它们重新声明为compileOnly,但是这会有点混乱(我错过了什么吗?)我是否排除了一些没有实际提供的东西?)
发布于 2020-11-19 16:22:55
您可以尝试通过dependencies指令强制执行影子插件以删除那些不需要的依赖项。
例如:
shadowJar {
dependencies {
exclude(dependency('org.scala-lang:scala-reflect:.*'))
}
}更多信息请访问https://imperceptiblethoughts.com/shadow/configuration/dependencies/#filtering-dependencies
https://stackoverflow.com/questions/56836971
复制相似问题