使用 Maven Exec 插件的多个命令

Posted

技术标签:

【中文标题】使用 Maven Exec 插件的多个命令【英文标题】:Multiple commands with Maven Exec plugin 【发布时间】:2018-03-07 08:22:12 【问题描述】:

我在使用 Maven Exec 插件时有些吃力。我想使用插件执行两个单独的 mvn 命令,所以我只需要执行 mvn exec:exec 即可执行所有命令。

以下两个命令分别运行良好:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <configuration>
        <executable>mvn</executable>
        <arguments>
            <argument>clean</argument>
        </arguments>
    </configuration>
</plugin>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <configuration>
        <executable>mvn</executable>
        <arguments>
            <argument>package</argument>
        </arguments>
    </configuration>
</plugin>

这是我尝试将两者结合起来,以便用一个命令执行它们:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>

    <executions>
        <execution>
            <id>id1</id>
            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>mvn</executable>
                <arguments>
                    <argument>clean</argument>
                </arguments>
            </configuration>
        </execution>

        <execution>
            <id>id2</id>
            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>mvn</executable>
                <arguments>
                    <argument>package</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>

</plugin>

不幸的是,当我现在执行 mvn exec:exec 时,我收到以下错误消息:

[INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProjet 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- exec-maven-plugin:1.6.0:exec (default-cli) @ MyProject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.787 s
[INFO] Finished at: 2017-09-26T09:56:57+01:00
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:exec (default-cli) on project MyProject: The parameter 'executable' is missing or invalid -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[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

【问题讨论】:

when I now execute mvn exec:exec => 当您将 2 次执行绑定到该阶段时,您应该运行“package”。 【参考方案1】:

当您在命令行上运行 mvn exec:exec 时,它会运行 &lt;execution&gt;&lt;id&gt;default-cli。这解释了错误消息,因为在您的 POM 中配置了 &lt;executable&gt;&lt;id&gt;default-cli&lt;/id&gt; 没有执行。

要解决您的问题,请查看Guide to Configuring Plug-ins。它解释了如何使用&lt;id&gt; 而非default-cli 从命令行执行目标:

mvn exec:exec@id1 exec:exec@id2

【讨论】:

以上是关于使用 Maven Exec 插件的多个命令的主要内容,如果未能解决你的问题,请参考以下文章

使用 Exec Maven 插件分叉 Java,而不使用 `exec` 目标

Maven:如何防止 exec 插件显示其堆栈跟踪?

使用 exec 插件从 Maven 3 执行脚本 - 被阻止

Maven exec 插件 - 执行 python 脚本

如何在 Maven 2 exec 插件的参数中使用空格

Maven exec-maven-plugin和maven-resources-plugin没有运行,不知道为什么。