2016-03-02 74 views
1

我創建了一個jar文件,由多個jar創建(我在此例中使用了Gradle Shadow插件)。處理陰影(超級/胖)jar文件中的重複條目

原來,該文件包含/META-INF中的重複文件。它們大多是原始jar文件中的多個license.txt,但其中一些是我感興趣的Spring工廠。

在Maven或Gradle中使用各種類似fatjar的工具時,此行爲似乎很常見,它看起來很像就像它不被任何手段所禁止。

我檢查了java.lang.ClassLoader#getResources將返回這些條目相同的URL列表,例如:

  • jar:file:/C:/temp/myJar.jar!/META-INF/spring.factories
  • jar:file:/C:/temp/myJar.jar!/META-INF/spring.factories

所以一旦我得到的網址,有沒有辦法通過編程獲取所有重複文件的內容。

可以Java處理這樣的重複文件,不知何故?

或者,也許更一般,從規格的角度來看,它是一個有效和受支持的情況,在裏面有一個帶有重複文件的jar嗎?我檢查了Jar File Specification,它也沒給我提供線索。

回答

1

maven-shade-plugin這是用AppendingTransformer完成的。

我的gradle這個插件documentation您正在使用的解釋是,這樣做是這樣的:

shadowJar { 
    append('META-INF/spring.factories') 
} 
相關問題