您的位置:首页 > 其它

简明Ant学习笔记

2008-07-22 11:15 337 查看
1. Ant 没有定义它自己的自定义语法;相反,它的生成文件是用 XML 编写的。

2. Ant文件的基本元素
    1) project:一个文件包含唯一一个project元素。

    2) target:project元素中又包含若干个target元素。一个target是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。这些操作本身是由其他专用任务标签执行的。
       target元素的depends属性用来定义依赖关系,即定义了执行的顺序,每个目标的定义依据的是在它在能够执行之前必须完成的其他所有目标。
       例:
       <target name="init"/>
       <target name="preprocess" depends="init"/>
       <target name="compile" depends="init,preprocess"/>
       <target name="package" depends="compile"/>
 这种方法允许您执行项目任何阶段的生成过程;Ant 会首先执行已定义的先决阶段。在上面的例子中,如果让 Ant 完成 compile 步骤,它将判断出需要首先执行 init 和preprocess 这两个目标。init 目标不依赖其他任何目标,因此它将首先被执行。然后 Ant 检查reprocesstarget,发现它依赖 init 目标;由于已经执行了后者,Ant不会再次执行它,因而开始执行 preprocess 目标。最后可以执行 compile 任务本身。注意目标出现在生成文件中的顺序并不重要:执行顺序是由depends 属性唯一确定       的。
   
    3) property:Ant 中的property类似编程语言中的变量,它们都具有名称和值。然而与通常的变量不同,一经设置,Ant 中的属性就不可更改。如果尝试给某个现有属性赋予一个新的值,这不会被看作是一个错误,但是该属性仍然会保留其现有值。
       例:<property name="abc" value="aabbcc"/>
               调用时用 ${abc} 即可

3. project 元素需要包含一个default 属性,如果在Ant 被调用时没有指定目标,这个属性将指定要执行的目标。然后需要使用 target 元素来定义该目标本身。

    下面是一个Ant版的Hello World,呵呵

    <?xml version="1.0"?>

 



4. 在cmd中运行Ant,到build.xml文件夹下,直接出入ant就可以运行了。

5. 编译Java源代码
   <javac srcdir="src"/>
   这个标签找寻src目录中以.java为扩展名的文件,并对其调用javac编译器。类文件生成于同  
   一个文   件夹内;加上destdir属性后可以使类文件生成于目标文件夹。
   属性classpath:等价于javac的-classpath选项。
   属性debug="true":指示编译器应该带调试信息编译源文件。
   javac的一个重要特点:对于从上次编译完后没有任何变化的源文件将不会被重新编译。为
   了确保所有文件都编译了,可以编写一个target,在重新编译前,从目标目录中移除已生成
   的任何类文件。
  

另一个例子:


 在这个例子中标签path将文件和路径包含其中;destdir代表编译后的class的目标文件夹;source是指jdk的版本;encoding是编译时使用的字符集;debug指示是否开启debug功能;标签src是源码的所在位置;标签classpath列出了编译时需要用到的jar包。

6. 打jar包
   <jar destfile="package.jar" basedir="classes"/>

7. 生成时间戳</tstamp>
   属性    说明 例子
   DSTAMP  设置为当前日期,默认格式为      yyyymmdd     20031217
   TSTAMP  设置为当前时间,默认格式为      hhmm             1603
   TODAY   设置为当前日期,带完整的月份   2003 年 12 月 17 日
  
8. 创建和删除目录
   <mkdir dir="archive/metals/zinc"/>
   <delete dir="archive/metals/zinc"/>

9.文件处理
  1)拷贝单个文件 
    <copy file="src/Test.java" tofile="src/TestCopy.java"/>
  2)拷贝文件夹及其内从
    <copy todir="${WEB-INF}">
          <fileset dir="WebContent/WEB-INF"/>
    </copy>

10.调用外部程序。
   <target name="startTomcat" depends="copyFiles">
           <exec dir="${TOMCAT}/bin" executable="cmd.exe">
                   <arg value="/c startup.bat"/>
           </exec>
   </target>
注:executable="cmd",可能无法正常运行,最好加上.exe。

11.加入流程控制能力

下载开源包ant-contrib,下载解压后将其中的ant-contrib.jar包放入ant的lib下,在build.xml中加入

<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>

即可使ant获得编写if, for等流程控制功能的能力。

12.如果想指运行某一个target,可以使用ant target_name的方法。例如:ant compile

13.waitfor task

阻塞执行直到某些特定条件为真。
上例阻塞执行直到制定的地址无效,最长15秒。属性maxwait代表最长等待时间;maxwaitunit代表maxwait数值的单位。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息