如何在Gradle中隐藏传递依赖?

ale*_*bit 5 java hadoop dependency-management gradle amazon-web-services

有没有办法在Gradle中隐藏特定的(传递)依赖项?我的情况:我有一个项目直接取决于com.amazonaws:aws-java-sdk-emr:1.10.33org.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'))
    }
}
Run Code Online (Sandbox Code Playgroud)

还是一个不太脏的解决方法?

谢谢!

注意:阴影aws-sdk直接取决于我的项目不是一种选择。这是一种简化,并且在原始设置中正在进行一些反射。

ssc*_*rth 6

是的,您可以使用Gradle 的影子插件,它的语法与您的示例非常相似

// Configuring Filtering for Relocation
shadowJar {
   relocate('junit.textui', 'a') {
       exclude 'junit.textui.TestRunner'
   }
   relocate('junit.framework', 'b') {
       include 'junit.framework.Test*'
   }
}
Run Code Online (Sandbox Code Playgroud)