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中安装 ...
随机推荐
- LSD-SLAM深入学习(3)-代码解析
前言 在LSD-SLAM深入学习(2)中我们已经对算法进行分析,此处假设读者对于ros的基本操作都已经很熟悉,而且已经编写了一定量的的代码,我们直接上干货.此处分析的程序如下 main_live_od ...
- python学习-day14-前端之html、css
一.Html 1.本质:一个规则,浏览器能任务的规则 2.开发者: 学习Html规则 开发后台程序: - 写Html文件(充当模板的作用) ***** ...
- tmp
Hello 大家好,这次给大家带来的是Gear VR4代,首先我得感谢下我们的虎友Hide兄弟友情提供Gear给我们测评,感谢 感谢.之前我录的前哨战也说过,这次Gear VR 4代较3代变化并不是很 ...
- mysq安装以及修改密码
安装版MySQL是不能一键安装的,下载下来是压缩包,解压后只要进行相关配置就可以正常使用: 文章主要是记录一下,以防自己忘记: 1.首先在mysql官网--http://dev.mysql.com/d ...
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
sys和system用户区别 1)最重要的区别,存储的数据的重要性不同 sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己 ...
- vue 2 滚动条加载更多数据实现
解析: 判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight. scrollTop为滚动条在Y轴上的滚动距离. clientHeigh ...
- window下flask开发环境搭建
1.安装python 官网下载https://www.python.org/downloads/,按提示安装就行,记住安装目录,把它添加到系统path中. 2.安装pip 官网下载pip文件:http ...
- SAP项目管理模块培训教材
SAP项目管理模块培训教材(PLM210.PLM220.PLM230)分享: http://sap.npbok.com/
- iOS基础之网络请求相关
1.AFNetwork二次封装方法一: #import <Foundation/Foundation.h> @interface BeeNetworkManager : NSObject ...
- 在app中打开appStore中其他app
var str = "https://itunes.apple.com/cn/app/zhang-jiange-hao-tou-zi-ke/id402382976?mt=8"//这 ...