我正在使用maven构建一个jar-with-dependencies jar。项目中的其中一个供应商jar文件具有类似名称的不同大小写。例如aM.class和am.class。Maven构建似乎是在创建与依赖关系的jar时覆盖类
当构建创建“jar -with-dependencies”jar文件时,只存在aM.class。 am.class似乎已被覆盖或跳过。每个类似命名的类文件都会发生同样的事情。
我们有几个解决方法,但我很好奇为什么maven构建是这样做的。由于
我POM:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.mytest.MyTest</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<dependencies>
<dependency>
<groupId>com.bloomberglp</groupId>
<artifactId>blpapi3</artifactId>
<version>3.10.1</version>
</dependency>
</dependencies>
嗯,这可能是由于你在Windows上编译,它是不区分大小写的操作系统。但我不确定操作系统为什么会在解压依赖的时候起作用。试用最新版本的'maven-assembly-plugin',它是2.6。 – Tunaki
如果你真的有名字相同的类,它们的包是一样的,类加载器应该如何处理这样的事情?哪个课程首先被加载? – khmarbaise
是啊.....这是一种尴尬,但我有点忘记窗口不区分大小写。 vendor jar必须在Linux/Solaris上生成。使用阴影插件而不是程序集插件修复了我的问题。谢谢 – Roy