为什么即使在排除时 Maven 也不会排除测试依赖?
Why won't Maven exclude test dependency even when in exclusion?
我有以下...
<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?
“修复”依赖收敛错误的真正方法是使用<dependencyManagement>
。
放条目
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
进入 POM。这将为所有传递依赖项设置版本。不再需要排除项。
我有以下...
<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?
“修复”依赖收敛错误的真正方法是使用<dependencyManagement>
。
放条目
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
进入 POM。这将为所有传递依赖项设置版本。不再需要排除项。