簡體   English   中英

Gradle:從 fat jar 中排除 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM