#maven #junit #maven-enforcer-plugin
Вопрос:
У меня есть следующее…
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>[1.19.0,)</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
Но когда я бегу mvn clean package
, я получаю…
Dependency convergence error for junit:junit:4.11 paths to dependency are:
-my.pkg:project:0.0.3-SNAPSHOT
-com.github.stefanbirkner:system-rules:1.19.0
-junit:junit:4.11
and
-my.pkg:project:0.0.3-SNAPSHOT
-junit:junit:4.13.2
Почему он не игнорирует dep?
Комментарии:
1. Я согласен с ответом «использовать управление зависимостями». Что касается того, почему вышеперечисленное не сработало, вы побежали
mvn dependency:tree
изучать переходные зависимости? Возможно, вам также нужно исключить junit-dep.2. @Barchetta Уже сделал это, плагин enforcer конкретно указывает, откуда он берется. У других переходных зависимостей не было такой же проблемы.
Ответ №1:
Реальный способ «исправить» ошибку сходимости зависимостей-использовать <dependencyManagement>
.
Поместите запись
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
в ПОМ. Это установит версию для всех переходных зависимостей. Больше не нужны исключения.
Комментарии:
1. Спасибо, я попробую сделать это таким образом