当我运行“mvn clean install”时出现这些错误,解决这个问题的正确方法是什么?我试图将 junit-jupiter 的版本更改为 5.7.0 但它导致更多错误,有人可以帮我吗?
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:
Failed while enforcing RequireUpperBoundDeps. The error(s) are [
Require upper bound dependencies error for org.junit.jupiter:junit-jupiter-api:5.5.2 paths to dependency are:
+-my-service:1.0.0-SNAPSHOT
+-org.junit.jupiter:junit-jupiter-api:5.5.2
and
+-my-service:1.0.0-SNAPSHOT
+-org.junit.jupiter:junit-jupiter-engine:5.5.2
+-org.junit.jupiter:junit-jupiter-api:5.5.2
and
+-my-service:1.0.0-SNAPSHOT
+-org.springframework.boot:spring-boot-starter-test:2.4.1
+-org.junit.jupiter:junit-jupiter:5.7.0
+-org.junit.jupiter:junit-jupiter-api:5.5.2 (managed) <-- org.junit.jupiter:junit-jupiter-api:5.7.0
and
+-my-service:1.0.0-SNAPSHOT
+-org.springframework.boot:spring-boot-starter-test:2.4.1
+-org.mockito:mockito-junit-jupiter:3.6.28
+-org.junit.jupiter:junit-jupiter-api:5.5.2 (managed) <-- org.junit.jupiter:junit-jupiter-api:5.4.2
and
+-my-service:1.0.0-SNAPSHOT
+-org.springframework.boot:spring-boot-starter-test:2.4.1
+-org.junit.jupiter:junit-jupiter:5.7.0
+-org.junit.jupiter:junit-jupiter-params:5.7.0
+-org.junit.jupiter:junit-jupiter-api:5.5.2 (managed) <-- org.junit.jupiter:junit-jupiter-api:5.7.0
,
答案 0 :(得分:1)
Maven 使用最近定义规则确定工件版本。也就是说,它使用依赖项树中与您的项目最接近的依赖项版本。您始终可以通过在项目的 POM 中明确声明来保证版本。请注意,如果两个依赖版本在依赖树中的深度相同,则第一个声明获胜。
示例:最浅的一个获胜。
Your project dependencies
+-A
+-B
+-C
+-D-2.0
+-E
+-D-1.0 <- This version is used for artifact D as this is "nearest".
解决方案:将 pom.xml 中的版本更新为输出中列出的最新版本,即在您的情况下为 5.7.0。
您可以打印依赖关系树 mvn dependency:tree
并查看实际发生冲突的位置。
答案 1 :(得分:0)
该规则似乎强制执行 common upper bounds for a set of dependencies:这可用于实现二进制兼容性(例如:确保您不使用与您使用的传递依赖项不兼容的较低版本,因为它的版本会更大)。
[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:
Failed while enforcing RequireUpperBoundDeps. The error(s) are [
Require upper bound dependencies error for org.junit.jupiter:junit-jupiter-api:5.5.2 paths to dependency are:
+-my-service:1.0.0-SNAPSHOT
+-org.junit.jupiter:junit-jupiter-api:5.5.2
and
+-my-service:1.0.0-SNAPSHOT
+-org.junit.jupiter:junit-jupiter-engine:5.5.2
+-org.junit.jupiter:junit-jupiter-api:5.5.2
and
+-my-service:1.0.0-SNAPSHOT
+-org.springframework.boot:spring-boot-starter-test:2.4.1
+-org.junit.jupiter:junit-jupiter:5.7.0
+-org.junit.jupiter:junit-jupiter-api:5.5.2 (managed) <-- org.junit.jupiter:junit-jupiter-api:5.7.0
spring boot 正在导入 5.7.0 版本的 junit,但您已指定 junit 5.5.2。
尽量使用最高版本(例如:5.7.0)。