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中安装 ...
随机推荐
- Linux启动与登陆环境
linux启动流程 参考:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 加载内核,首先读入/boot 目录下的内核文件. ...
- easyui datagrid 加载两次请求,触发两次ajax 请求 问题
datagrid初始化的时候请求两次URL 两种情况 1. <table id="gridview" class="easyui-datagrid"> ...
- pycharm 下载与配置
https://www.jetbrains.com/pycharm/download/
- redis五种数据类型的使用(zz)
redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...
- Entity Framework 6, database-first with Oracle
Entity Framework 6, database-first with Oracle 转载自http://csharp.today/entity-framework-6-database-fi ...
- Oracle 设置表空间自增长
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- JS、C#及SQL中的DateTime
一:SQL中的DataTime 1. between and 相当于>= and <= 2. 常用的将DataTime查询成字符串的方法 Select CONVER ...
- QQ浏览器安卓5.8版本的Uint8Array API有bug
调用new Uint8Array()时QQ浏览器将直接返回参数列表, 比如new Uint8Array(a)将返回[a],比如new Uint8Array(a, b)将返回[a, b],比如new U ...
- yii隐藏域的使用方法
<?= $form->field($model, 'time')->textInput()->hiddenInput(['value'=>time()])->lab ...
- 倒计时(jQuery)
倒计时,在网页制作中会经常用到,特别是一些节日活动页面运用更是广泛.今天就和大家分享一下jQuery如何实现倒计时.话不多说,言归正传,倒计时开始: 首先,既然是用jQuery实现,那么前提就是要先引 ...