2012-12-05 68 views
1

下面是我的POM粗糙的版本,使用並排側LIB版本Maven的

<project> 

    <dependencies> 
     <dependency>one-java-artifact-version-X</dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <dependencies> 
        <dependency>one-java-artifact-version-Y</dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

我希望插件使用one-java-artifact-version-Y但其他東西使用one-java-artifact-version-X。是否可以使用不同版本的Java神器與Maven並排?特別是,如何處理上述情況?

@EDIT

在我的情況與Maven 3.0.4,one-java-artifact-version-Y總是被one-java-artifact-version-X陰影,所以插件失敗,因爲上one-java-artifact-version-X而不是不可取的依賴來執行。然而,該插件,而其他的事情搞糟one-java-artifact-version-Y後被提拔到下面一個全球性的依賴,

<project> 

    <dependencies> 

     <dependency>one-java-artifact-version-Y</dependency> 

     <dependency>one-java-artifact-version-X</dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
      </plugin> 
     </plugins> 
    </build> 

</project> 
+0

您是否嘗試過?結果?錯誤消息? – khmarbaise

+0

'版本-Y'被'版本-X'覆蓋。 – sof

+0

您使用的是哪個版本的Maven? – carlspring

回答

1

不知道,如果在這種情況下是可能的(即具有的插件版本衝突的),但對於經常依賴管理(即2間之間的依賴關係使用2級不同的版本),maven documentation說,

「最近的定義」是指使用的版本將是最接近 一個依賴關係樹,如您的項目。如果將A,B和C的依賴關係 定義爲A→B→C→D 2.0和A→E→D 1.0,則在構建A時將使用D 1.0,因爲從A到D到E較短。您可以在A中明確添加依賴項D 2.0以強制使用D 2.0

+0

因此,Maven通過使用它們的所有版本來解決衝突,對吧?它並沒有解決我面前的問題。 – sof

+0

是的,maven解析歸結爲最接近定義的1版本。對於你的特定情況,可能會有一些黑客但不確定。 – mtk