从 gradle 中的 configurations.runtimeClasspath 排除依赖树
Excluding dependency tree from configurations.runtimeClasspath in gradle
我有以下 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'
}
我需要创建一个 fat jar,其中包含 'com.amazonaws:amazon-kinesis-producer:0.14.10'
的所有传递依赖项的 jar,但不包含其余的。到目前为止,我的任务是将所有 jars 复制到一个目录中:
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 添加到 [=25] 时排除它们=] 图像,因为 Keycloak 基础图像已经包含所有这些,并且当我添加这些时会发生冲突。
看起来可以使用以下方法实现:
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')
我有以下 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'
}
我需要创建一个 fat jar,其中包含 'com.amazonaws:amazon-kinesis-producer:0.14.10'
的所有传递依赖项的 jar,但不包含其余的。到目前为止,我的任务是将所有 jars 复制到一个目录中:
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 添加到 [=25] 时排除它们=] 图像,因为 Keycloak 基础图像已经包含所有这些,并且当我添加这些时会发生冲突。
看起来可以使用以下方法实现:
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')