Há três anos, eu recomendei o uso da versão 99 não existe, mas agora descobri uma maneira melhor, principalmente porque a versão 99 está offline:
No POM pai do seu projeto, use o maven-enforcer-plugin para falhar na compilação se a dependência indesejada se infiltrar na compilação. Isso pode ser feito usando a regra de dependências banidas do plug-in :
<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>
Então, quando isso alertar sobre uma dependência indesejada, exclua-a na <dependencyManagement>
seção do POM pai :
<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>
Dessa forma, a dependência indesejada não será exibida acidentalmente (ao contrário de uma <exclusion>
que é fácil de esquecer), ela não estará disponível mesmo durante o tempo de compilação (ao contrário do provided
escopo), não haverá dependências falsas (ao contrário da versão 99) e será ' funcionará sem um repositório personalizado (diferente da versão 99). Essa abordagem funcionará mesmo com a versão do artefato, classificadores, escopo ou um groupId inteiro - consulte a documentação para obter detalhes.