Три года назад Я рекомендовал использовать версию 99, которой не существует, но теперь я нашел лучший способ, тем более, что версия 99 находится в автономном режиме:
В родительском POM вашего проекта используйте maven-forcecer-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>
Затем, когда это предупредит вас о нежелательной зависимости, исключите ее в разделе <dependencyManagement>
родительского POM:
<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
scope), фальшивых нет зависимости (в отличие от версии 99), и он будет работать без собственного хранилища (в отличие от версии 99). Этот подход будет работать даже на основе версии артефакта, классификаторов, области действия или целого идентификатора группы - подробности см. В документации .