我在compileOnly
配置和其他几个库中使用了很大的依赖项(Spark)。当然,我试图构建一个没有compileOnly
依赖项的胖子。 Gradle可以做到这一点,但是,几个库声明了compile
/ runtimeOnly
依赖关系,这些依赖关系也是compileOnly
巨大依赖关系的依赖关系,例如:
my-module
|-> compileOnly: spark
| ...
| \-> compile: scala-reflect
| ...
\-> implementation: library
...
\-> runtimeOnly: scala-reflect
这导致scala-reflect
作为运行时依赖项包含在jar中,我试图避免这种情况。 Scala仅作为示例,实际上还有更多类似的东西(杰克逊,Apache Commons的一部分,...)。
有没有办法强制compileOnly
训练依赖?
如我所见,我可以手动exclude
那些传递依赖项并将它们重新声明为compileOnly
,但这会有些混乱(我错过了吗?我是否排除了一些实际上不是的东西)提供?)。
答案 0 :(得分:0)
您可以尝试通过dependencies
指令强制实施影子插件以删除那些不需要的依赖项。
例如:
shadowJar {
dependencies {
exclude(dependency('org.scala-lang:scala-reflect:.*'))
}
}
更多信息在这里 https://imperceptiblethoughts.com/shadow/configuration/dependencies/#filtering-dependencies