[英]Generate Maven “provided” dependency in pom.xml from Gradle “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.