gpt4 book ai didi

java - Maven 中重复的直接依赖项

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:24 25 4
gpt4 key购买 nike

我特意想看看 maven 是否允许重复的直接依赖项(即非传递依赖项),因为它使用依赖项中介来解决冲突的传递依赖项。

我在我的 pom.xml 中写了这个

  <dependencies>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>


</dependencies>

我很惊讶地发现,它选择的是 4.10 版本而不是 4.11。这可能是什么原因?

<小时/>

我将添加更多详细信息,表明它违反了 dependency mediation principle也。以下是仅独立 junit 4.10 版本与独立 junit 4.11 版本的 mvn dependency:tree 输出:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ PracticeMaven ---
[INFO] org.example:PracticeMaven:jar:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:4.10:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.1:test

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ PracticeMaven ---
[INFO] org.example:PracticeMaven:jar:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:4.11:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test

当我们在 pom.xml 中提到这两个 junit 时,如果您发现与 org.hamcrest:hamcrest-core 存在冲突。它应该选择 org.hamcrest:hamcrest-core:jar:1.3 ,因为首先提到了 4.11。但事实并非如此。它选择了 junit 4.10org.hamcrest:hamcrest-core:jar:1.1

我正在使用最新的 Apache Maven 3.6.3。

最佳答案

为什么你看到这个感到惊讶?

它可能总是取最后一个。如果可能的话,请避免这种情况(我能看到的唯一用例是更改父 POM 中定义的依赖项)。

关于java - Maven 中重复的直接依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59249852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com