下载ant包,解压版,解压到某目录后配置环境变量即可,这里不在赘述。配置成功cmd ant-version,显示ant版本即OK。

    
     ant是Apache的跨平台的构建工具,他可以实现项目的自动构建和部署等功能。
 
    ant最主要就是build.xml文件,这个文件一般放到项目的根目录中,和src同级,当然可以取其他名字,默认为build.xml。
    cmd到项目目录下,执行命令ant即可。如果为hello.xml,执行ant -f hello.xml 或ant -file hello.xml或ant -buildfile hello.xml
 
    build.xml中的配置
 
    根元素为<project>元素,name属性指定project的名称,default属性指定默认执行target的名称,basedir属性用于指定基路径的位置,该属性没有指定时,使用ant的构建文件的附属目录作为基准目录。若想得到所有target的名称,可以加上参数-projecthelp。
  1. <?xml version="1.0"?>
  2. <projectname="projectStudy"default="sayBaseDir"basedir="E:"apache-ant-1.7.0">
  3. <targetname="sayBaseDir">
  4. <echomessage="The base dir is: ${basedir}"/>
  5. </target>
  6. </project>
    target元素是ant的基本执行单元,它可以包含一个或多个任务。多个target相互依存,用depends属性控制。
        name属性:target元素的名称,在project中唯一。
        depends属性:用于描述target之间的依赖关系,若多个target共存用逗号隔开。ant会按照depends中出现的顺序来执行。
        if属性:验证target中某个属性是否存在,不存在就不执行。
        unless属性:与if属性相反,用于验证指定的属性是否存在,若不存在target将执行。
        description属性:target属性的简短描述和说明。
  1. <?xml version="1.0"?>
  2. <projectname="targetStudy">
  3. <targetname="targetA"if="ant.java.version">
  4. <echomessage="Java Version: ${ant.java.version}"/>
  5. </target>
  6. <targetname="targetB"depends="targetA"unless="amigo">
  7. <description>
  8. a depend example!
  9. </description>
  10. <echomessage="The base dir is: ${basedir}"/>
  11. </target>
  12. </project>
        property元素,该元素为参数的参量或者参数的定义,project的属性可以通过property元素来设定,也可以在ant之外设定,一般都在ant之外使用properties元素设定,然后用ant引入文件。<property file="build.properties"/>。property元素可以用作task的属性值,存在${}里,并放到task的位置来实现。ant提供一些内置属性,和System.getprerties()方法得到的参数相同,这些属性可以参照sun网站的说明。
            basedir:project基项目的绝对路径。
            ant.file:buildpath的绝对路径。
            ant.version:ant的版本。
            ant.project.name:当前指定的project的名字,即project的name。
            ant.java.version:ANT检测到的jdk的版本。
        
    ant的常用任务:
        copy任务:文件和目录的复制。
        delete任务:文件或目录的删除。
        mkdir任务:创建目录。
        move任务:移动文件或目录。
        echo任务:根据日志或者监控级别输出信息。
        编译、运行、生成jar文件、生成war文件。
 
        copy任务:
            copy单个文件:<copy file="file.txt" tofile="copy.txt"/>
            复制文件目录:
                <copy todir="../newdir/dest_dir">
                    <fileset dir="src_dir"/>
                </copy>
            将文件复制到另外的目录:
                <copy file="a.txt" todir="../newdir/dest_dir"/>
        delete任务:
            删除单个文件:<delete file="photo/addd.jpg"/>
            删除某个目录:<delete dir="photo"/>
            删除所有备份目录和空目录:
                <delete includeEmptyDirs="true">
                        <fileset dir="." includes="**/*.bak"/>
                </delete>
        mkdir任务:
            创建文件夹:<mkdir dir="build"/>
        move任务:
            移动单个文件:<move file="fromfile" tofile="tofile"/>
            移动单个文件到另一目录:<move file="fromfile" todir="movedir"/>
            移动某个目录到另一目录:
                <move todir="movedir">
                        <fileset dir="olddir"/>
                </move>
        echo任务:
            根据日志或监控器的级别输出信息。包含message、file、append和level四个属性,举例如下:
            <echo message="Hello,Amigo" file="logs/system.log' append="true" />     
        javac编译文件:
            <javac srcdir="src" destdir="build/classes"/>
  1. <?xml version="1.0"?>
  2. <projectname="javacTest"default="compile"basedir=".">
  3. <targetname="clean">
  4. <deletedir="build"/>
  5. </target>
  6. <targetname="compile"depends="clean">
  7. <mkdirdir="build/classes"/>
  8. <javacsrcdir="src"destdir="build/classes"/>
  9. </target>
  10. </project>
        java运行文件:
            <java classname="HelloWorld">
                <classpath>
                        <pathelement path="build/classes"/>
                </classpath>
            </java>
  1. <?xml version="1.0"?>
  2. <projectname="javaTest"default="jar"basedir=".">
  3. <targetname="clean">
  4. <deletedir="build"/>
  5. </target>
  6. <targetname="compile"depends="clean">
  7. <mkdirdir="build/classes"/>
  8. <javacsrcdir="src"destdir="build/classes"/>
  9. </target>
  10. <targetname="run"depends="compile">
  11. <javaclassname="HelloWorld">
  12. <classpath>
  13. <pathelementpath="build/classes"/>
  14. </classpath>
  15. </java>
  16. </target>
  17. </project>
        打jar包:
  1. <targetname="jar"depends="run">
  2.     <jardestfile="helloworld.jar"basedir="build/classes">
