【问题标题】:Specify dependency version for Maven Archetype plugin指定 Maven Archetype 插件的依赖版本
【发布时间】:2016-02-08 13:54:15
【问题描述】:

我目前正在使用 Maven 3.3.3,其中 mvn.bat 文件已被删除。现在推荐的也是唯一的运行 Maven 的方法是通过 mvn.cmd 文件。

我正在使用调用 maven-invoker 插件进行某些操作的自定义原型。 Note that the invoker plugin is a dependency of the Maven archetype plugin

archetype:generate,调用者被调用并抛出错误:

Error configuring command-line. Reason: Maven executable not found at: <MAVEN_PATH>\bin\mvn.bat

这个问题似乎已经在 2.2 版本的调用程序中得到修复,但最后一个版本的 maven-archetype-plugin 仍然使用它的旧版本。

如何在我的原型的 POM 中指定要使用的调用程序插件的版本?

目前,我尝试通过将此代码添加到原型的 POM 文件中来配置插件,但没有效果,也没有修复错误。

<plugin>
    <groupId>org.apache.maven.archetype</groupId>
    <artifactId>maven-archetype</artifactId>
    <version>2.4</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-invoker</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
</plugin>

编辑 1: 这是过滤后的堆栈跟踪。

[INFO] Invoking post-archetype-generation goals: com.company.my-custom-maven-plugin:uuid-generator
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.777 s
[INFO] Finished at: 2016-02-08T15:09:19+01:00
[INFO] Final Memory: 18M/210M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:generate (default-cli) on project standalone-pom: Cannot run additions goals. Error configuring command-line. Reason: Maven executable not found at: <MAVEN_PATH>\bin\mvn.bat -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:generate (default-cli) on project standalone-pom: Cannot run additions goals.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    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:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot run additions goals.
    at org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.invokePostArchetypeGenerationGoals(CreateProjectFromArchetypeMojo.java:241)
    at org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:219)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: org.apache.maven.shared.invoker.MavenInvocationException: Error configuring command-line. Reason: Maven executable not found at: <MAVEN_PATH>\bin\mvn.bat
    at org.apache.maven.shared.invoker.DefaultInvoker.execute(DefaultInvoker.java:105)
    at org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.invokePostArchetypeGenerationGoals(CreateProjectFromArchetypeMojo.java:237)
    ... 23 more
Caused by: org.apache.maven.shared.invoker.CommandLineConfigurationException: Maven executable not found at: <MAVEN_PATH>\bin\mvn.bat
    at org.apache.maven.shared.invoker.MavenCommandLineBuilder.findMavenExecutable(MavenCommandLineBuilder.java:597)
    at org.apache.maven.shared.invoker.MavenCommandLineBuilder.build(MavenCommandLineBuilder.java:68)
    at org.apache.maven.shared.invoker.DefaultInvoker.execute(DefaultInvoker.java:101)
    ... 24 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

【问题讨论】:

    标签: maven maven-archetype


    【解决方案1】:

    这是 Maven Archetype 插件的一个错误:JIRA 问题是ARCHETYPE-488。它影响插件的所有版本≤ 2.4,并在版本 3.0.0 中得到解决。

    在链接问题中引用Jörg Hohwiller(日期为 2016 年 1 月 8 日 13:47):

    有解决办法吗?

    是的。只需在 MAVEN_HOME/bin 中创建一个名为“mvn.bat”的“mvn.cmd”副本。

    因此,对于 2.4 或更早版本,一个可能的解决方法是使用另一个名称复制 mvn 可执行文件。

    【讨论】:

    • 谢谢!我们实际上已经尝试过了,它确实有效。但是我们需要分发这个原型,我们不能在客户端的计算机上操作这样的改变。还会有别的吗?
    • @Rems 恐怕问题出在客户端本身。因此,我们要么需要等待该错误的解决,要么修改客户的计算机。 (请注意,在链接的问题中,有人也尝试了您的方法,但由于同样的错误而失败)
    • Sad :( Sooo,我想我在原型的 POM 中添加的 &lt;plugin&gt; 部分从未使用过,因为在执行 archetype:generate 时,我实际上并没有在 POM 本身上运行 Maven,所以这些设置没有在运行的生命周期中使用?
    • PS: (Merci de la part d'un collègue Sopra Steria Toulousain ;) )
    【解决方案2】:

    @Tunaki 引用的错误已修复(发布以供参考),pom.xml 需要:

    <plugin>
        <artifactId>maven-archetype-plugin</artifactId>
         <version>2.4</version>
         <dependencies>
         <dependency>
              <groupId>org.apache.maven.shared</groupId>
              <artifactId>maven-invoker</artifactId>
              <version>2.2</version>
         </dependency>
         </dependencies>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 2016-04-17
      • 2015-10-13
      • 1970-01-01
      • 2016-09-18
      • 2011-08-27
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多