有没有办法在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
我的项目直接依赖于它不是一个选择。这是一个简化,在原来的设置一些反映正在进行。
3条答案
按热度按时间omvjsjqw1#
抱歉,如果我误解了你的情况,事实上这是更复杂的,但它看起来像排除可以在依赖声明中提供?
rdlzhqv92#
是的,您可以使用gradle的shadow插件,它的语法与您的示例非常相似:
bihw5rsg3#
你可以试试这个
resolutionStrategy
(https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.resolutionstrategy.html)强制特定版本。项目示例: