如果需要在一个构件文件中通过Ant命令去执行另一个Ant项目,或者说要执行本项目的子项目的构件文件。这时Ant这个核心任务就派上用场了。简单地说Ant任务的作用就相当于在命令行通过Ant命令执行构件文件。值得注意的是Ant任务依赖于target元素,需要在某个target元素中使用,不能在target元素外独立使用。
Ant任务还可以实现类似Java程序间的继承关系,不过对于这个核心任务来说只继承property元素和reference属性。举个例子说,项目A中包含通过Ant任务去执行的项目B,而项目B中需要用到项目A中的属性C,那么可以通过设置的Ant任务中的inheritAll属性,使得在B项目中可以使用项目A中的属性C。从另一方面看,这也符合XP(极限)编程中的细分功能的思想,可以把大的项目切分为几分小项目,然后通过Ant工具进行整合。
项目结构:
project
-build.xml
-build1.xml
-build2.xml
-build3.xml
-file.properties
build.xml:
- <?xmlversion="1.0"?>
- <projectdefault="run"basedir="."name="MyProject">
- <propertyfile="user.properties"/>
- <targetname="run">
- <antantfile="${file1}"dir="."output="file1.log"target="call"/>
- <antantfile="${file2}"dir="."/>
- <antantfile="${file3}"dir="."/>
- </target>
- </project>
build1.xml
- <?xmlversion="1.0"?>
- <projectdefault="init"basedir="."name="MyProject1">
- <targetname="init">
- <echomessage="ThisisinProject1'sinittarget."/>
- </target>
- <targetname="call">
- <echomessage="ThecallinProject1"/>
- </target>
- </project>
build2.xml
- <?xmlversion="1.0"?>
- <projectdefault="call"basedir="."name="MyProject2">
- <targetname="init">
- <echomessage="ThisisinProject2'sinittarget."/>
- </target>
- <targetname="call"depends="init">
- <echomessage="ThecallinProject2"/>
- </target>
- </project>
build3.xml
- <?xmlversion="1.0"?>
- <projectdefault="call"basedir="."name="MyProject3">
- <targetname="init">
- <echomessage="ThisisinProject3'sinittarget."/>
- </target>
- <targetname="call">
- <echomessage="ThecallinProject3"/>
- </target>
- </project>
file.properties
- file1=build1.xml
- file2=build2.xml
- file3=build3.xml
运行结果:
- Buildfile:C:\hxw\workspace\hibernate\build.xml
- run:
- call:
- [echo]ThecallinProject1
- init:
- [echo]ThisisinProject2'sinittarget.
- call:
- [echo]ThecallinProject2
- call:
- [echo]ThecallinProject3
- BUILDSUCCESSFUL
- Totaltime:78milliseconds
本文出自 “坠落凡间的天使” 博客,请务必保留此出处http://hongxuwei.blog.51cto.com/2928285/649384