我正在为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脚本,但是想知道是否可以不这样做。
答案 0 :(得分:0)
使用antrun,它具有较少的外部依赖性(如路径上的ant可执行文件等)。
由antrun插件执行的Ant任务会继承在pom的properties
部分内定义的所有属性。
所以你只需要包括:
<properties>
<arch>linux-java7</arch>
...
</properties>
在你的pom里面让它工作。