三年前,我建议使用“不存在版本99”,但现在我想出了一种更好的方法,尤其是因为版本99处于脱机状态:
在项目的父POM中,如果不需要的依赖性蔓延到构建中,请使用maven-enforcer-plugin使构建失败。可以使用插件的禁止依赖关系规则来完成此操作:
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>only-junit-dep-is-used</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
然后,当该消息提醒您有关有害依赖项时,请将其排除在父POM的<dependencyManagement>
部分中:
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<version>2.1.8.RELEASE</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
这样,不需要的依赖项就不会意外出现(不同于只是一个<exclusion>
容易忘记的provided
依赖项),即使在编译期间它也不可用(与作用域不同),没有伪造的依赖项(与99版不同),并且它无需自定义存储库即可工作(与99版不同)。该方法甚至可以根据工件的版本,分类器,范围或整个groupId起作用- 有关详细信息,请参见文档。