2012-12-05 31 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