我在compileOnly
配置和其他几个库中使用了一个巨大的依赖项(Spark)。我正在尝试构建一个胖罐子,当然,没有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
,但这会有点混乱(我错过了什么吗?我排除了一些实际上没有提供的东西吗?)。