Maven exec插件未运行

Posted

技术标签:

【中文标题】Maven exec插件未运行【英文标题】:Maven exec plugin not running 【发布时间】:2018-04-12 23:49:21 【问题描述】:

我正在尝试执行一个在 maven 构建期间写入文件的 powershell 脚本。

我正在通过 Eclipse IDE 使用 mvn clean install 调用构建。

这是我的 pom.xml 中的插件:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>$project.basedir/.my-file.ps1</executable>
            </configuration>
        </plugin>
    </plugins>

powershell 脚本是一个隐藏文件,所以我在文件名前面有一个.

但是,插件没有执行,我按照官方documentation中的说明进行操作。

【问题讨论】:

也许可执行文件实际上是powershell.exe,而脚本是一个参数。 @brendan62269 插件本身甚至没有运行;插件没有启动。如果它确实启动并尝试运行,我会得到某种输出,说明是否执行了 powershell 脚本。但是插件本身没有执行。 【参考方案1】:

您正在运行mvn clean install,它将经历各种构建阶段,但您的 exec 插件执行未附加到任何阶段。您必须:

通过将&lt;phase&gt; 元素添加到您的执行,将您的执行附加到一个阶段,例如将其附加到pre-integration-test 阶段:

   <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
            <execution>
                <id>my-exec</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <executable>$project.basedir/.my-file.ps1</executable>
        </configuration>
    </plugin>

或者使用mvn exec:exec 命令专门调用exec 目标。

如果您不熟悉 Maven 生命周期和构建的各个阶段,请阅读 Introduction to the Build Lifecycle 指南,或者特别是 Plugins 部分,以了解有关插件执行和阶段附件的更多信息。

【讨论】:

谢谢,这行得通。但是这里的插件文档mojohaus.org/exec-maven-plugin/usage.html 甚至没有提到 元素的使用?有些插件的目标默认绑定到某个阶段,并且不需要阶段元素,所以我认为这适用于这个插件,但猜测不是。即使这在文档中也没有说明。 不客气 :) 通常插件文档会提到它是否具有默认阶段绑定(例如 Surefire 插件)。如果没有,假设它默认不绑定到任何阶段。插件配置是构建生命周期的主要概念之一。虽然没有很好地为 Maven 初学者提供证据,但可以在入门后立即找到文档:maven.apache.org/pom.html#Plugins,并且默认插件绑定有点隐藏:maven.apache.org/ref/3.2.2/maven-core/default-bindings.html。我同意在文档的前面介绍这些概念可能是个好主意。

以上是关于Maven exec插件未运行的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven Exec 插件的多个命令

Maven exec 插件 - 执行 python 脚本

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

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

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

Exec Maven插件