Java构建工具Ant小记(一)
Ant简介
Ant是基于java的构建工具。理论上来说它类似与make工具,但是却克服了make的一些固有的缺陷.
传统的Make是基于操作系统shell的构建工具,虽然也可以基于工作的os对make工具进行扩展,但却难以实现跨平台构建.Ant基于java扩展功能,并且通过在xml中的target中定义的task进行构建任务的定义.其中每一个任务都是实现特定任务接口的类.同时Ant也提供了exec任务允许调用不同的操作系统的shell命令.
Ant主要元素介绍
Ant使用xml文件定义构建过程,每一个构建文件都会包括一个project和至少一个target.Target会包含task元素。每一个task元素可以通过id属性被引用.
1.Projects
Project元素有三个属性:name、default、basedir.同时其可以包含一个description元素对项目进行描述.
name:project的名称,不是必须属性;
default:执行构建的时候不指定要执行的target,则默认执行此设置的target;
basedir:设置基准目录,则后续所有的相对位置则以此设置为基准路径;如果不设置则以包含构建文件的目录为基准目录;
<?xml version="1.0" encoding="UTF-8"?>
<project name="ProjectExample" default="default" basedir=".">
<description>
学习project的用法
</description>
<target name="default" >
<echo>${basedir}</echo>
</target>
<target name="echoBasedir">
<echo>${basedir}</echo>
</target>
</project>

2.Targets
每个Project会定义一个或者多个target.Target是待执行的task的集合.当启动执行ant的时候可以指定要执行的target,如果没有指定则执行project设置的默认的target/一个target可以通过depends来定义其依赖的其他的target,比如打包的target依赖编译的target.
<?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
2015年6月1日 下午9:35:09 targetExample
description hou
====================================================================== -->
<project name="targetExample" default="default">
<description>
description
</description> <!-- =================================
target: default
================================= -->
<target name="default" depends="depends" description="description">
<echo>excuting default target</echo>
</target> <!-- - - - - - - - - - - - - - - - - -
target: depends
- - - - - - - - - - - - - - - - - -->
<target name="depends">
<echo>excuting depends target</echo>
</target> </project>

3.Tasks
Task是一段可以被执行的代码.一个task可以有多个属性(attribute).这些属性(attribute)的值可以引用属性(property),被引用的属性会在任务执行之前被解析成具体的值.task的通用结构如下
<name attribute1=”value1” attribute2=”value2”.../>
Ant既内置了一些常用的task,同时也提供了便利的扩展机制.
<?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
2015年6月1日 下午9:59:23 taskExample
description
hou
====================================================================== -->
<project name="taskExample" default="default">
<description>
description
</description> <property name="dirName" value="taskdir "></property> <!-- =================================
target: default
================================= -->
<target name="default" description="description">
<echo>list current directory </echo>
<exec executable="ls"></exec>
<echo>make [${dirName}] directory </echo>
<mkdir dir="${dirName}"/>
<echo>list current directory </echo>
<exec executable="ls"></exec>
<delete dir="${dirName}"></delete> </target> </project>

4.Properties
属性是通过设置一个可以在构建过程中重复使用的字符串来达到自定义构建过程的重要方式.通常情况下是在构建文件中直接定义属性,当然也可以在外部定义属性.属性的名字是大小写敏感的.属性的引用是通过${属性名}来实现的.Ant中的属性类似java里的字段,但是属性一经设置就不可更改.
Ant 中有许多预定义的属性.首先, Java 环境设置用于运行 Ant 的所有系统属性, 均可作为 Ant 属性使用,比如 ${user.home} .除了这些属性之外,Ant 还定义了它自己的一小组属性,包括${ant.version},这个属性包含 Ant 的版本;以及 ${basedir},这个属性是项目目录的绝对路径(由包含生成文件的目录所定义,或者由 project 元素的可选 basedir 属性所定义). 属性经常用于引用文件系统上的文件或目录,但是对于使用不同路径分隔符(例如,/ 与 \)的平台来说,这样可能在跨越不同平台时导致问题.Ant 的 location 属性专门设计用于以平台无关的方式包含文件系统路径.
<project name="propertiesExample" default="dist" basedir="../">
<description>
simple propertiesExample build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/> <target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target> <target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target> <target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the wufengtinghai.alm-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/wufengtinghai.alm-${DSTAMP}.jar" basedir="${build}"/>
</target> <target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>

