无法加载 mojo 'test' - org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test

Posted

技术标签:

【中文标题】无法加载 mojo \'test\' - org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test【英文标题】:Unable to load the mojo 'test' - org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test无法加载 mojo 'test' - org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test 【发布时间】:2019-04-12 05:01:47 【问题描述】:

我正在使用 Maven-3 构建我的应用程序,我想在将 maven-surefire-plugin 自动刷新到 3.0.0-M1 后,我无法进行构建并出现以下错误。

作为第一步,我已经清除了我的存储库中的目录 /org/apache/maven 但是我仍然面临这个问题。任何人都可以建议。注意 - 如果我将 surefire 插件降级到 2.x,那么我可以构建它。

错误日志

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.444s
[INFO] Finished at: Thu Nov 08 16:04:53 GMT 2018
[INFO] Final Memory: 60M/704M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test (default-test) on project TEST_PROJECT: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test failed: Unable to load the mojo 'test' (or one of its required components) from the plugin 'org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1': com.google.inject.ProvisionException: Guice provision errors:
[ERROR] 
[ERROR] 1) No implementation for org.codehaus.plexus.languages.java.jpms.LocationManager was bound.
[ERROR] while locating org.apache.maven.plugin.surefire.SurefirePlugin
[ERROR] at ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
[ERROR] while locating org.apache.maven.plugin.Mojo annotated with @com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test)
[ERROR] 
[ERROR] 1 error
[ERROR] role: org.apache.maven.plugin.Mojo
[ERROR] roleHint: org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test (default-test) on project TEST_PROJECT: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test failed: Unable to load the mojo 'test' (or one of its required components) from the plugin 'org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1'
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test failed: Unable to load the mojo 'test' (or one of its required components) from the plugin 'org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1'
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.apache.maven.plugin.PluginContainerException: Unable to load the mojo 'test' (or one of its required components) from the plugin 'org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1'
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:488)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:92)
    ... 20 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Guice provision errors:

1) No implementation for org.codehaus.plexus.languages.java.jpms.LocationManager was bound.
  while locating org.apache.maven.plugin.surefire.SurefirePlugin
  at ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
  while locating org.apache.maven.plugin.Mojo annotated with @com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test)

1 error
      role: org.apache.maven.plugin.Mojo
  roleHint: org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:257)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:245)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:455)
    ... 21 more
Caused by: com.google.inject.ProvisionException: Guice provision errors:

1) No implementation for org.codehaus.plexus.languages.java.jpms.LocationManager was bound.
  while locating org.apache.maven.plugin.surefire.SurefirePlugin
  at ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
  while locating org.apache.maven.plugin.Mojo annotated with @com.google.inject.name.Named(value=org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test)

1 error
    at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:974)
    at com.google.inject.Scopes$1$1.get(Scopes.java:59)
    at org.sonatype.guice.bean.locators.LazyBeanEntry.getValue(LazyBeanEntry.java:83)
    at org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:49)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253)
    ... 23 more 

【问题讨论】:

没有自动刷新,这意味着您的构建没有正确配置,这意味着它们没有定义所有插件版本.... 我们从 2018 年 11 月 7 日开始注意到这一点。我发现他们刚刚在 11 月 6 日发布了一个新的 maven 二进制文件 (3.6.0)。我下载了最新版本,最新版本在 Linux 上运行良好,但在 Windows 上出现其他一些与路径相关的错误(FileNotFoundException)。可以试试最新的吗? @wildnux 什么样的 FileNotFoundExceptions?请报告问题issues.apache.org/jira/browse/MNG @khmarbaise 这就是-U 所做的。除非你已经在几个星球上追过那只兔子,否则很难知道什么会吸引什么。 尝试使用 3.6.0 Maven,仍然出现问题 [错误] 无法执行目标 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test (default- test) 项目 TEST-PROJECT:执行目标 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test 的默认测试失败:无法加载 mojo 'test'(或其之一所需组件)来自插件“org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1”:com.google.inject.ProvisionException:Guice 提供错误:[ERROR] [ERROR] 1)没有实现对于 org.codehaus.plexus.languages.java.jpms.LocationManager 已绑定 【参考方案1】:

您可以将您的 maven 版本升级到最新的 3.6.0 以解决此问题。这可以从 3.3.9 maven 版本兼容。

【讨论】:

【参考方案2】:

查看有关升级 maven 版本的 cmets,我们更新了我们的 maven 版本,并能够使用 maven 3.3.9 克服surefire 插件问题。没有遇到任何问题。

【讨论】:

尝试使用 3.6.0 Maven,仍然出现问题 [错误] 无法执行目标 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test (default- test) 项目 TEST-PROJECT:执行目标 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test 的默认测试失败:无法加载 mojo 'test'(或其之一所需组件)来自插件“org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1”:com.google.inject.ProvisionException:Guice 提供错误:[ERROR] [ERROR] 1)没有实现对于 org.codehaus.plexus.languages.java.jpms.LocationManager 已绑定 尝试配置错误。更新到 3.3.9/3.6.0 后,此问题得到解决。【参考方案3】:

我发现我的 NetBeans 使用的是一个非常旧的 maven (3.0.5),即使我安装了一个全新的 maven。

在我的 Mac 上,我必须转到菜单“Netbeans/Preferences”,选择“Maven”选项卡,然后从“Bundled”更改,浏览到最新,这为我消除了上面的错误。

【讨论】:

【参考方案4】:

我遇到了这个问题,直到我发现我们没有明确指定 surefire 插件的版本。一旦我更改了我们的 pom.xml 文件以设置版本,它就起作用了。

【讨论】:

你能告诉我你的maven和surefire插件版本吗?我猜 surefire-3.0.0-M1 只能支持 maven-3.3.9。 mvn 3.0.3 - surefire 2.19.1(是的,它很旧。) 我使用的是旧的 maven 版本,3.0.5。我将surefilere插件版本设置为2.17。我发现 2.21 也有效【参考方案5】:

您可以使用 pluginManagement 标签将 maven-surefire-plugin 的版本降级到 2.12.4。它对我有用。

【讨论】:

【参考方案6】:

我同意 SomMS 的回答

但作为一个仅供参考,我发现了这个线程,立即驳回了 maven 版本可能是问题,因为我刚刚(上周)构建了这个 RHEL VM,它是新的和闪亮的 ... 15 分钟后,我决定检查 maven 版本,发现它是 v3.0.5! 希望下一个人不要犯同样的错误

如果您想知道如何获取已安装内容的版本,请尝试

mvn --version

【讨论】:

【参考方案7】:

我使用了@SomMS 的建议并升级了 Maven 来解决这个问题。它奏效了。

问题在于,在撰写本文时,CentOS 7 上可用的 Maven 最新版本是 3.0.5(默认存储库),它确实很旧(2013 年 2 月)。大多数其他发行版都可以使用更新的 Maven 版本。

我唯一的解决方案是手动下载并在PATHenv-variable 中添加其二进制文件的路径。这里的缺点是现在 rpm/yum 不知道它的存在。

【讨论】:

【参考方案8】:

如果您在 netbeans IDE 中遇到问题,您需要更改默认 mavenhome 版本。按照以下步骤操作 在菜单栏工具->选项->单击java选项卡-->类别下-->执行--> Maven主页下拉选择手动安装的maven位置

【讨论】:

以上是关于无法加载 mojo 'test' - org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test的主要内容,如果未能解决你的问题,请参考以下文章

maven codehaus.mojo 无法解决

无法销毁线程组 org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=SitemapCheck.SitemapAction,maxp

Maven 不会运行我的项目:无法执行目标 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

无法在项目 mavenproject2 上执行目标 org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (默认):

Maven错误:无法执行目标org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

基本 maven 插件项目不工作,Mojo 插件描述符不生成