maven-antrun-plugin

来源:互联网 发布:nginx rewrite 1 编辑:程序博客网 时间:2024/06/07 15:30
      ant是一个老牌的项目打包管理系统了,目前虽然已经慢慢被maven取代,但其功能的强大仍然是很多场合下的首选,尤其是众多的task可以基本满足任何需求。其实在maven中也有使用ant的需求,比如不同环境打包编译时使用不同的配置信息等,或者是说做一些文件删除、复制之类的事情,这有些是maven做不来的,而ant就可以了,况且maven中已经有了maven-antrun-plugin插件,专门为在maven中运行ant做好了准备。 

在项目的pom文件中定义如下插件片段:

<plugin>

<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<webXml>**/WEB-INF/web.xml</webXml>
<tasks>
<delete file="target/DMSSales/DMS-Sales.war" />
<delete file="target/DMSSF/DMS-sf.war" />
<delete file="target/DMS/WEB-INF/Remoting-Servlet.xml" />
<move file="target/DMS/WEB-INF/config/web.xml" tofile="target/DMS/WEB-INF/web.xml" />
<war destfile="target/DMSSales/DMS-Sales.war">
<fileset dir="target/DMS">

<exclude
name="**/WEB-INF/classes/com//dms/application/command/foundation/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/command/sf/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/service/distributor/**" />
<exclude
name="**/WEB-INF/classes/com//dms/interfaces/distributor/web/**" />
<exclude
name="**/WEB-INF/classes/com//dms/interfaces/salesforecast/**" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/cache/**" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcTradingDepartment**.class" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcDistributor**.class" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcSalesForecastQuery**.class" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcSalesGoalQuery**.class" />

<exclude name="**/WEB-INF/lib/*.jar" />
<exclude name="**/WEB-INF/config/**" />
<exclude name="**/WEB-INF/sf-config/**" />
</fileset>
</war>

<move file="target/DMS/WEB-INF/sf-config/web.xml"
tofile="target/DMS/WEB-INF/web.xml" />
<war destfile="target/DMSSF/DMS-sf.war">

<fileset dir="target/DMS">

<exclude
name="**/WEB-INF/classes/com//dms/application/command/foundation/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/command/sales/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/service/external/**" />
<exclude
name="**/WEB-INF/classes/com//dms/interfaces/distributor/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/service/distributor/**" />
<exclude
name="**/WEB-INF/classes/com//dms/application/service/order/**" />
<!-- <exclude name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/**" 
/> <exclude name="**/WEB-INF/classes/com//dms/domain/event/support/**" 
/> -->
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcDistributor**.class" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcTradingDepartment**.class" />
<exclude
name="**/WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcOrderQuery**.class" />
<exclude
name="WEB-INF/classes/com//dms/domain/query/support/jdbc/JdbcStockQuery**.class" />

<exclude
name="**/WEB-INF/classes/com//dms/interfaces/stock/**" />
<exclude
name="**/WEB-INF/classes/com//dms/interfaces/order/**" />
<exclude name="**/WEB-INF/lib/*.jar" />
<exclude name="**/WEB-INF/config/**" />
<exclude name="**/WEB-INF/sf-config/**" />

</fileset>
</war>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

这里,我们在maven的编译阶段执行一些文件的删除操作,比如将测试环境的配置文件删除,复制生产环境的配置文件等等,我们都可以使用ant的task来定义。通过ant的maven插件,可以将ant的强大功能也都引入到maven中来,实现二者的强强结合。 

参考文档: 
ant的task列表总览:http://ant.apache.org/manual/tasksoverview.html 
原创粉丝点击