有沒有一種方法來遮蔽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擰緊,但我仍然需要這兩個。如何遮蔽Gradle中的傳遞依賴項?
目前可以做這樣的事情嗎?
shadowJar {
relocate('com.amazonaws', 'shadowedstuff.awsjdk') {
include(dependency('com.amazonaws:aws-java-sdk:1.7.4'))
}
}
還是一個不太髒的解決方法呢?
謝謝!
注意:陰影aws-sdk
我的項目直接依賴不是一個選項。這是一種簡化,在原始設置中正在進行一些反思。
你們排除了'1.7.4',只在兩個地方都使用了'1.10.33'? – RaGe
我現在的解決方案是將'hadoop-aws'與'aws-java-sdk:1.10.33'重新編譯併發布到我自己的倉庫中,以便在胖罐中只有一個'aws-java-jdk'。但是我不能輕鬆升級'hadoop-aws'依賴關係,而且這個想法本身並沒有擴展到其他用例,其中陰影特定的工件將會非常簡單,因爲某些類用於反射。 – ale64bit