使用maven执行带有命名参数的shell脚本和ant脚本

时间:2014-04-01 10:05:02

标签: maven ant

我正在为ant构建实现maven包装器。用于构建项目的ant命令如下

ant -v -f build.xml -Darch=linux-java7 -Dconfig=/work/build.config -Doutput=/work/bldout/

现在我必须通过maven执行上面的命令。我尝试使用" I want to execute shell commands from maven's pom.xml"和" http://sanchitbahal.wordpress.com/2011/09/19/maven-exec-plugin-vs-maven-antrun-plugin-for-running-command-line-tool/"

我在pom.xml中尝试的示例代码如下:

<plugin>
      <artifactId>exec-maven-plugin</artifactId>
      <groupId>org.codehaus.mojo</groupId>
      <executions>
             <execution>
             <id>execute-shell</id>
              <phase>compile</phase>
              <goals>
                      <goal>exec</goal>
              </goals>
              <configuration>
                      <executable>test.sh</executable>
                      <arguments>
                            <argument>ARG1</argument>
                            <argument>ARG2</argument>
                      </arguments>
             </configuration>
             </execution>
     </executions>
</plugin>

但是我无法弄清楚如何传递命名参数,例如&#34; -Darch = linux-java7&#34;作为build.xml的争论

还使用maven-antrun插件调用build.xml,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>

     <executions>
       <execution>
          <id>run-target</id>
          <phase>install</phase>
              <configuration>
                 <target>
                    <ant antfile="build.xml" target="all" />
                 </target>
              </configuration>
          <goals>
             <goal>run</goal>
          </goals>
      </execution>

但是在这里我也无法弄清楚如何传递参数,如&#34; -Darch = linux-java7&#34;作为build.xml的争论

我所知道的是我可以将命令放在shell脚本(在.sh文件中)并使用maven-exec-plugin调用shell脚本,但是想知道是否可以不这样做。

1 个答案:

答案 0 :(得分:0)

使用antrun,它具有较少的外部依赖性(如路径上的ant可执行文件等)。

由antrun插件执行的Ant任务会继承在pom的properties部分内定义的所有属性。

所以你只需要包括:

<properties>
  <arch>linux-java7</arch>
  ...
</properties>
在你的pom里面让它工作。