![](/img/trans.png)
[英]How can Maven Shade Plugin relocate multiple versions of a transitive dependency?
[英]How to shade a transitive dependency in Gradle?
有沒有辦法在 Gradle 中隱藏特定(傳遞)依賴項? 我的情況:我有一個項目直接依賴於com.amazonaws:aws-java-sdk-emr:1.10.33
和org.apache.hadoop:hadoop-aws:2.7.1
,但hadoop-aws
反過來又依賴於com.amazonaws:aws-java-sdk-emr:1.7.4
了最終的 JAR,但無論如何我都需要。
目前有可能做這樣的事情嗎?
shadowJar {
relocate('com.amazonaws', 'shadowedstuff.awsjdk') {
include(dependency('com.amazonaws:aws-java-sdk:1.7.4'))
}
}
或者一個不太臟的解決方法?
謝謝!
注意:對我的項目直接依賴的aws-sdk
進行着色不是一種選擇。 這是一種簡化,在原始設置中進行了一些反射。
如果我誤解了您的情況,並且實際上更復雜,但看起來排除只能在依賴聲明中提供,我深表歉意?
dependencies {
...
compile('org.apache.hadoop:hadoop-aws:2.7.1') {
exclude group: 'com.amazonaws', module: 'aws-java-sdk'
}
...
}
您可以嘗試使用resolutionStrategy
( https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html ) 來強制特定版本。
來自項目的示例:
configurations {
testImplementation.extendsFrom compileOnly
all {
resolutionStrategy {
// Force jackson 2.4.4 for Spark
force 'com.fasterxml.jackson.core:jackson-core:2.4.4', 'com.fasterxml.jackson.core:jackson-databind:2.4.4', 'com.fasterxml.jackson.core:jackson-annotations:2.4.4'
force 'com.google.guava:guava:23.6-jre'
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.