Java 处理着色(uber/fat)jar文件中的重复条目
我创建了一个jar文件,由多个jar创建(在本例中我使用了插件) 原来该文件在Java 处理着色(uber/fat)jar文件中的重复条目,java,gradle,jar,classloader,gradle-shadow-plugin,Java,Gradle,Jar,Classloader,Gradle Shadow Plugin,我创建了一个jar文件,由多个jar创建(在本例中我使用了插件) 原来该文件在/META-INF中包含重复的文件。其中大多数是来自原始jar文件的多个license.txt,但其中一些是我感兴趣的Spring工厂 在Maven或Gradle中使用各种类似fatjar的工具时,这种行为似乎很常见,而且似乎没有任何方式禁止这种行为 我已经检查过java.lang.ClassLoader#getResources是否会将这些条目作为相同URL的列表返回,例如: jar:file:/C:/temp/m
/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
或者,更一般地说,从规范的角度来看,有一个包含重复文件的jar是一种有效且受支持的情况吗?我已经检查过了,它也没有给我任何线索。在
maven shade plugin
中,这是通过一个
我对您使用的gradle插件的理解是,这是通过以下方式完成的:
shadowJar {
append('META-INF/spring.factories')
}