我有以下 gradle 依賴項:
dependencies {
implementation 'org.keycloak:keycloak-core:17.0.0'
implementation 'org.keycloak:keycloak-server-spi:17.0.0'
implementation 'org.keycloak:keycloak-server-spi-private:17.0.0'
implementation 'org.keycloak:keycloak-services:17.0.0'
implementation 'com.amazonaws:amazon-kinesis-producer:0.14.10'
}
我需要創建一個胖 jar,其中包含 的所有傳遞依賴項的 jar 'com.amazonaws:amazon-kinesis-producer:0.14.10',但不是其余的。到目前為止,我的任務是將所有 jar 復制到一個目錄中:
task copyToLib(type: Copy) {
into "jars"
duplicatesStrategy "exclude"
from configurations.runtimeClasspath.findAll { file ->
file.name != "keycloak-services-17.0.0.jar" && file.name != "keycloak-core-17.0.0.jar"
&& file.name != "keycloak-server-spi-17.0.0.jar" && file.name != "keycloak-server-spi-private-17.0.0.jar"
&& file.name != "keycloak-common-17.0.0.jar"
}
}
jar { dependsOn copyToLib }
它排除了我不想要的所有基于 Keycloak 的特定 jar,但我也希望不包含這些的傳遞依賴項。是否有一些簡單的方法可以從依賴節點開始洗掉整個樹?
旁注:我不能只從我的dependencies {}部分中洗掉這些依賴項,因為我需要它們用于 IntelliJ 并編譯代碼,而在將 jars 添加到 Docker 映像時我需要排除它們,因為 Keycloak 基礎映像已經包含所有這些和當我添加它們時會出現沖突。
uj5u.com熱心網友回復:
看起來可以使用以下方法實作:
from configurations.runtimeClasspath
.exclude(group: 'org.keycloak', module: 'keycloak-core')
.exclude(group: 'org.keycloak', module: 'keycloak-services')
.exclude(group: 'org.keycloak', module: 'keycloak-server-spi-private')
.exclude(group: 'org.keycloak', module: 'keycloak-server-spi')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/438990.html
上一篇:構建后如何觸發任務
下一篇:模塊從兩者中讀取包
