下载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>
 
 
 
 
 
 
 
 
        

ant用法的更多相关文章

  1. Ant学习--简单实例入门

    步骤1.创建工程文件夹名字 F:\Helloworld 步骤2.编写java代码: package com.netease; public class Ant_test { public static ...

  2. Ant Design中getFieldDecorator方法的特殊用法(小bug)

    记录Ant Design中getFieldDecorator方法的特殊的一个用法 了解Ant Design表单的小伙伴都知道,getFieldDecorator在大部分情况下是用来绑定一个控件的,即像 ...

  3. Ant Design 表单中getFieldDecorator、getFieldValue、setFieldValue用法

    Ant Design 表单中getFieldDecorator.getFieldValue.setFieldValue用法 一.getFieldDecorator getFieldDecorator是 ...

  4. Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)

    Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...

  5. 【测试技术】ant里面mapper的详细用法

    ant里面mapper标签是和fileset配合使用的,目的就是把fileset取出的文件名转成指定的样式.其实看懂官方文档后,感觉真心没啥好写的.但是还是写一下把. 1.<mapper typ ...

  6. 【测试技术】ant中的for循环用法

    有的时候,我们希望ant中也能类似脚本语言一样进行for循环,以实现一些重复性工作.由于ant核心包并未提供此功能,所以需要下载一个扩展包扔到ant的lib目录下去.详细步骤如下: 1.下载核心包:a ...

  7. Ant :DataType

    DataType patternset fileset selector filelist path regexp Ant datatype Ant中,除了Property可以做为Task执行时使用的 ...

  8. iOS -Swift 3.0 -for(循环语句用法)

    // // ViewController.swift // Swift-循环语句 // // Created by luorende on 16/12/08. // Copyright © 2016年 ...

  9. Java构建工具Ant小记(一)

    Ant简介 Ant是基于java的构建工具.理论上来说它类似与make工具,但是却克服了make的一些固有的缺陷. 传统的Make是基于操作系统shell的构建工具,虽然也可以基于工作的os对make ...

随机推荐

  1. c语言实现队列的基本操作

    话不多说,直接代码 #include"stdio.h" #include"stdlib.h" typedef struct QNode{ int date; s ...

  2. 一个新时代的UI设计师需要具备这些技能

    如今互联网行业发展如日中天,设计师本就是稀缺人才.再加上未来也将迎接人工智能时代,未来的设计师不只像现在只是做一些网页.APP界面,还会出现更多的UI设计衍生职业.如下列举的几大类: 一.初级阶段 1 ...

  3. Ace教你一步一步做Android新闻客户端(五) 优化Listview

    今天写存货了 调试一些动画参数花了些时间 ,嘿嘿存货不多了就没法做教程了,今天来教大家优化listview,等下我把代码编辑下 这次代码有些多 所以我把条理给大家理清楚.思路就是把加载图片的权利交给O ...

  4. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  5. TCP字节流与UDP数据报(转)

    关于TCP和UDP的分次发送和接收的问题,困惑了两天,看到这篇文章豁然开朗. 原文链接:http://network.51cto.com/art/201310/413326.htm “TCP是一种流模 ...

  6. Coursera 机器学习 第5章 Neural Networks: Learning 学习笔记

    5.1节 Cost Function神经网络的代价函数. 上图回顾神经网络中的一些概念: L  神经网络的总层数. sl  第l层的单元数量(不包括偏差单元). 2类分类问题:二元分类和多元分类. 上 ...

  7. nyoj 12——喷水装置二——————【贪心-区间覆盖】

    喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的 ...

  8. C++程序设计基础(4)宏定义和内联

    1.知识点 1.1宏定义 (1)不带参数的宏定义 #define ERROR_MESSAGE -100 #define SECONDS_PER_DAY 60*60*60 (2)带参数宏定义,这种形式称 ...

  9. 测试UTC时间可以用的网址

    需要FQ的网址 https://time.artjoey.com/cn/ 不需要FQ的网址 https://time.is/ http://time.123cha.com/?q=Minsk

  10. Ajax的XMLHttpRequest对象

    编写一个例子:从服务器取回一个Hello Ajax字符串. HTML: <input type="button" value="ajax提交" oncli ...