我有一個依賴於Woodstox和XStream的maven項目。不幸的是,XStream也依賴於Woodstox,但是它的版本稍微比我所需要的要舊。但與此同時,Woodstox庫的工件名稱發生了變化,因此maven不會將它們視爲同一工件的多個版本。但包名和類名是相同的,這意味着在運行時會有衝突。Maven中不同版本的相同依賴關係
現在,我明顯可以破解舊的woodstox罐子(我們的案例中的war
文件),但是解決這類問題的正確方法是什麼?
我有一個依賴於Woodstox和XStream的maven項目。不幸的是,XStream也依賴於Woodstox,但是它的版本稍微比我所需要的要舊。但與此同時,Woodstox庫的工件名稱發生了變化,因此maven不會將它們視爲同一工件的多個版本。但包名和類名是相同的,這意味着在運行時會有衝突。Maven中不同版本的相同依賴關係
現在,我明顯可以破解舊的woodstox罐子(我們的案例中的war
文件),但是解決這類問題的正確方法是什麼?
您可以嘗試excluding
woodstox依賴於您的dependency
xstream聲明。
<dependency>
<groupId>xstream.group</groupId>
<artifactId>xstream</artifactId>
<version>a.b.c</version>
<exclusions>
<exclusion>
<groupId>woodstox.group</groupId>
<artifactId>woodstox</artifactId>
</exclusion>
</exclusions>
</dependency>
如果你幸運的話,Raghuram建議的解決方案將起作用。
如果沒有,您將不得不創建XStream jar的修改版本,可能使用Maven Shade Plugin,將兩個XStream woodstox合併到一個Jar中,即renaming all woodstox packages。
+1,但不幸的是,要求新版本與舊版本具有相同的類和包名稱,否則向後兼容 – 2011-01-28 11:08:50