ant的build.xml标签简介
1.project标签
<project basedir=”.” name=”example” default=”main”>
….
<target name=”main”>
….
</target>
….
</project>
project 标记包含3个属性:
。basedir 指定项目所在的目录位置
。name 设定项目的名称
。default 设顶项目的build执行时预设的target
2.target标签
target标签在project标签之内,一个project可以包含多个target
….
<target name=”init”>
</target>
<target desponds=”init” description=”执行程序” name=”main”>
</target>
….
target 标签包含6个属性
。description 对于这个target的描述
。name target的名称
。depends 所依赖的其他target
example:
{
<target name=”x”/>
<target name=”y”/>
<target depends=”x,y” name=”z”/>
…..
执行顺序为xyz
}
。if 检查某个属性(x)设置了,只有这个属性(x)的时候target才执行
example
{
<property name=”someOne” value=”someValue”/>
<target name=”init”>
</target>
<target if=”someOne” deends=”init” description=”执行程序” name=”main”>
</target>
…..
只有someOne这个属性被设置了,init执行了,main才执行
}
。unless 检查某个属性(x)是否被设置了,和if相反,只有这个属性没有设置的时候才执行这个任务。
。id 标记这个target的id.
3.task标签
task 可以用来执行一个特定的工作,在Ant中已经做了许多工作,而且Ant的结构也支持所以用者自己开发task,只要在使用前申明这个task就可以了
example:
{
<target name=”xdoclet”>
<taskdef classpathref=”path” classname=”xdoclet.modules.ejb.A” name=”ejbdoclet”>
<taskdef classpathref=”path” className=”xdoclet.modules.B” name=”jbossnet”>
<ejbdoclet ejbspec=”2.0” destDir=”src”>
<fileset dir=”src” includes=”**/*.java” />
<deploymentdescriptior destDir=”src/META-INF” />
<homeinterface/>
<remoteinterface/>
<jboss version=”4.0” destDir=”src/META-INF” />
<jbossnet webDeploymentName=”hello” prefix=”hello” destDir=”build/hello/META-INF” targetNameSpace=”http://….” />
<packageSubstitution packages=”ejb” substituteWith=”interfaces”/>
</ejbdoclet>
</target>
}
4.基本的元素
⑴property用来标记project中一些公用的设定值,
example:
{
……
<property id=”ref” name=”source” value=”src”/>
<property name=”scr” refid=”ref” />
<property name=”jboss.test.jbossmx” location=”${build.lib}/jboss-jmx.jar”/>
……
也可以从其他文件取得属性
<property enviroment=”env” />
<property resource=”org/jboss/tools/task.properties”/>
<property file=”./task.properties”/>
}
⑵路径classpath可以在target中设置java的classpath
example:
{
<target name=”compile-classes”>
<mkdir dir=”${build.classes}”/>
<javac destdir=”${build.classes}” target=”${javac.target}”>
<classpath>
<pathelement Location=”{build.classes}”/>
<pathelement Location=”{bodule.source}/test”/>
<path refid=”javac.classpath”/>
</classpath>
</javac>
</target>
。。。。。。。
也可以通过path设定通用的路径,然后在其他的位置应用
<path id=”path”>
<fileset dir=”${lib}”>
<include name=”*.jar”/>
</fileset>
<pathelement location=”${build.classes}”/>
</path>
<target name=”compile-classes”>
<mkdir dir=”${build.classes}”/>
<javac destdir=”{build.classes}” target=”${javac.target}”>
<classpath refid=”path”/>
</javac>
</target>
…….
}
⑶文件相关的标签
fileset用来描述一些文件的集合:
。dir 设定fileset的根目录的位置
。exclude 设定fileset不包含的文件
。include 设定fileset包含的文件
example {
…..
<fileset dir=”${source.java}”>
<include name=”**/*.properties”/>
<exclude name=”**/javax.servlet.jar”/>
<exclude name=”**/xxx.jar”/>
</fileset>
…
}
。dirset用来描述目录的集合:
。dir 设定dirset的根目录位置
。exclude设定dirset不包含的文件
。include 设定dirset包含的文件
example {
…..
<dirset dir=”${build.dir }”>
<include name=”**/classes”/>
<exclude name=”**/*Test**”/>
</dirset>
…
}
。mkdir用来描述目录的集合:
。dir 设定要建立的目录
example
{
…
<mkdir dir=”${build}”/>
<mkdir dir=”${build}/classes”/>
<mkdir dir=”${doc}/>
…
}
。copy用来复制文件
。todir 用来设定复制文件的目的地
。fileset做为要复制的文件的集合,在copy下可以放置多个fileset和其他文件的标签
example
{
…
<copy todir=”${build}/war”>
<fileset dir=”${src}/classes”></fileset>
</copy>
…
}
。delete 用来删除文件
。fileset做要删除文件的集合,可以放多个标签和其他的文件的标签
example
{
…
<delete>
<fileset dir=”${build}” include=”**/*.java”/>
</delete>
…
}
5.结构标签
⑴ant用来呼叫其他的build文件, 让多个子文件可以一起工作
,antfile 指定的外部build文件
。target 指定的外部build文件中的一个target
…
<ant antfile=”anotherbuild.xml”/>
<ant antfile=”anotherbuild.xml” target=”compile”/>
….
⑵antcall 可以调用其他的target
。target 指定的target名称
。param 调用时传的参数
…
<target name=”init”>
</target>
<antcall target=”iniit”>
<param name=”parame1” value=”value1”/>
</anticall>
…
⑶sequential 在sequential中的任务将被依照顺序执行
…
<sequential>
<anticall target=”task1”></anticall>
<anticall target=”task2”></anticall>
<anticall target=”task3”></anticall>
</sequential>
…
⑷parallel 在parallel中的任务将会被并行执行
…
< parallel >
<anticall target=”task1”></anticall>
<anticall target=”task2”></anticall>
<anticall target=”task3”></anticall>
</ parallel >
…
<project basedir=”.” name=”example” default=”main”>
….
<target name=”main”>
….
</target>
….
</project>
project 标记包含3个属性:
。basedir 指定项目所在的目录位置
。name 设定项目的名称
。default 设顶项目的build执行时预设的target
2.target标签
target标签在project标签之内,一个project可以包含多个target
….
<target name=”init”>
</target>
<target desponds=”init” description=”执行程序” name=”main”>
</target>
….
target 标签包含6个属性
。description 对于这个target的描述
。name target的名称
。depends 所依赖的其他target
example:
{
<target name=”x”/>
<target name=”y”/>
<target depends=”x,y” name=”z”/>
…..
执行顺序为xyz
}
。if 检查某个属性(x)设置了,只有这个属性(x)的时候target才执行
example
{
<property name=”someOne” value=”someValue”/>
<target name=”init”>
</target>
<target if=”someOne” deends=”init” description=”执行程序” name=”main”>
</target>
…..
只有someOne这个属性被设置了,init执行了,main才执行
}
。unless 检查某个属性(x)是否被设置了,和if相反,只有这个属性没有设置的时候才执行这个任务。
。id 标记这个target的id.
3.task标签
task 可以用来执行一个特定的工作,在Ant中已经做了许多工作,而且Ant的结构也支持所以用者自己开发task,只要在使用前申明这个task就可以了
example:
{
<target name=”xdoclet”>
<taskdef classpathref=”path” classname=”xdoclet.modules.ejb.A” name=”ejbdoclet”>
<taskdef classpathref=”path” className=”xdoclet.modules.B” name=”jbossnet”>
<ejbdoclet ejbspec=”2.0” destDir=”src”>
<fileset dir=”src” includes=”**/*.java” />
<deploymentdescriptior destDir=”src/META-INF” />
<homeinterface/>
<remoteinterface/>
<jboss version=”4.0” destDir=”src/META-INF” />
<jbossnet webDeploymentName=”hello” prefix=”hello” destDir=”build/hello/META-INF” targetNameSpace=”http://….” />
<packageSubstitution packages=”ejb” substituteWith=”interfaces”/>
</ejbdoclet>
</target>
}
4.基本的元素
⑴property用来标记project中一些公用的设定值,
example:
{
……
<property id=”ref” name=”source” value=”src”/>
<property name=”scr” refid=”ref” />
<property name=”jboss.test.jbossmx” location=”${build.lib}/jboss-jmx.jar”/>
……
也可以从其他文件取得属性
<property enviroment=”env” />
<property resource=”org/jboss/tools/task.properties”/>
<property file=”./task.properties”/>
}
⑵路径classpath可以在target中设置java的classpath
example:
{
<target name=”compile-classes”>
<mkdir dir=”${build.classes}”/>
<javac destdir=”${build.classes}” target=”${javac.target}”>
<classpath>
<pathelement Location=”{build.classes}”/>
<pathelement Location=”{bodule.source}/test”/>
<path refid=”javac.classpath”/>
</classpath>
</javac>
</target>
。。。。。。。
也可以通过path设定通用的路径,然后在其他的位置应用
<path id=”path”>
<fileset dir=”${lib}”>
<include name=”*.jar”/>
</fileset>
<pathelement location=”${build.classes}”/>
</path>
<target name=”compile-classes”>
<mkdir dir=”${build.classes}”/>
<javac destdir=”{build.classes}” target=”${javac.target}”>
<classpath refid=”path”/>
</javac>
</target>
…….
}
⑶文件相关的标签
fileset用来描述一些文件的集合:
。dir 设定fileset的根目录的位置
。exclude 设定fileset不包含的文件
。include 设定fileset包含的文件
example {
…..
<fileset dir=”${source.java}”>
<include name=”**/*.properties”/>
<exclude name=”**/javax.servlet.jar”/>
<exclude name=”**/xxx.jar”/>
</fileset>
…
}
。dirset用来描述目录的集合:
。dir 设定dirset的根目录位置
。exclude设定dirset不包含的文件
。include 设定dirset包含的文件
example {
…..
<dirset dir=”${build.dir }”>
<include name=”**/classes”/>
<exclude name=”**/*Test**”/>
</dirset>
…
}
。mkdir用来描述目录的集合:
。dir 设定要建立的目录
example
{
…
<mkdir dir=”${build}”/>
<mkdir dir=”${build}/classes”/>
<mkdir dir=”${doc}/>
…
}
。copy用来复制文件
。todir 用来设定复制文件的目的地
。fileset做为要复制的文件的集合,在copy下可以放置多个fileset和其他文件的标签
example
{
…
<copy todir=”${build}/war”>
<fileset dir=”${src}/classes”></fileset>
</copy>
…
}
。delete 用来删除文件
。fileset做要删除文件的集合,可以放多个标签和其他的文件的标签
example
{
…
<delete>
<fileset dir=”${build}” include=”**/*.java”/>
</delete>
…
}
5.结构标签
⑴ant用来呼叫其他的build文件, 让多个子文件可以一起工作
,antfile 指定的外部build文件
。target 指定的外部build文件中的一个target
…
<ant antfile=”anotherbuild.xml”/>
<ant antfile=”anotherbuild.xml” target=”compile”/>
….
⑵antcall 可以调用其他的target
。target 指定的target名称
。param 调用时传的参数
…
<target name=”init”>
</target>
<antcall target=”iniit”>
<param name=”parame1” value=”value1”/>
</anticall>
…
⑶sequential 在sequential中的任务将被依照顺序执行
…
<sequential>
<anticall target=”task1”></anticall>
<anticall target=”task2”></anticall>
<anticall target=”task3”></anticall>
</sequential>
…
⑷parallel 在parallel中的任务将会被并行执行
…
< parallel >
<anticall target=”task1”></anticall>
<anticall target=”task2”></anticall>
<anticall target=”task3”></anticall>
</ parallel >
…
</script>