2011-12-22 181 views
2

我有一個項目有兩個版本的相同的jar(他們實現類似的類和其他特定的類)。一個jar用於一個文件夾中的java源文件,另一個用於其他文件夾。Maven:衝突罐依賴項

的問題是,它會導致一個罐子衝突(不同類的實現),因爲它似乎是兩個文件夾使用的依賴列表中找到的第一個罐子,如:

Jar_file ... 1.0 0.0

Jar_file ... 2.0.0

然後,我的問題是我怎麼能到其中的關聯是否對同一項目中的每個文件夾有特定的依賴關係?

乾杯。

+0

版本2.0是否不包含向後兼容版本1.0? – Davos555 2011-12-22 11:08:14

+0

爲什麼不能在項目的所有地方使用2.0版本? – 2011-12-22 11:36:48

+0

嗨,沒有向後兼容性:(真的,它們是相同標準的不同實現,而不是不同的版本。 – Soni 2011-12-22 11:53:49

回答

5

您應該將兩個「文件夾」重構爲兩個不同的Maven模塊。現在每個人都可以聲明它需要的庫的版本。然後使用maven-shade-plugin將庫調整爲兩個模塊的結果JAR文件。另外使用maven-shade-plugin的class relocation功能將庫的類重定位到新包。爲這兩個版本的庫選擇不同的軟件包名稱。您將最終將庫的兩個版本放入兩個不同的包中,並將其隱藏到生成的JAR文件中。