4

如果我有两个在同一个pom中相同的依赖项,我想构建失败。目前我可以通过Maven Dependency Plugin的“分析重复”来检测它发生的情况。但是,没有其他选项可以像其他一些(另外,它在Info级别打印,而不是Warning)打印失败。有没有其他的方法来扩展它?我怎样才能得到一个maven构建失败的重复依赖关系?

回答

5

一般来说,当你想要构建因某种原因失败时,需要查看Maven Enforcer Plugin的好插件。这个插件可以用一组规则进行配置,这些规则在验证时会使构建失败。

在这种情况下,它需要一个检查重复依赖性的规则,并且有一个内置的规则:<banDuplicatePomDependencyVersions>。因此,你可以有

<plugin> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.4.1</version> 
    <executions> 
    <execution> 
     <id>enforce-no-duplicate-dependencies</id> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <banDuplicatePomDependencyVersions/> 
     </rules> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

这条规则是不幸的是没有记录的(然而,它会在下一版本中,看到MENFORCER-259),但由于该插件(MENFORCER-152)的1.3版本,它的存在。

该规则的作用是检查是否有两个重复的声明与'dependencies.dependency.(groupId:artifactId:type:classifier)'相同;也就是说在POM中声明的具有相同组ID和工件ID的两个声明依赖关系必须具有不同类型和/或分类器。