大龙的博客

常用链接

统计

最新评论

Maven实战之antrun插件 --- 使用多个execution

在Maven实际使用过程中,有时候在对一些旧有的项目的做从Makefile和ant到Maven迁移时需要对一些步骤做特殊处理,比如说编译 JNI代码,虽然Maven有个native插件可以用,但需要将原有项目JNI的编译步骤重写,这在有些时候显然不太适合,比如时间压力比较大的情况 下。其实这种情况可以使用Maven的antrun插件来做,这样做的好处就是可以重用原来写好的Makefile,相对来说还是比较简单也是最快的。具 体信息可以参考http://maven.apache.org/plugins/maven-antrun-plugin/。

Maven的antrun用起来也是非常简单的,就是在代码里嵌入类似以下代码片段:

  1. ...  
  2. <build>  
  3.     <plugins>  
  4.         <plugin>  
  5.             <artifactId>maven-antrun-plugin</artifactId>  
  6.             <executions>  
  7.                 <execution>  
  8.                     <id>package</id>  
  9.                     <phase>package</phase>  
  10.                     <goals>  
  11.                         <goal>run</goal>  
  12.                     </goals>  
  13.                     <configuration>  
  14.                         <tasks>  
  15.                             <echo message="make ..."/>  
  16.                             <exec dir="src/main/c" executable="make" failonerror="true" />  
  17.                         </tasks>  
  18.                     </configuration>  
  19.                 </execution>  
  20.                 <execution>  
  21.                     <id>clean</id>  
  22.                     <phase>clean</phase>  
  23.                     <goals>  
  24.                         <goal>run</goal>  
  25.                     </goals>  
  26.                     <configuration>  
  27.                         <tasks>  
  28.                             <echo message="make clean ..."/>  
  29.                             <exec dir="src/main/c" executable="make" failonerror="true">  
  30.                                 <arg line="clean"/>  
  31.                             </exec>  
  32.                         </tasks>  
  33.                     </configuration>  
  34.                 </execution>  
  35.             </executions>  
  36.         </plugin>  
  37.     </plugins>  
  38. </build>  
  39. ...  

* 代码中定义了两个execution节点,分别执行原来Makefile中定义的make和make clean。这里可以将tasks节点定义成任意自己想要运行的ant任务;

* 在第一个execution节点下,把phase定义成package,goal定义成run,是为了使在运行"mvn package"的时候自动执行第一个execution节点下的ant任务;

* 在第二个execution节点下,把phase定义成clean,goal定义成run,是为了使在运行"mvn clean"的时候自动执行第二个execution节点下的ant任务;

posted on 2012-12-12 10:36 大龙 阅读(9655) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理