3

我有一个项目,其中有第三方工具生成的代码(通常从命令行调用)。我想将此工具与我们的 maven 构建设置对齐,即我想调用它,例如在maven compile.

有没有办法使用众多 Maven 插件中的一个来执行任意 Java 程序?我会将它插入到 POM 的什么位置?

4

2 回答 2

5

您想使用Exec Maven 插件,使用它的exec目标,它允许您执行外部应用程序。

关于何时执行外部应用程序,您必须考虑默认的 Maven Build Lifecycle。当您启动该build进程时,Maven 会执行以下(严格排序的)阶段:

  1. 证实
  2. 编译
  3. 测试
  4. 包裹
  5. 集成测试
  6. 核实
  7. 安装
  8. 部署

您可以通过配置Exec Maven Pluginphase元素中的元素来决定在上述哪个步骤运行外部应用程序: executions

<!-- Begin of POM -->
<project>
    ...
    <build>
        <plugins>
            <!-- Begin of Exec Maven Plugin -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase> <!-- Here, for example, validate -->
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>...</configuration>
            </plugin>
            <!-- Begin of Exec Maven Plugin -->
        </plugins>
    </build>
    ...
</project>
<!-- End of POM -->
于 2013-07-13T11:49:25.997 回答
3

使用 maven-exec-plugin:

<build>
  <plugins>
      <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>exec-maven-plugin</artifactId>
             <executions>
                 <execution>
                     <id>exec-one</id>
                     <phase>verify</phase>
                     <configuration>
                         <executable>echo</executable>
                         <arguments>
                             <argument>exec one</argument>
                         </arguments>
                     </configuration>
                     <goals>
                         <goal>exec</goal>
                     </goals>
                 </execution>                     
            </executions>
        </plugin>
  </plugins>

就像任何其他插件一样,它应该在 POM 文件的“构建”部分中指定

于 2013-07-13T11:49:01.510 回答