Ant的安装与使用

下载与安装

  • 在ant.apache.org可以找到下载的界面,根据推荐下载1.10.1的版本。
  • 解压到安装目录,解压后的目录有manual文件夹,包含Ant工具相关文档。
  • ant的运行需要JAVA_HOME环境变量指向jdk,以及ANT_HOME的环境变量指向Ant的安装路径。需要识别ant.bat命令,还需要吧%ANT_HOME%\bin 加到Path环境变量中。
  • 使用ant工具只要输入ant或者ant.bat,Ant会在目录下搜索build.xml文件,作为生成文件执行默认的target。
  • 使用-s 或者-find ,Ant会在上级目录中搜索生成文件,直到到达文件系统根目录。
  • ant也可以使用-buildfile使用其他文件作为生成文件,这里的-buildfile也可以使用-file或者-f代替。如下:
ant -f a.xml
ant -file b.xml
  • ant运行只提示少量信息:-quite或者-q
  • ant运行提示更多信息:-verbose或者-v
  • ant运行将提示信息输出到指定文件,而不是直接输出到控制台,-logfile 或者-l,例如:
ant -verbose -l a.log  //运行ant时生成更多提示信息,并将信息输出到a.log中
  • 使用类似-D=可以将指定value来覆盖property的属性值。
ant -Dbook=Spring4 //覆盖生成文件中的book属性
ant -Denvl=%ANT_HOME%   //这样可以使用Windows的环境变量,在生成文件中,可以使用$envl来访问该环境变量的值
  • ant -help获取帮助文档

  • 典型的项目层次结构:

<priject>
    -src:源文件、配置文件
    -classes:编译后的class文件
    -lib:第三方jar包
    -dist:存放项目打包、项目发布文件的文件夹
    build.xml:Ant生成文件
  • Ant生成文件的根元素是project,每个项目下可以定义多个生成目标,每个目标使用target元素来定义。project元素的属性包括:
属性 含义
default 默认target
basedir 指定项目的基准路径
name 项目名
description 项目描述信息



  • target元素的属性
属性 含义
name target名称
depends 指定一个或多个target,表示运行该target之前需要运行的target
if 指定一个属性名,表示仅当设置了该属性才执行该target
unless 设置一个属性名,表示仅当没有设置该属性才执行该target
description 描述信息


  • 每个生成目标(target)可以对应一个或多个任务序列,如:<name attribute1="value1" attribuute2="value2">name为任务的名称,attribute和value为执行该任务需要的属性名与属性值。

以下是一份《轻量级JAVAEE 企业应用实战的》的生成文件:

<?xml version="1.0" encoding="GBK"?>
<!-- 定义生成文件的project根元素,默认的target为空 -->
<project name="antQs" basedir="." default="">
    <!-- 定义三个简单属性 -->
    <property name="src" value="src"/>
    <property name="classes" value="classes"/>
    <property name="dest" value="dest"/>
    <!-- 定义一组文件和目录集 -->
    <path id="classpath">
        <pathelement path="${classes}"/>
    </path>
    <!-- 定义help target,用于输出该生成文件的帮助信息 -->
    <target name="help" description="打印帮助信息">
        <echo>help - 打印帮助信息</echo>
        <echo>compile - 编译Java源文件</echo>
        <echo>run - 运行程序</echo>
        <echo>build - 打包JAR包</echo>
        <echo>clean - 清除所有编译生成的文件</echo>
    </target>
    <!-- 定义compile target,用于编译Java源文件 -->
    <target name="compile" description="编译Java源文件">
        <!-- 先删除classes属性所代表的文件夹 -->
        <delete dir="${classes}"/>
        <!-- 创建classes属性所代表的文件夹 -->
        <mkdir dir="${classes}"/>
        <!-- 编译Java文件,编译后的class文件放到classes属性所代表的文件夹内 -->
        <javac destdir="${classes}" debug="true" includeantruntime="yes"
            deprecation="false" optimize="false" failonerror="true">
            <!-- 指定需要编译的Java文件所在的位置 -->
            <src path="${src}"/>
            <!-- 指定编译Java文件所需要第三方类库所在的位置 -->
            <classpath refid="classpath"/>
        </javac>
    </target>
    <!-- 定义run target,用于运行Java源文件,
        运行该target之前会先运行compile target -->
    <target name="run" description="运行程序" depends="compile">
        <!-- 运行lee.HelloTest类,其中fork指定启动另一个JVM来执行java命令 -->
        <java classname="lee.HelloTest" fork="yes" failonerror="true">
            <classpath refid="classpath"/>
            <!-- 运行Java程序时传入2个参数 -->
            <arg line="测试参数1 测试参数2"/>
        </java>
    </target>
    <!-- 定义build target,用于打包JAR文件,
        运行该target之前会先运行compile target -->
    <target name="build" description="打包JAR文件" depends="compile">
        <!-- 先删除dest属性所代表的文件夹 -->
        <delete dir="${dest}"/>
        <!-- 创建dest属性所代表的文件夹 -->
        <mkdir dir="${dest}"/>
        <!-- 指定将classes属性所代表的文件夹下的所有
            *.classes文件都打包到app.jar文件中 -->
        <jar destfile="${dest}/app.jar" basedir="${classes}"
            includes="**/*.class">
            <!-- 为JAR包的清单文件添加属性 -->
            <manifest>
                <attribute name="Main-Class" value="lee.HelloTest"/>
            </manifest>
        </jar>
    </target>
    <!-- 定义clean target,用于删除所有编译生成的文件 -->
    <target name="clean" description="清除所有编译生成的文件">
        <!-- 删除两个目录,目录下的文件也一并删除 -->
        <delete dir="${classes}"/>
        <delete dir="${dest}"/>
    </target>
</project>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章