运行Ant
Ant作为命令行工作,自然可以通过unix/linux的shell和windows的cmd进行条用.同时可以通过java的IDE进行调用,比如eclipse.
从命令行直接调用ant,这样ant会从当前目录寻找默认的build.xml,并使用默认的target执行生成过程.同时也可以通过ant -f buildfilename targetname来指定构建文件和target名称.
Eclipse对ant提供了强大的支持.首先支持语法高亮/智能提示/大纲视图.

在eclipse中选中构建文件,右键选择”Run As”-”Ant Build”,并执行即可.


Java构建工具Ant小记(一)的更多相关文章
- java构建工具——ant使用
Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.安装与部署 1.1 下载 下载地址:https: ...
- 高效使用Java构建工具,Maven篇|云效工程师指北
大家好,我是胡晓宇,目前在云效主要负责Flow流水线编排.任务调度与执行引擎相关的工作. 作为一个有多年Java开发测试工具链开发经验的CRUD专家,使用过所有主流的Java构建工具,对于如何高效使用 ...
- 构建工具 Ant、Maven和Gradle
构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...
- Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理
原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-mave ...
- Java构建工具_Ant详解
1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为 ...
- 项目构建工具ant的使用
ant是项目构建工具,以xml文件作为构建文件,在这个xml文件(默认是build.xml,当然也可以取其它名字)里我们可以定义多个目标,用我们期待的方式去构建项目,比如说编译,测试,发邮件等等. a ...
- SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
http://scons.org/ https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html 后附:另外,WAF是一个基于sc ...
- 浅谈java构建工具的选择
在学校的时候还总是自己用eclipse自带的jar导出工具,然后人工来给项目打包,那是相当的原始. 而后工作了,项目中都是用ant,慢慢的开始学会使用这个工具.感觉就和脚本一样,很容易读懂,做项目构建 ...
- Lombok——一款Java构建工具,“懒人”必备!!(idea版)
一.简介 Lombok 是一种 Jav 构建工具,可用来帮助开发人员消除 Java 的冗长代码,尤其是对于简单的 Java 对象(POJO).它是通过注解实现这一目的. 二.使用 1.在idea中安装 ...
随机推荐
- gerrit 部署手册
概述 gerrit是谷歌开发用于安卓系统的代码审查的系统,目前已经开源.gerrti使用简单并友好.这里记录了gerrti的部署方法以及其中可能存在的陷阱和问题. 创建专属系统用户 Gerrit co ...
- composer 安装
安装composer wget http://curl.haxx.se/ca/cacert.pem curl -sS https://getcomposer.org/installer | php - ...
- notepad++ 配置Python 调试环境 实用版
一. 安装python 1. 下载python 2.7版本并安装: 2. 在安装到自定义python的时候选择 add python to ptah项:
- HTML5新增的属性
关于html5新增的属性: HTML5现在已经不是SGML的子集,主要是增加了关于图像,位置,存储,多任务等功能. 绘画CANVAS; 用于播放媒体的video和audio元素: 本地离线存储loca ...
- MMS彩信字符集(字符编码)
彩信字符集在CharacterSets类中定义 android\frameworks\opt\telephony\src\java\com\google\android\mms\pdu\Charact ...
- layout优化实践
昨天确定了启动时,inflate耗时太多,当时不知道怎么回事,去Trinea的博客一逛,发现原来是需要进行layout优化,跟着他们的步伐,做了下面的修改. 1.据说在lint前是一款layout工具 ...
- Mysql 分段统计
今天遇到个小问题觉得挺有意思,与大家分享. 需求是这样的,对数据库中的一张表做按时间的分段统计,结果只要每个区间的数量. select YEAR(create_time) as nian,MONTH( ...
- JS 获取FileUpload1控件地址
function openList() { //判断浏览器类型 var isIE = (document.all) ? true : false; ); ); ); var path = " ...
- C语言小练习三
题目要求: 定义一个二维数组保存 10个学生的5门课成绩,分别用函数实现:(1)input():输入每个学生的成绩:(2)output():输出每个学生的成绩:(3)aver_stu():计算并输出每 ...
- Rational.Rose.Enterprise.v7.0 (2007)安装分享
很多人都在找rational软件,很多都是2003的,有的宣称是2007,但结果还是2003.也许真的不存在Rational.Rose 2007,不过有IBM.Rational.Rose.Enterp ...