【发布时间】:2016-08-01 15:04:18
【问题描述】:
我正在使用 maven 构建一个 jar-with-dependencies jar。项目中的供应商 jar 文件之一具有类似命名的不同大小写的类。例如 aM.class 和 am.class。
当构建创建“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。 -
如果你真的有类名称相同并且它们的包相同,类加载器应该如何处理这样的事情?哪个类会先加载?
-
是的.....这有点尴尬,但我有点忘记了 windows 不区分大小写。供应商 jar 必须在 Linux/Solaris 上生成。使用阴影插件而不是程序集插件可以解决我的问题。谢谢
标签: java maven jar jar-with-dependencies