Maven Surefire Plugin指定版本不生效、找不到版本问题咨询
问题1:配置的3.0.0-M5版本未生效,实际使用2.12.4版本的原因
2.12.4是Maven 3.x早期版本默认绑定的maven-surefire-plugin版本,配置未生效有以下几种常见可能:
- 插件配置写在了未激活的Profile中:如果
节点放在 下的某个profile内部,运行 mvn test时没有指定激活对应profile,配置不会生效,会直接使用Maven默认绑定的版本。 - 多模块项目配置位置错误:你把surefire的配置写在了子模块的pom中,但执行
mvn test时是在父工程根目录执行,父工程没有配置对应插件版本,就会使用默认版本。 - 同名属性被覆盖:你用
${maven.surefire.version}指定版本,如果父pom、settings.xml中存在同名的属性配置,优先级更高的配置会覆盖你当前pom里的属性值,导致实际引入的版本和预期不符。 - 插件配置未放在正确节点下:如果你误把插件配置写到了
、 等非 节点下,配置不会生效。
你可以执行mvn help:effective-pom命令查看最终生效的pom配置,搜索surefire就能看到实际生效的版本来源。
问题2:找不到2.22.2版本的原因
该版本在Maven中央库确实存在,提示找不到通常是本地环境问题:
- 本地仓库构件损坏:之前下载该版本时网络中断,导致本地仓库对应路径下存在
.lastUpdated标识文件,Maven会默认跳过重新下载,直接提示找不到。你可以删除本地仓库org/apache/maven/plugins/maven-surefire-plugin/2.22.2目录,重新执行构建触发下载即可。 - 镜像源同步问题:你的settings.xml中配置了私有镜像或者第三方镜像源,该镜像源没有同步2.22.2版本的构件,导致无法拉取。你可以执行
mvn -X test查看构建时实际请求的仓库地址确认。
内容的提问来源于stack exchange,提问作者Brazen
相关产品推荐
相关产品推荐

