如何修复找不到插件工件?

How to fix not finding a plugin artifact?

我收到此错误:[ERROR] 插件 org.apache.maven.plugins:maven-surefire-plugin:2.12.4 或其依赖项之一无法解析:找不到工件 org.apache.maven.plugins: maven-surefire-plugin:jar:2.12.4 in nexus-xyz-plugin

我尝试 运行 使用 dependecy:tree maven,但我看不到万无一失,我不知道为什么它正在寻找我的中未指定的特定版本 2.12.4 pom!

我的 pom 中甚至没有定义 surefire 插件,但我有 assembly 插件,不确定 assemblely 是否依赖于 surefire

请注意,我只在 运行ning mvn package 时出现错误,但是当 运行ning mvn compile 构建成功时

maven-surefire-plugin 的 2.12.4 版本总是由 maven 版本 3.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.

来验证这一点

同样问题的引用:No surefire plugin in my pom - How does it show surefire output?

这些插件版本是生命周期执行的默认绑定的一部分,在本例中为 test 阶段。因此,如果未指定,这些插件将始终包含在内。

参考:

通常此插件应该在 maven central 中可用,请检查您的(有效)pom 中是否有 <pluginRepository> 引用 https://repo1.maven.org/maven2/

您可以检查的其他一些内容:

  • 打开文件 .m2\repository\org\apache\maven\plugins\maven-surefire-plugin.12.4\maven-surefire-plugin-2.12.4.jar.lastUpdated 并检查每个存储库的错误消息。查看为什么不能到达maven central;它是否从列表中丢失或出现错误?这可能是公司 firewall/policy 的问题?或者它是否在 HTTPS/TLS 协议级别上给出错误?
  • 检查是否可以将 maven central 添加到您的存储库列表中,如果它以某种方式丢失(默认情况下应该包含在内)。检查它是 HTTP 还是 HTTPS,现在只支持安全。
  • 运行 你的 maven 命令 -X 用于调试模式以进一步调查

另一种方法是将 latest version of surefire 添加到您的 plugin-repository 中可用的项目中,如果您不执行单元测试,则可能禁用它。

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.