<manifest>
<attributename="Main-class"value="HelloWorld"/>
</manifest>
</jar>
  1. </target>
        打war包:
  1. <!-- 打war包-->
  2. <targetname="war"depends="compile">
  3. <wardestfile="${build}/antwebproject.war"webxml="WebRoot/WEB-INF/web.xml">
  4. <!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
  5. <filesetdir="WebRoot"includes="**/*.jsp"/>
  6.                    <!-- 拷贝lib目录下的jar包-->
                    <lib dir="${lib}"/>
                     <!-- 拷贝build/classes下的class文件-->
                     <classesdir="${classes}"/>
  7.            </war>
  8. </target>
 
 
 
 
 
 
 
 
        

最新文章

  1. Linux上USB移植错误解决笔记
  2. iOS - Threads 多线程
  3. QQ登入(2)获取用户信息
  4. 【python】禁止print输出换行的方法
  5. How Much Work Does it Take to be a Successful Mathematician?
  6. 【php】对PHPExcel一些简单的理解
  7. JS 更改表单的提交时间和Input file的样式
  8. maven 的docker插件
  9. 针对Oracle数据库中SCOTT方案的多表查询一个例子
  10. eclipse中git提交冲突问题
  11. javascript中数组的深拷贝的方法
  12. 深深感受 Promise.all 带来的速度提升
  13. 【原创+整理】简述何为调用约定,函数导出名以及extern C
  14. GCD HDU - 1695(容斥原理)
  15. scp ssh-key连接原理
  16. activemq 的那些事1
  17. Web Service Client使用Microsoft WSE 2.0
  18. 超级好用的C++万能头文件
  19. Python——面向对象、绑定对象、组合
  20. Codeforces Round #248 (Div. 1) A. Ryouko&#39;s Memory Note 水题

热门文章

  1. A. Right-Left Cipher Round #528 (Div. 2)【字符串】
  2. C# 关于Grid下动态删除行列的操作
  3. 为什么Kafka那么快,明显领先其他mq?
  4. 文献综述二:UML技术在行业资源平台系统建模中的应用
  5. 【3dsMax安装失败,如何卸载、安装3dMax 2013?】
  6. JQuery实现表格的全选和反选,以及分页勾选保存(laypage插件分页的使用)
  7. LeetCode 319 ——Bulb Switcher——————【数学技巧】
  8. D3(v5) in TypeScript 坐标轴之 scaleBand用法
  9. C# Uploadify 文件上传组件的使用
  10. json数据的存储与读取