记录 maven 诡异的引入的依赖的依赖与实际版本不一致问题
-
本地 windows 开发环境使用 maven 3.8.1,Intellij IDEA 2022.1.2 (#IU-221.5787.30)
-
现象:
使用 hibernate-validator 引入依赖:
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>7.0.5.Final</version> </dependency>
在 maven 仓库官网,详情页 ,显示 Compile Dependencies,包含 jakarta.validation-api 依赖,版本是 3.0.0:
Group / Artifact Version jakarta.validation » jakarta.validation-api 3.0.0
而 IDEA 中 maven 依赖却显示版本是 2.0.2:
由于依赖 2.0.2 版本的 jakarta.validation-api jar无法使 7.0.X版本的 hibernate-validator 运行起来,需要 3.0.0及以上版本的 jakarta.validation-api 。
-
问题进一步深挖
选中 jakarta.validation-api.jar ,跳到源码片段:
<dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> </dependency>
按住 Ctrl 键,点击左键,进入依赖的 jakarta.validation-api pom,发现确实是 3.0.0 版本
<groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>3.0.0</version> <packaging>jar</packaging> <name>Jakarta Bean Validation API</name> <url>https://beanvalidation.org</url>
-
考虑可能是 maven 的问题,升级 maven 版本至 3.8.6,问题依旧存在
-
大无语事件,暂时没有发现原因,未能解决。临时替代方案是手动重新引入高版本的 jakarta.validation-api 依赖:
<dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>3.0.2</version> </dependency>