Ant入门

Ant是Apache软件基金会的一个顶级项目。是一个构建工具,如:构建一个项目,包括源代码的编译,打包成jar文件,部署等步骤。

一、Ant的配置
1、将Ant下bin目录放到class目录下。
2、建立一个ANT-HOME,指向Ant的主目录下,即ant目录下

Ant的运行:
1、在控制台中输入 ant命令回车。就会默认寻找当前目录下的build.xml进行构建。

2、可以指定build.xml的名称。使用 ant -f mybuild.xml文件进行构建。

3、ant build.xml init 或 ant -f mybuild.xml init指定执行那个目标(target)

Ant的Builder没有自己的语法。完全依靠xml的语法。但是提供了一些能够被Ant识别的元素。
<object defult="默认执行的target"> :根标签
<target name="target的名称" depends="依赖那个target" discription="描述信息"> :目标标签
<mkdir dir="文件名称和目录"> :创建目录
<delete dir="删除文件的的路径和名称"> :删除目录

如:

<?xml version="1.0" encoding="UTF-8"?>
<object default="seconde">
	<target name="init">
		<mkdir dir="c:\hello"/>
		<mkdir dit="C:\world"/>
	</targer>

	<target name="seconde" depends="init">
		<delete dir="c:\hello"/>
		<delete dir="c:\world"/>
	</targer>
</object>


功能如下:
Ant默认只执行seconde目标(target),而init是创建两个文件目录。seconde目标(target)依赖于init,进行删除刚才在init中创建的目录。

<description>
描述信息(项目的信息)
</description>

<!-- 注释信息 -->为了个目标添加注释信息,以添加可读性

二、属性的使用:
1、定义属性

<property name="proName" value="proValue" location="路径/file/dd"/>



2、使用属性
${proName}
如:

<object default="">
	<property name="file" value="fileName"/>
	<target>
		<mkdir dir="${file}"/>
	</target>
</object>



三、编译源代码:
<javac srcdir="src"/>
这个标签寻找src目录中以.java为后缀的所有文件,并对它们调用javac编译器,从而在相同的目录中生成类文件。当然,将类文件放在一个单独的目录结构中通常会更清晰;可以通过destdir属性来让Ant做到这点。
如:

<object name="myObject" default="myTarget">
	<property name="complitFile" value="complit"/>

	<target name="preprocess">
		<mkdir dir="${complitFile}"/>
	</target>
	<target name="myTarget">
		<javac srcdir="src" descdir="${complitFile}"/>
	</target>
</object>


其他属性:
-classpath: 等价与java的-classpath选项
-debug="true":指示编译器应该带调试信息编译源代码

四、创建一个jar文件:

<jar destfile="生成jar的名称" basedir="字节码文件的所在目录">
  <manifest>指定运行类
    <attribute name="Built-By" value="${user.name}"/>操作系统登录名称
    <attribute name="Main-Class" value="cn.com.test.TestFram"/>mian方法类
  </manifest>
</jar>



五、时间戳
在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这些信息合并到JAR或ZIP文件中。
这种需要通过简单但是非常有用的tstamp任务来解决。这个任务通常在某次生成过程开始时调用,比如在一个init目标中。这个任务不需要属性,许多情况下只需
<tstamp/>就足够。
属性:
DSTAMP日期
TSTAMP时间
TODAY当前日期

<target name="myTarget">
	<tstamp></tstamp>
	<jar destfile="test-${DSTAMP}.java" basedir="compile">
		<attribute name="Built-By" value="${user.name}"/>
		<attribute name="Main-Class" value="cn.com.test.TestFrame"/>
	</jar>
</target>



六、文件系统操作
1、创建和删除目录
<mkdir dir=""/>创建目录
<delete dir="" file=""/>删除目录

2、复制和移动
<copy file="被复制的文件" tofile="目标文件" todir="目标目录"/>
<move file="被移动的文件" tofile="目标文件" todir="目标目录"/>

七、ZIP文件

<zip destfile="output.zip" basedir="output"/>
<unzip src="output.tar.gz" dest="extractDir"/>



八、CVS集成

<property name="cvsRoot" value=":pserver:登录名:IP地址:仓库名称"/>
<property name="destLocation" value="c:\"/>
<target>
  <cvs cvsroot="${cvsRoot}" package="检出模块的名字" command="指定执行的命令checkout" desc="${destLocation}"/>
</target>



九、替换

<replace file="文件" token="被替代的字符串" value="新值"/>



十、创建自定义的任务
1、为实现一个简单的自定义任务,我们所需做的就是扩展org.apache.tools.ant.Task类,并重写execute()方法

<taskdef name="自定义标签名称" classname="处理类" classpath="class文件路径"/>
<target name="自定义标签">
	<自定义标签名称 属性="" 属性=""/>
</target>



下面是一个实现将input.txt文件拷贝到output.txt。

package ant;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

public class TestAnt extends Task{
	private File srcFile;
	private File destFile;
	
	@Override
	public void execute() throws BuildException {
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile)));
			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFile)));
			String line = "";
			while((line = reader.readLine()) != null){
				writer.write(line);
				writer.newLine();
			}
			writer.close();
			reader.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		super.execute();
	}
	
	public File getSrcFile() {
		return srcFile;
	}
	public void setSrcFile(File srcFile) {
		this.srcFile = srcFile;
	}
	public File getDestFile() {
		return destFile;
	}
	public void setDestFile(File destFile) {
		this.destFile = destFile;
	}
}



build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="myProject" basedir="." default="tag">
	<taskdef name="myTag" classname="ant.TestAnt" classPath="bin"/>
	
	<target name="tag">
		<myTag srcFile="input.txt" destFile="output.txt"/>
	</target>
</project>


更多IT技术请浏览:www.bug315.com















 

你可能感兴趣的:(Ant入门)