Maven如何配置强制禁止同版本重复依赖声明
我们可以使用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。
Bar的pom.xml配置如下:
<dependencies> <dependency> <groupId>someGroup</groupId> <artifactId>someArtifact</artifactId> <version>1.0.0</version> </dependency> </dependencies>
由于Foo依赖Bar,因此需要更新Foo的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规则实现该校验能力,但想了解是否已有现成的解决方案。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

