在 Maven實際使用過程中,有時候在對一些舊有的項目的做從Makefile和ant到Maven遷移時需要對一些步驟做特殊處理,比如說編譯JNI代 碼,雖然Maven有個native插件可以用,但需要將原有項目JNI的編譯步驟重寫,這在有些時候顯然不太適合,比如時間壓力比較大的情況下。其實這 種情況可以使用Maven的antrun插件來做,這樣做的好處就是可以重用原來寫好的Makefile,相對來說還是比較簡單也是最快的。具體信息可以 參考http://maven.apache.org/plugins/maven-antrun-plugin/。
Maven的antrun用起來也是非常簡單的,就是在代碼里嵌入類似以下代碼片段:
... <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>package</id> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo message="make ..."/> <exec dir="src/main/c" executable="make" failonerror="true" /> </tasks> </configuration> </execution> <execution> <id>clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo message="make clean ..."/> <exec dir="src/main/c" executable="make" failonerror="true"> <arg line="clean"/> </exec> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> ...
* 代碼中定義了兩個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任務;
轉自:http://blog.csdn.net/kongxx/article/details/6998965