以下是我的POM的粗略版本,
<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
。是否可以在Maven中使用不同版本的java工件并排?特别是,如何处理上述情况?
@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 :(得分:1)
不确定,如果在这种情况下可能(即一个与插件版本冲突),但是对于常规依赖关系管理(即使用2个不同版本的2个依赖关系),maven documentation说,
“最接近的定义”表示使用的版本最接近 一个在依赖树中的项目,例如。如果依赖 A,B和C的定义为A - > B - &gt; C - &gt; D 2.0和A - &gt; E - &gt; d 1.0,然后在构建A时将使用D 1.0,因为从A到D到E的路径更短。您可以向D明确添加依赖项 2.0 in A强制使用D 2.0