前言:这段时间在学习Ant,发现这是一个很强大的构建工具。你可能使用了很长一段时间,才发现Ant能做数不完的事。总之,个人觉得,Ant学习门槛低,入门简单,能大概看懂程序,写一些简单的脚本即可,剩下在遇到的时候边做边学就可以了。另外,博主资历尚浅,有说的不对的地方,还请大家不吝指教。

一、Ant是一个Apache基金会下的跨平台的构建工具,它可以实现项目的自动构建和部署等功能。它具有跨平台、使用简单、语法清晰、功能强大等特点。
 
二、下载和安装:http://ant.apache.org/,添加环境变量 ANT_HOME ,指向根目录 D:\hybirs630\hybris\bin\platform\apache-ant-1.9.1,安装完成后,进入控制台界面,输入 ant -version检查是否安装成功。
 
三、Ant的构建文件是通过XML编写的,默认名称是build.xml。
<?xml version="1.0"?>
<project name="helloWorld">
<target name="sayHelloWorld">
<echo message="Hello,Amigo"/>
</target>
</project>
备注:(在文件的存在目录执行ant sayHelloWorld,ant 默认寻找文件 build.xml ,若文件不为 build.xml ,则执行ant –f hello.xml sayHelloWorld、ant –buildfile hello.xml sayHelloWorld 或 ant –file hello.xml sayHelloWorld)
 
四、Ant的关键元素 project、target、property、task
 
project 元素(至少包含一个,可以包含多个target)、 name属性、 default属性(用于指定project默认执行时所执行的target的名称)、basedir属性(用于指定路径的位置。没有指定,使用Ant的构件文件的附目录作为基准目录)
<?xml version="1.0"?>
<project name="projectStudy" default="sayBaseDir" basedir="D:\hybirs630\hybris\bin\platform\apache-ant-1.9.1">
<target name="sayBaseDir">
<echo message="The base dir is: ${basedir}"/>
</target>
</project>

 
target 元素(是Ant的基本执行单元,它可以包含一个或多个具体的任务,多个target可以存在相互依赖关系)、name属性(指定名称)、depends属性(描述target之间的依赖关系,以,间隔,顺序执行,被依赖的target优先执行)、if/unless属性(验证属性是否存在,若存在,则执行/不执行)、description属性(target功能的简短描述与说明)
<?xml version="1.0"?>
<project name="targetStudy">
<target name="targetA" if="ant.java.version">
<echo message="Java Version: ${ant.java.version}"/>
</target>
<target name="targetB" depends="targetA" unless="amigo">
<description>
a depend example!
</description>
<echo message="The base dir is: ${basedir}"/>
</target>
</project>
 
property 元素(参量或者参数的定义),若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入:<property file=” build.properties”/>,同时,Ant还提供了一些它自己的内置属性,如下:
  • basedir:project基目录的绝对路径.
  • ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml;
  • ant.version:Ant的版本,在本文中,值为1.7.0;
  • ant.project.name:当前指定的project的名字,即前文说到的project的name属性的值;
  • ant.java.version:Ant检测到的JDK的版本。
ant 中若引用 property 或者它的内置属性,用 ${} 括号起来引用。
<?xml version="1.0"?>
<project name="propertyStudy" default="example">
<property name="name" value="amigo"/>
<!--读取属性文件的属性配置-->
<property file="foo.properties"/>
<property name="age" value="25"/>
<target name="example">
<echo message="name: ${name}, age: ${age}"/>
</target>
</project>
 
五、Ant的任务介绍
 
1、输出信息
<echo message="xxx"/>
<echo>yyyy</echo>
 
2、copy 任务
该任务主要用来对文件和目录的复制功能。举例如下:
  • 复制单个文件
<copy file="file.txt" tofile="copy.txt"/>
  • 对文件目录进行复制
   <copy todir="../newdir/dest_dir">
<fileset dir="src_dir"/>
</copy>
  • 将文件复制到另外的目录
  <copy file="file.txt" todir="../other/dir"/>
<copyfile src="test.java" dest="subdir/test.java">
  • 拷贝一堆文件到一个目录
<copy todir="../dest/dir">
<fileset dir="src_dir">
<exclude name="**/*.java">
</fileset>
</copy>
  • 拷贝一个目录下的东西到另一个目录下(includes加入,excludes排除,即排除这些之外的东西都要加入)
<copy src="${src}/resources" dest="${dist}" includes="**/*.java" excludes="**/Test.java"/>
 
3、delete 任务
  • 删除某个文件
<delete file="photo/amigo.jpg"/>
  • 删除某个目录:
<delete dir="photo"/> 
  • 删除所有的备份目录或空目录:(也可以使用include和exclude)
        <delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>
 
 4、mkdir任务

