我有以下的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'
}我需要创建一个包含'com.amazonaws:amazon-kinesis-producer:0.14.10'所有传递依赖项的jar的胖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 }它排除了所有我不想要的基于密钥披风的特定jars,但我也希望不包括那些传递的依赖项。有什么简单的方法可以从依赖节点开始删除整个树吗?
附带注意:我不能仅仅从我的dependencies {}部分中删除那些依赖项,因为我需要它们作为IntelliJ并编译代码,而当我将jars添加到Docker映像时,我需要将它们排除在外,因为密钥斗篷基映像已经包含了所有这些依赖项,而且在添加这些依赖项时会出现冲突。
发布于 2022-03-07 08:57:35
看起来,可以使用以下方法实现这一点:
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://stackoverflow.com/questions/71337222
复制相似问题