我正在使用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