maven enforcer是否忽略DependencyManager部分?
我在父pom的imported dependencyManagement部分中指定了库的版本。我确认我的有效pom只有一次出现这种依赖性。它位于dependencyManagement部分:maven enforcer是否忽略DependencyManager部分?,maven,maven-enforcer-plugin,Maven,Maven Enforcer Plugin,我在父pom的imported dependencyManagement部分中指定了库的版本。我确认我的有效pom只有一次出现这种依赖性。它位于dependencyManagement部分: <dependencyManagement> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactI
<dependencyManagement>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>[3.18.1-GA]</version>
</dependency>
</dependencyManagement>
但是(最初,没有重新安装依赖项)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>
为什么enforcer与依赖关系树不一致?有什么不对劲吗?如果我使用版本边界,它们会得到尊重吗?我可以跳过为此目的使用enforcer吗
此外,向相关的项目模块添加依赖项不会改变任何事情。Tl;dr:
依赖项管理
覆盖可传递依赖项的版本
这个答案的全部功劳归于安迪·丹尼,我偶然发现了他的博客帖子:dependencyManagement
做两件事——一件众所周知,另一件很少被提及
依赖项管理
。但无法识别差异,因为可传递依赖项的版本在开始工作之前已被更改。安迪·丹尼(Andy Denny)在他的博客上就如何继续提出了一个很好的建议:
<dependencies>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
</dependencies>
org.javassist:javassist:3.18.1-GA