我在父 pom 的导入的 dependencyManagement 部分中指定了一个库版本。我确认我的有效 pom 只有一次出现这种依赖。它在依赖管理部分:
<dependencyManagement>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>[3.18.1-GA]</version>
</dependency>
</dependencyManagement>
这应该根据它覆盖传递依赖项的版本。安装(并重新安装依赖项以匹配版本边界)后,org.apache.maven.plugins:maven-dependency-plugin:2.8:tree 打印:
org.javassist:javassist:jar:3.18.1-GA:compile (version selected from constraint [3.18.1-GA,3.18.1-GA])
但是(最初,没有重新安装依赖项)enforcer 抱怨错误的版本:
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability the error(s) are [
Dependency convergence error for org.javassist:javassist:3.18.2-GA paths to dependency are:
...
并表明第一个传递依赖使用
org.javassist:javassist:3.18.2-GA
这来自依赖,而依赖又依赖于:
<dependencies>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
</dependencies>
和其他用途
org.javassist:javassist:3.18.1-GA
为什么执行器与依赖树不一致?有什么问题?如果我使用版本限制,它们是否会受到尊重,我可以跳过为此目的使用强制执行器吗?
此外,向相关项目模块添加依赖项不会改变任何内容。