如何修复没有找到插件工件?



我得到这个错误:[错误]插件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添加到您的库列表中,如果它以某种方式丢失(默认情况下应该包含)。检查HTTPHTTPS,现在只支持安全。
  • 使用-X调试模式运行maven命令以进一步研究

另一种选择是将最新版本的surefire添加到您的项目中,该项目在您的插件存储库中可用,如果您不执行单元测试,可能会禁用它。

参见执行目标org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.