创建目录

<mkdir dir="build"/>
 
5、move任务 
  • 移动单个文件
<move file="fromfile" tofile=”tofile”/>
  • 移动单个文件到另一个目录
<move file="fromfile" todir=”movedir”/>
  • 移动某个目录到另一个目录
 <move todir="newdir">
<fileset dir="olddir"/>
</move>
6、重命名任务
<rename src="foo.jar" dest="ant-${version}.jar"/>  
7、Touch的使用

如果文件不存在,创建文件,如果存在,更改最后访问时间为系统时间

<touch file="myfile"/>
8、打Jar包
<target name="build" depends="compile">
<jar destfile="${hello_jar}" basedir="${dest}"/>
</target>
9、压缩zip文件
<zip destfmlile="${dist}/manual.zip"
basedir="htdocs/manual"
includes="api/**/*.html"
excludes="**/todo.html"/>
 
六、利用Ant构建和部署Java工程,可参考我的另一篇博客:http://www.cnblogs.com/jmcui/p/6946777.html

七、一份Ant的API文档

Ant学习笔记的更多相关文章

  1. 【转】Ant学习笔记——自己构建Ant编译环境

    自从年初开始用NetBeans6.0,才接触到Ant. 这是今年6月份的一篇Ant学习笔记.安装 1.下载并构建环境.   去官网下载src包和bin包.解压缩它们到同一目录,运行build.bat, ...

  2. Ant学习笔记(1) 基础知识

    Ant Apache Ant 是一个基于 Java的构建工具. 下载Ant google.baidu.Windows用户下载zip格式.解压即可. Windows安装Ant Ant本质上是一个Java ...

  3. Ant学习笔记(2) 在Eclipse中使用Ant

    Eclipse默认提供了对Ant的支持,在Eclipse中不需要安装任何插件就能直接编辑和运行Ant.Eclipse中包含了一个Ant脚本编辑器,Ant脚本编辑器提供了对Ant脚本的语法搞来高亮.自动 ...

  4. Ant 学习笔记

    1.下载Ant 官方网站http://ant.apache.org/bindownload.cgi 下载最新版本  .zip archive: apache-ant-1.9.4-bin.zip [PG ...

  5. ant学习笔记-taskdef

    1.声明task jar包中指定的task <taskdef name="xmltask“ classname="com.oopsconsultancy.xmltask.an ...

  6. maven权威指南学习笔记(三)——一个简单的maven项目

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  7. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  8. android cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)

    引用:http://weimingtom.iteye.com/blog/1483566 (20121108)注意:这篇文章用cdt编译ndk工程的内容已过时(现在可以用adt-bundle,避免配置繁 ...

  9. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

随机推荐

  1. C# 串口接收数据中serialPort.close()死锁

    最近在做一个有关高铁模拟仓显示系统的客户端程序,在这个程序中要运用串口serialPort传输数据,因为每次接收数据结束后要更新UI界面,所以就用到了的Invoke,将更新UI的程序代码封装到一个方法 ...

  2. LuaJavaBridge - Lua 与 Java 互操作的简单解决方案

    http://dualface.github.io/blog/2013/01/01/call-java-from-lua/ 最近在游戏里要集成中国移动的 SDK,而这些 SDK 都是用 Java 编写 ...

  3. python学习笔记 map&&reduce

    ---恢复内容开始--- 1.map 1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了? def f(x): ret ...

  4. h5前端流行的框架

    很多时候别人问你,上手的框架有哪些,其实我们都是知道的,只是一时却也说不上哪些比较,这里想给大家介绍一下,我所遇到的,还算好用的框架,做个分享 1 Bootstrap 官网:http://getboo ...

  5. 解决微信公众平台IP白名单

    微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱.正如它的广告词所说:再小的个体,也有品牌 好吧,闲话不多说,今天要说的是它的IP白名单机制. 我们现在安装的大部分的电信的家庭级别的 ...

  6. 自己动手实现mvc框架

    用过springmvc的可能都知道,要集成springmvc需要在web.xml中加入一个跟随web容器启动的DispatcherServlet,然后由该servlet初始化一些东西,然后所有的web ...

  7. HDU 1394 逆序数 线段树单点跟新 | 暴力

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  8. HDU5983Pocket Cube

    Pocket Cube Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  9. PHP简单实现购物车

    首先,判断是否登录.if(isset($_session['user_id'])){ 存在: 把用户id和商品id,加入购物车表}else{ 不存在:使用cookie把商品ID和主机IP放入一个数组 ...

  10. sqlserver 查询所有表及记录行数

    --查询所有表名 select name from sysobjects where xtype='u' select * from sys.tables --查询所有表名及对应架构 select t ...