【问题标题】:Maven: Running an arbitrary command build phaseMaven:运行任意命令构建阶段
【发布时间】:2014-04-18 10:36:21
【问题描述】:

如何在 maven 构建阶段运行一个简单的命令(或包含该命令的 shell 脚本)?

我的具体情况是我想在运行 java 编译器之前运行生成 java 类的协议缓冲区编译器 (protoc)。

我觉得它可能应该是构建目标的“进程资源”阶段的一部分(请参阅http://books.sonatype.com/mvnref-book/reference/lifecycle-sect-common-goals.html),但他们只讨论复制恰好是 shell 脚本的文件,而不是运行脚本。

【问题讨论】:

标签: maven code-generation protocol-buffers execution


【解决方案1】:

您的问题的一个解决方案是使用maven-antrun-plugin。这就是我用来在 Maven 构建中构建一些类似脚本的命令的方法:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <configuration>
                <tasks>
                    <echo message="basedir=${basedir}" />
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这样一个简单的echo 任务在构建阶段generate-sources 开始。因此,您可以将此解决方案扩展到您的需求。

我更喜欢这种蚂蚁方法,而不是例如。 exec-maven-plugin 因为它在某种程度上更独立于系统。但这是一个偏好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多