一、Ant介绍
Ant是Java的生成工具,是Apache的核心项目;直接在apache官网下载即可;
Ant类似于Unix中的Make工具,都是用来编译、生成;
Ant是跨平台的,而Make不能;
Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目;
二、Ant配置
1.新建环境变量ANT_HOME:值为ANT的主目录;
2.在path中配置%ANT_HOME%/bin;
也有一种直接把解压缩的目录配置进path就行,我使用的是这一种
配置完成之后,打开命令行,输入ant,当出现:
Buildfile: build.xml does not exist!
Build failed
时说明配置完成;
三、Ant入门
ant的默认生成文件为build.xml;输入ant后,ant会在当前目录下搜索是否有build.xml,如果有,则执行;当然也可以自定义生成文件,通过ant -f a.xml即可指定a.xml为生成文件;
ant的生成文件是xml文件,整体结构为:
<?xml version="1.0" encoding="GBK"?> <project default=" targetname"> <target name="name"> </target> </project>
project是生成文件的根元素,表示一个工程;
target是project的子元素,表示一个任务;一个project中可以定义多个target元素,表示多个任务;
default属性表示默认执行的target,如果ant命令没有指定target,则执行default的target;
ant targetname;则会执行此target,而忽略default设置的target;
注意:不能有两个相同的targetname;
代码举例:创建并删除hello目录;
<?xml version="1.0" encoding="gbk"?> <project default="delete"> <property name="name" value="xiazdong"/> <target name="delete" depends="mkdir"> <delete dir="${name}"/> </target> <target name="mkdir"> <mkdir dir="${name}"/> </target> </project>
depends表示依赖,执行完这个target之后再执行本target
1.<project>元素
是Ant生成文件的根元素;一般形式如:
<project default=" "[ basedir="." ] [name="projectname"]>
default的值是默认执行的target名;
basedir是指定基准目录,一般都是basedir="."
name是指工程名字;
2.<target>元素
是project元素的子元素,在project元素中能够有多个target;一般形式如下:
<target name=" " [ depends=" A "] [ if =" prop1 "] [ unless=" prop2"]>
name表示target的名称;
depends中填写其他target名称(可以有多个名称,用逗号分割),表示只有targetA完成之后才能够做此target,如果执行此target,则会先执行A;
if的值表示一个属性名,只有设置了该属性名,才能执行此target;
unless的值表示一个属性名,只有没有设置该属性名,才能执行此target;
3.<property>元素
是project的子元素;property用于定义属性,一般形如:
(1)<property name="pname" value="pvalue"/>
如果要使用此property,则需要${pname};类似于表达式语言;
(2)<property file="a.properties"/> 通过此属性文件导入属性;
如果单纯想使用$,则通过$$表示;
3.<fileset>元素
是project的子元素
例:<fileset dir="src" includes="**/*.java"></fileset>
这个写法**/.java表示src目录下的所有java文件,很显然它是经过迭代的。
五、Task介绍
在Ant中Task是target的子元素,即一个target中可以有多个task;而Task分为:
(1)核心Task;
(2)可选Task;
(3)自定义Task;
下面介绍一些常用的核心Task;
1.<echo>
用于单纯输出
例:<echo>hello</echo>
2.<javac>
<javac srcdir="src " destdir="class" [classpath=""]/>;
srcdir是编译此文件夹下或子文件夹下的全部java文件;
destdir是编译后的class文件放置路径;
classpath指定第三方类库;
3.<java>
<java classname=" " fork="yes">
【<arg line="param1 param2 param3"/>】
</java>
classname用于指定运行的类名称;
fork="yes"表示另起一个JVM来执行java命令,而不是中断ANT命令,因此fork必须为yes;
4.<jar>
<jar destfile="main.jar" basedir="">
<manifest>
<attribute name="Main-Class" value="classname"/> <!--指定主类-->
</manifest>
</jar>
destfiie的值为jar包的名称;一般为${dest}/main.jar;
basedir的值是需要打成jar包的目录;一般为${classes}
manifest表示设置META-INF;
5.<mkdir>
<mkdir dir="a\b"/>
6.<delete>
<delete dir="a\b"/> 可以删除a目录下的b目录;
<delete file="1.txt"/>可以删除文件;
7.<tstamp>
<tstamp />
接下来可以使用${DSTAMP}进行调用当前时间;
8.<copy>
<copy file="file1" tofile="file2"/>
file是源文件;
tofile是目标文件;
如果是文件夹,她会检测目标文件夹是否存在的,如果存在,它是不会执行的。
9.<move>
<move file="file1" tofile="file2"/>
file是源文件;
tofile是目标文件;
10.<replace>
<replace file="filename" token="old" value="new"/>
file表示要执行替换的文件;
token表示被替换的字符串;
value表示替换的字符串;
代码举例:一般项目中的ant结构
<project default="init"> <property name="src" value="src"/> <property name="classes" value="classes"/> <property name="dest" value="dest"/> <path id="classpath"> <pathelement path="${classes}"/> </path> <target name="help"> <echo>help -打印帮助信息</echo> <echo>compile -编译java源文件</echo> <echo>run -运行程序</echo> <echo>build -打成jar包</echo> <echo>clean -清楚全部编译生成文件</echo> </target> <target name="compile"> <delete dir="${classes}"/> <mkdir dir="${classes}"/> <javac srcdir="${src}" destdir="${classes}"/> </target> <target name="run" depends="compile"> <java classname="org.xiazdong.Test" fork="yes"> <classpath path="${classes}"/> </java> </target> <target name="build" depends="run"> <delete dir="${dest}"/> <mkdir dir="${dest}"/> <jar destfile="${dest}/Test.jar" basedir="${classes}"> <manifest> <attribute name="Main-Class" value="org.xiazdong.Test"/> </manifest> </jar> </target> <target name="clean"> <delete dir="${classes}"/> <delete dir="${dest}"/> </target> </project>
总结一下:
<?xml version = "1.0" encoding="GBK"?> <project name="Test" default="" basedir="."> <property name="src" value="${basedir}\src"/> <property file="${basedir}\a.properties"/> <!-- path用法 1.id属性表示编号,用于被引用 --> <path id="classpath"> <!-- pathelement的用法 1.path表示多个目录,用“;”隔开目录 2.location表示一个目录 --> <pathelement path="lib;src"/> <pathelement location="lib"/> <!-- dirset的用法 1.dir属性指定根目录 2.子元素<include name=" "/>表示包含的目录 3.子元素<exclude name=" "/>表示不包含的目录 --> <dirset dir="lib"> <include name="**/*Test*"/> <exclude name="**/class"/> </dirset> <!-- filelist的用法 1.dir属性指定根路径 2.files属性指定文件名的列表,用","隔开 --> <filelist dir="lib" files="a.xml,b.xml"/> <!-- fileset用法 1.dir属性指出根路径 2.子元素<include name=" "/>指定包含的文件名 --> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </path> <!-- target用法 1.表示任务,子元素为各种task的集合; --> <target name="target1"> <!-- javac用法 1.srcdir表示java文件的目录 2.destdir表示class文件的保存目录 --> <javac srcdir="src" destdir="bin"> <!-- classpath用法 1.refid引用前面的path指定的路径 --> <classpath refid="classpath"/> </javac> <!-- java用法 1.classname表示要运行的类 2.fork="yes"一定要写上!! --> <java classname="Test" fork="yes"> <classpath refid="classpath"/> <!-- arg表示指定的参数 --> <arg value="a b c"/> </java> <!-- echo表示输出 --> <echo>Hello world</echo> <!-- copy表示复制文件 delete表示删除文件 mkdir表示创建目录 move表示移动文件 --> <copy file="src.txt" tofile="dest.txt"/> <delete dir="src"/> <mkdir dir="src"/> <move file="src.txt" tofile="dest.txt"/> </target> </project>
六、模式匹配
在Ant中有一些基本的模式匹配的功能,比如:
*表示任意字符串,**表示任意数量的目录;
(1)*.java,表示任意的java文件;
(2)*/*.java表示当前目录的任意java文件;
(3)**/*.java表示当前目录结构下的任意java文件;
<fileset dir="src">
<include name="**/*.java"/>
<include name="**/*.txt"/>
<exclude name="**/*Test*"/>
</fileset>
表示包含src目录下的所有java和txt文件,排除文件名包含Test的文件;
举例:将src文件夹所有类型文件拷贝到build/src文件夹下;
<target name="copySrc"> <copy todir="build/src"> <fileset id="src.path" dir="src" includes="**/*.*"></fileset> </copy> </target>也可以吧fielset拿到project的子目录中,用refid来引用
<fileset id="src.path" dir="src" includes="**/*.*"></fileset> <target name="copySrc"> <copy todir="build/src"> <fileset refid="src.path"></fileset> </copy> </target>
七、自定义任务
自定义任务类似于JSP中的自定义标签;
步骤:
(1)继承org.apache.tools.Task;
(2)覆写public void execute()throws BuildException;
(3)在类中添加的属性即为任务标签的属性;
(4)在build.xml中声明任务<taskdef name=" " classname=" " classpath="bin"/>
举例:复制文件;
package org.tools; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class SimpleTask extends Task{ private File file; private File tofile; public File getFile() { return file; } public void setFile(File file) { this.file = file; } public File getTofile() { return tofile; } public void setTofile(File tofile) { this.tofile = tofile; } @Override public void execute() throws BuildException { try { PrintWriter out = new PrintWriter(new FileWriter(tofile)); BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file))); String line = null; while((line=in.readLine())!=null){ out.println(line); } out.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } }
build.xml
<taskdef name="MyCopy" classname="org.tools.SimpleTask" classpath="bin"></taskdef> <target name="mycopy"> <MyCopy file="2.txt" tofile="output.txt"/> </target>
转自:http://blog.csdn.net/xiazdong/article/details/7038851
因为是笔记性质所以找了一篇网上的博文,但在学习过程中加入了一些没涉及到的东西。
相关推荐
《Ant入门》是一本专为初学者设计的电子书,主要涵盖了Apache Ant这一构建工具的基础知识和使用方法。Ant是Java开发中广泛使用的自动化构建工具,由Apache软件基金会开发,其设计目标是简化项目构建过程,使开发者...
这个"Ant入门资料(完整版)"包含了丰富的学习资源,帮助初学者快速掌握Ant的基本概念、用法以及实际应用。 《JUnitAnt_Simp(中文).CHM》:这是一部关于Ant和JUnit的中文手册,JUnit是Java编程语言中的一个单元...
在“ant入门小实例练习”中,我们可以探索Ant的基本用法和核心概念。首先,你需要了解Ant的配置文件`build.xml`,这是整个构建过程的蓝图,定义了一系列的构建目标和任务。每个目标是由一系列的任务(tasks)组成的...
以上就是Ant入门的一些基本知识点,通过这个“myant01”实例,你可以动手实践这些概念,逐步熟悉Ant的工作方式。随着经验的积累,你会发现Ant是一个强大且灵活的构建工具,能够满足各种复杂的项目构建需求。
### Ant入门资料:快速上手 #### 一、Ant简介 **1.1 什么是Ant** Apache Ant 是一个Java环境下的构建工具,主要用于自动化编译、测试、部署等任务。它采用XML格式来定义构建过程,使开发者能够通过简单的配置文件...
Ant 入门教程 Ant 是一种基于 Java 和 XML 的 build 工具,在软件开发中发挥着重要作用。本教程旨在为初学者提供一个系统的 Ant 入门指南,涵盖了 Ant 的安装、环境配置、命令解释等方面。 Ant 的安装 要使用 Ant...
ant的简单入门教程 1、ant介绍;2、ant安装;3、第一个ant脚本;4、整合ant;5、ant进阶;6、常用task;7、控制流程;8、实例分析;9、如何继续学习;10、ant使用cvs实例;11、Q&A
### Ant使用指南-Ant入门手册 #### 一、Ant是什么? Apache Ant 是一款开源的 Java 构建工具,它的名字来源于“Another Neat Tool”的首字母缩写。Ant 能够帮助开发者自动化构建过程,包括编译源代码、运行测试、...
NULL 博文链接:https://teddywang.iteye.com/blog/722248
ant入门书籍,带你走入ant的世界。ant使用指南,工具介绍
这个"Ant入门与进阶"的主题涵盖了从初识Ant到深入掌握其高级特性的全过程,对于Java开发者来说,这是一个至关重要的工具,因为它是构建Java项目的主要方式之一。 Ant的名称来源于“蚂蚁”,寓意其能够像蚂蚁一样...
《Ant的最完整build.xml解释:Ant入门与进阶》 Ant,作为Java世界中的一个构建工具,由Apache软件基金会开发,是项目管理和自动化构建的重要工具。它通过XML定义的build.xml文件,来描述项目的构建过程,包括编译、...
标题“ant入门编写例子,非常简单实效哦”指的是这篇内容将向初学者展示如何使用Ant进行基本的项目构建。Ant的入门通常包括创建build.xml文件,设置项目属性,定义任务,以及引入依赖等步骤。这个例子可能是为了帮助...
Ant是Apache软件基金会下的一个...通过观看"Ant入门讲解视频",你可以进一步了解Ant的使用方法和实践案例,结合文档`Ant 入门讲解视频(22分03秒).doc`深入学习,配合`ant.exe`进行实际操作,快速掌握Ant的基本技能。