2011-01-28 87 views
14

我有一個依賴於Woodstox和XStream的maven項目。不幸的是,XStream也依賴於Woodstox,但是它的版本稍微比我所需要的要舊。但與此同時,Woodstox庫的工件名稱發生了變化,因此maven不會將它們視爲同一工件的多個版本。但包名和類名是相同的,這意味着在運行時會有衝突。Maven中不同版本的相同依賴關係

現在,我明顯可以破解舊的woodstox罐子(我們的案例中的war文件),但是解決這類問題的正確方法是什麼?

回答

18

您可以嘗試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> 
+6

+1,但不幸的是,要求新版本與舊版本具有相同的類和包名稱,否則向後兼容 – 2011-01-28 11:08:50

5

如果你幸運的話,Raghuram建議的解決方案將起作用。

如果沒有,您將不得不創建XStream jar的修改版本,可能使用Maven Shade Plugin,將兩個XStream woodstox合併到一個Jar中,即renaming all woodstox packages

相關問題