"在 dependencyManagement 元素中是否有效?-6ren"> "在 dependencyManagement 元素中是否有效?-我对 optional dependencies 的机制有点困惑在 Maven 工作。似乎可选依赖项只有在直接指定时才有效,而不是通过依赖项管理。 我创建了三个测试项目 p1-p3,具有依赖关系: p-6ren">
gpt4 book ai didi

java - 标记 ""在 dependencyManagement 元素中是否有效?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:27 24 4
gpt4 key购买 nike

我对 optional dependencies 的机制有点困惑在 Maven 工作。似乎可选依赖项只有在直接指定时才有效,而不是通过依赖项管理。


我创建了三个测试项目 p1-p3,具有依赖关系:

  • p3 依赖于 p2
  • p2 依赖于 p1

如果我在 <dependencies> 中将依赖项声明为可选 元素,这按预期工作。 p2的POM:

<dependencies>
<dependency>
<groupId>testgroup</groupId>
<artifactId>p1</artifactId>
<version>1.0-SNAPSHOT</version>
<optional>true</optional>
</dependency>
</dependencies>

结果:p3 的构建引入了 p2,但没有 p1。

但是,如果我在 <dependencyManagement> 中将依赖项声明为可选 元素,它似乎被忽略了。 p2的POM:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>testgroup</groupId>
<artifactId>p1</artifactId>
<version>1.0-SNAPSHOT</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>testgroup</groupId>
<artifactId>p1</artifactId>
</dependency>
</dependencies>

结果:p3 的构建引入了 p2 p1。


这是预期的行为吗?我在任何地方都找不到这个记录。

注意事项:

  • 使用 Maven 3.0.3 和 3.2.1 进行了测试。
  • 为了查看 p3 的构建是否使用了 p1,我检查了 mvn dependency:tree 的输出,以及 mvn -X 列出的类路径(结果相同)。
  • 我也试过把 <dependencyManagement>元素到 p1 的 POM,而不是 p2。结果是一样的,即 <optional>没有效果。

最佳答案

这被报告为 MNG-1630 .虽然关闭为“固定”,a comment suggests :

Actually, this issue was never fixed. The changes that have been committed in r354544 are insufficient as they neither update the DefaultArtifactCollector nor the DefaultModelDefaultsInjector to propage the optional flag from a managed dependency/artifact to a project dependency.

您现在已打开此问题的副本 (MNG-5632) 请求行为或文档更改,这似乎是跟踪此问题的理想方式。

关于java - 标记 "<optional>"在 dependencyManagement 元素中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611254/

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