Hace tres años recomendé usar la Versión 99 No existe, pero ahora he descubierto una mejor manera, especialmente desde que la Versión 99 está fuera de línea:
En el POM principal de su proyecto, use maven-enforcer-plugin para fallar la compilación si la dependencia no deseada se arrastra a la compilación. Esto se puede hacer usando la regla de dependencias prohibidas del complemento :
<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>
Luego, cuando eso le avise sobre una dependencia no deseada, excluya en la <dependencyManagement>
sección del POM principal :
<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>
De esta manera, la dependencia no deseada no aparecerá accidentalmente (a diferencia de una <exclusion>
que es fácil de olvidar), no estará disponible incluso durante el tiempo de compilación (a diferencia del provided
alcance), no hay dependencias falsas (a diferencia de la Versión 99) y ' funcionará sin un repositorio personalizado (a diferencia de la Versión 99). Este enfoque incluso funcionará según la versión del artefacto, los clasificadores, el alcance o un ID de grupo completo; consulte la documentación para obtener más detalles.