在 Maven 中覆盖传递依赖项的版本
Override version of transitive dependencies in Maven
我的 pom 中有以下内容
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>org.codehaus.groovy</artifactId>
<groupId>groovy-all</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-spring</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>org.codehaus.groovy</artifactId>
<groupId>groovy-all</groupId>
</exclusion>
</exclusions>
</dependency>
基本上,我想强制我的第二个和第三个依赖项使用 groovy 的版本——我在第一个依赖项中设置的所有内容。有没有比对它们中的每一个都设置排除更好的方法来做到这一点?
由于作为第一个依赖项,您明确定义了 groovy-all
依赖项的版本,这将覆盖需要此确切依赖项的所有传递依赖项的此依赖项的版本。因此,您不必定义明确的排除项。
要验证这一点,您可以 运行 更改前后的以下内容:
mvn dependency:tree -Dverbose
并比较输出。
修复是通过直接依赖或依赖管理部分来锁定版本。
我的 pom 中有以下内容
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>org.codehaus.groovy</artifactId>
<groupId>groovy-all</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-spring</artifactId>
<version>1.0-groovy-2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>org.codehaus.groovy</artifactId>
<groupId>groovy-all</groupId>
</exclusion>
</exclusions>
</dependency>
基本上,我想强制我的第二个和第三个依赖项使用 groovy 的版本——我在第一个依赖项中设置的所有内容。有没有比对它们中的每一个都设置排除更好的方法来做到这一点?
由于作为第一个依赖项,您明确定义了 groovy-all
依赖项的版本,这将覆盖需要此确切依赖项的所有传递依赖项的此依赖项的版本。因此,您不必定义明确的排除项。
要验证这一点,您可以 运行 更改前后的以下内容:
mvn dependency:tree -Dverbose
并比较输出。
修复是通过直接依赖或依赖管理部分来锁定版本。