使用Maven的并排lib版本

时间:2012-12-05 10:56:44

标签: java maven

以下是我的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>

1 个答案:

答案 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