【发布时间】:2022-06-15 22:12:18
【问题描述】:
我们可以使用maven-enforcer-plugin来防止不同版本的重复依赖。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>no-duplicate-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<banDuplicatePomDependencyVersions/>
</rules>
</configuration>
</execution>
</executions>
</plugin>
同一版本的重复依赖声明怎么办?
假设我们正在构建一个多模块项目。 假设我们从 Foo 项目开始。
Foo pom.xml
<dependencies>
<dependency>
<groupId>someGroup</groupId>
<artifactId>someArtifact</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
后面我们引入模块Bar,同样依赖同一个版本someArtifact。
酒吧 pom.xml:
<dependencies>
<dependency>
<groupId>someGroup</groupId>
<artifactId>someArtifact</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
而 Foo 依赖于 Bar,所以我们更新了 POM。
Foo pom.xml
<dependencies>
<dependency>
<groupId>myGroup</groupId>
<artifactId>bar</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>someGroup</groupId>
<artifactId>someArtifact</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
和上面的例子一样,随着我们项目的增长,我们可能会忘记同一个版本的依赖已经是传递依赖。
在我看来,为了组织起见,我觉得留下这些重复的声明很麻烦,比如someArtifact。
我可以写一个新的maven-enforcer-plugin 规则,但也许已经有了解决方案。
【问题讨论】:
-
这将在构建过程中产生警告...
-
@khmarbaise 是的,谢谢。我正在寻找会产生错误的解决方案。
标签: maven