1

下面是我的 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 工件?特别是,如何处理上述情况?

@编辑

在我使用 Maven 3.0.4 的情况下,one-java-artifact-version-Y它总是被 遮蔽one-java-artifact-version-X,因此插件无法执行,因为它存在不受欢迎的依赖one-java-artifact-version-Xone-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>
4

1 回答 1

1

不确定,在这种情况下是否可能(即一个与插件版本冲突),但关于常规依赖管理(即在使用 2 个不同版本的 2 个依赖项之间),maven 文档说,

“最近的定义”意味着使用的版本将是依赖关系树中最接近您的项目的版本,例如。如果 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

于 2012-12-05T11:11:54.497 回答