2015-01-08 75 views
0

項目A引用項目B.項目B包含本地依賴項。不幸的是,這個本地依賴項對版本1.5中的net.java.dev.designgridlayout有依賴性。排除不能傳遞的依賴項

我們想在項目A的版本1.11中使用net.java.dev.designgridlayout,但是我們無法「覆蓋」依賴項。 Eclipse始終使用項目B的依賴項。

我們已經嘗試從本地依賴項中排除1.5版本,但它不起作用。 奇怪的是,Eclipse成功解析了一個已經添加了版本1.11的類。然而,對於一個已經存在的類,eclipse將它從de.someCompany的傳遞依賴關係中解析出來。

項目B:

<dependencies> <dependency> <groupId>de.someCompany</groupId> <artifactId>fs-client</artifactId> <version>5.1.209</version> <exclusions> <exclusion> <groupId>net.java.dev.designgridlayout</groupId> <artifactId>designgridlayout</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.java.dev.designgridlayout</groupId> <artifactId>designgridlayout</artifactId> <version>1.11</version> </dependency> </dependencies>

項目A:

<dependencies> <dependency> <groupId>Project-B</groupId> <artifactId>Project-B</artifactId> <version>1503.01</version> </dependency> </dependencies>

我也試圖包括項目A的1.11依賴

我們甚至嘗試安裝DesignGridLayout V. 1.11在本地依賴項中將groupID和artifactId更改爲somethi ng不同,但由於某些原因,Eclipse甚至找不到它。如果可以將DesignGridLayout與另一個groupId和artifactId一起包含,我認爲它會起作用。

mvn install:install-file -Dfile=lib\designgridlayout.jar -DgroupId=com.company.designgridlayout -DartifactId=design-grid-layout -Dversion=1.11 -DgeneratePom=true -Dpackaging=jar -DlocalRepositoryPath="%USERPROFILE%\.m2\repository"

回答

0

不知道 - 但是:

您的項目有一個依賴於本身?它不應該使用project-b嗎?

它不是一個好主意,改變組或神器id的作爲,因爲maven不能再檢測到它相同的神器。如果你做一個自定義版本,版本號應該足夠了。

如果您在自己的pom中添加依賴項,那麼您不需要排除工件,因爲groupId和artifactId是相同的。在你自己的pom中的版本將贏得項目-b。如果項目a自己定義了該依賴關係,那麼版本將會獲勝。

我會在項目上做一個mvn dependency:tree pom以查看依賴關係的來源。

對於eclipse:它索引本地存儲庫。在maven設置中有一個重新索引按鈕。所以如果你手動複製那些可能幫助日食找到神器的罐子。但是這種解決方法需要在每臺機器上完成。我不會把這算作解決方案。在Maven世界中,工件解決是一個基礎設施問題,不應該針對每個項目進行處理。這樣做的方式應透明settings.xml

+0

ops,當然,我的意思是項目-B;) –

+0

好吧:) - 您在項目-A中的依賴關係是「designgridlayout」? maven爲此展示了什麼版本?它從哪裏來? – wemu