读书人

Ant之build.xml 简略例子 讲解

发布时间: 2012-09-02 21:00:34 作者: rapoo

Ant之build.xml 简单例子 讲解
转JUnit Gossip: 建案http://caterpillar.onlyfun.net/Gossip/JUnit/BuildFile.html
参考Api Ant之build.xml详解http://blog.sina.com.cn/s/blog_4ea1df280100e8gi.html

<project name="example" default="run">                       <!--startUp step is default=run-->        <property name="src.dir" value="src"/>     <property name="bin.dir" value="bin"/>     <property name="bak.dir" value="bak"/>    <!--step1-->    <target name="prepare">         <mkdir dir="${bin.dir}"/>         <mkdir dir="${bak.dir}"/>         <copy todir="${bak.dir}">             <fileset dir="${bin.dir}"/>         </copy>     </target> <!--step21:<javac标签>        该标签用于编译一个或一组java文件,其属性如下。(1).srcdir表示源程序的目录。(2).destdir表示class文件的输出目录。-->    <target name="compile" depends="prepare">         <javac srcdir="${src.dir}" destdir="${bin.dir}"/>     </target>        <!--step3     1:classpath表示所使用的类路径。     2:<java>标签       该标签用来执行编译生成的.class文件,其属性如下。       (1).classname 表示将执行的类名。       (3).classpath所表示用到的类路径。     -->    <target name="run" depends="compile">        <java classname="cc.openhome.HelloAnt">            <classpath path="${bin.dir}"/>        </java>    </target>    </project>
<!--总体功能概述 最终目的 执行 程序 HelloAnt.class ***java HelloAnt***打算 行的工作是:(id=compile):src/cc/openhome中的HelloAnt.java,其成果存至bin目中,如果 bin目不存在就建立它,(id=prepare):每一次bin中前一次的成果至bak目,如果bak目不存在就建立它,(id=run):最後行程式。--><!--建程中<target>所共享的性,可以使用<property>定,每一性的值有名,以例子而言,您定了程式源位置、果目目份目。--><!--<project>中包括<target>,每一<target>有一名,<project>的任行入是名"run"的 <target>,每<target>可以使用depends性指定依其它的<target>,也就是所依的<target>必先行完成,才行自己的目。在上例中,"run"的完成依於"compile"的完成,"compile"的完成又依於"prepare"的完成,所以在建始,step_1:先行"prepare",step_2:完成後再行"compile",step_3:最後行"run"。--><!--在上例中,build.xml是以<project>根。一build.xml中可以定多任, 些任可能是建立目、原始、搬移案、生doc文件、行、生告等,些任通常一目 (target)。--><!--HelloAnt.java只是的程式: package cc.openhome;public class HelloAnt {     public static void main(String[] args) {         System.out.println("Hello! Ant!!");     } }--><!--就例子而言,使用Ant是有小大作了,不我可以焦集中在Ant本身的定行。好build.xml之後,在文字模式下於build.xml所在的目中,直接下ant指令即可始建案,ant取同一目下的build.xml,第一次行ant出以下的文字提示建程:picture:ant_001.png


**********************屏幕显示内容start*******************************************************************>antBuildfile: C:\workspace\example\build.xmlprepare:    [mkdir] Created dir: C:\workspace\example\bin    [mkdir] Created dir: C:\workspace\example\bakcompile:    [javac] C:\workspace\example\build.xml:14: warning: 'includeantruntime' was notset, defaulting to build.sysclasspath=last; set to false for repeatable builds    [javac] Compiling 1 source file to C:\workspace\example\binrun:     [java] Hello! Ant!!BUILD SUCCESSFULTotal time: 1 second**********************屏幕显示内容end*******************************************************************可以看到ant已完成了所指定的工作,在假修改了HelloAnt.java存,接下再次下ant指令,次出以下的文字提示建程:


**********************屏幕显示内容start*******************************************************************>antBuildfile: C:\workspace\example\build.xmlprepare:     [copy] Copying 1 file to C:\workspace\example\bakcompile:    [javac] C:\workspace\example\build.xml:14: warning: 'includeantruntime' wasnot set, defaulting to build.sysclasspath=last; set to false for repeatable buildsrun:     [java] Hello! Ant!!BUILD SUCCESSFULTotal time: 0 seconds **********************屏幕显示内容end*********************************************************************次由於binbak目已存在,就不用再行新建目的工作,ant查bin中有之前建的案,於是它至bak目中。--><!--在建程式,有些目所定的任可能是可的,可以藉由在定<target>定if件,在建指定件true或 false,以定目是否要行,例如可以定:<target name="some" if="conditional">     some task..... </target> 使用if定件目,表示只有在conditional被置才被行,在行ant指令,您就可以如下定some是否要行:********************************************ant -buildfile build.xml -Dconditional=true ********************************************您也可以使用unless定件目:<target name="some" unless="conditional">     some task..... </target>由於您使用了unless定件目,所以只有在conditional有被定,目才被行。由於ant可以在一建案中用另一建案,在用的候,建案之可能有一些重的性定,如果您想要避免某性被重定了,可以撰:<target name="setProperties" unless="setProperties">     <property name="someProperty" value="someValue"/>     ... </target>   你在ant指令,也可以指定目,例如:ant prepare可以使用<ant>,在一建案中用另一建案,一的例子如下:<project name="someProject" default="all">     ......     <target name="some" depends="other">         <ant antfile="./project2/build.xml">             <property name="condition_name" value="true">         </ant>     <target>     ...... </project>在<property>中定valuetrue,您在另一建中有目使用了件式(if或unless),可以予件一true的特性值。您也可以指定案的 目 用的build.xml,例如:<project name="someProject" default="all">     ....     <target name="some" depends="other">         <ant dir="./project2">             <property name="condition_name" value="true">         </ant>     <target>     .... </project>  您也可以用另一建案中的某目,例如:<ant antfile="./project2/build.xml" target="prepare"/>  --><!--show element**********************屏幕显示内容start******************************************************************* **********************屏幕显示内容end*********************************************************************--->

读书人网 >XML SOAP

热点推荐