Java Gradle:从fat jar中排除compileOnly提供的依赖项
我在Java Gradle:从fat jar中排除compileOnly提供的依赖项,java,gradle,deployment,fatjar,Java,Gradle,Deployment,Fatjar,我在compileOnlyconfiguration和其他几个库中使用了一个巨大的依赖项(Spark)。当然,我正在尝试构建一个胖jar,而不需要compileOnly依赖项。Gradle做得很好,但是,有几个库声明了compile/runtimeOnly依赖项,它们也是compileOnly巨大依赖项的依赖项,例如: my-module |-> compileOnly: spark | ... | \-> compile: scala-reflect | ... \-&
compileOnly
configuration和其他几个库中使用了一个巨大的依赖项(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
trainisition依赖项
如我所见,我可以手动
排除那些可传递的依赖项,并将它们重新声明为compileOnly
,但这会有点混乱(我是否遗漏了任何内容?我是否排除了实际未提供的内容?).您可以尝试通过dependencies
指令强制执行影子插件以删除那些不需要的依赖项
例如:
shadowJar {
dependencies {
exclude(dependency('org.scala-lang:scala-reflect:.*'))
}
}
更多信息请点击这里
您可以尝试通过dependencies
指令强制执行影子插件以删除那些不需要的依赖项
例如:
shadowJar {
dependencies {
exclude(dependency('org.scala-lang:scala-reflect:.*'))
}
}
更多信息请点击这里
如何构建fatjar?我使用的是一个获取编译输出并在默认情况下添加runtimeClasspath
configuration中所有内容的函数。我试图不向runtimeClasspath
添加任何内容。如何构建fatjar?我使用的是获取编译输出并在默认情况下添加runtimeClasspath
配置中的所有内容。我试图不向runtimeClasspath
添加任何内容。