我得到这个错误:[错误]插件org.apache.maven.plugins:maven-surefire-plugin:2.12.4或它的一个依赖项无法解决:无法找到工件org.apache.maven.plugins:maven-surefire-plugin:jar:2.12.4在nexus-xyz-plugin
我试图运行maven与dependency:tree,但我不能看到肯定的,我不知道为什么它正在寻找这个特定的2.12.4版本,这是没有指定在我的pom!
即使是surefire插件也没有在我的pom中定义,但我有汇编插件不确定汇编是否依赖于surefire
注意,我只在运行mvn包时得到错误,但是当运行mvn编译时,构建成功
maven-surefire-plugin的2.12.4
版本总是由maven3.x
版本添加到pom中,除非您依赖于特定的其他版本。
Maven有一个所谓的super pom
,你可以免费获得,但它没有列出surefire: https://maven.apache.org/ref/3.8.5/maven-model-builder/super-pom.html
但是它被添加到pom中,我已经在maven 3.3.9中检查过了。您可以通过运行mvn help:effective-pom
来验证这一点。
参考相同的问题:没有确定的插件在我的pom -它如何显示确定的输出?
这些插件版本是生命周期执行的默认绑定的一部分,在本例中是test
阶段。因此,如果没有指定,这些插件总是包含的。
参考:
- https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
- https://maven.apache.org/ref/3.8.5/maven-core/default-bindings.html
- Maven默认生命周期和插件部分
通常这个插件应该在maven中心可用,检查你的(有效的)pom中是否有一个<pluginRepository>
引用了https://repo1.maven.org/maven2/
其他可以检查的内容:
- 打开文件
.m2repositoryorgapachemavenpluginsmaven-surefire-plugin2.12.4maven-surefire-plugin-2.12.4.jar.lastUpdated
并检查每个存储库的错误消息。检查为什么它不能到达maven中心;它是否从列表中丢失或给出错误?这可能是公司防火墙/政策的问题?或者它在HTTPS/TLS协议级别上给出错误? - 检查您是否可以将maven central添加到您的库列表中,如果它以某种方式丢失(默认情况下应该包含)。检查
HTTP
或HTTPS
,现在只支持安全。 - 使用
-X
调试模式运行maven命令以进一步研究
另一种选择是将最新版本的surefire添加到您的项目中,该项目在您的插件存储库中可用,如果您不执行单元测试,可能会禁用它。
参见执行目标org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.