在构建期间使用Maven插入自定义构建代码/调用java程序

时间:2013-07-13 11:44:45

标签: java maven

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

有没有办法使用众多maven插件之一执行任意Java程序?我会把它插在POM中?

2 个答案:

答案 0 :(得分:3)

您想使用exec目标,{J}允许您执行外部应用程序。

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

  1. 验证
  2. 编译
  3. 测试
  4. 集成测试
  5. 验证
  6. 安装
  7. 部署
  8. 您可以通过在 Exec Maven插件 phase元素中配置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 -->
    

答案 1 :(得分:2)

使用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文件的“构建”部分中指定