视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Ant学习总结
2025-10-02 15:39:46 责编:小OO
文档
Ant学习总结 

分类: java 2011-12-04 09:52 224人阅读 评论(0) 收藏 举报 

一、Ant介绍

Ant是Java的生成工具,是Apache的核心项目;直接在apache官网下载即可;

Ant类似于Unix中的Make工具,都是用来编译、生成;

Ant是跨平台的,而Make不能;

Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目;

下载地址: http://ant.apache.org/bindownload.cgi  

二、Ant配置

在Ant安装之前需要安装好JDK,并配置好JAVA_HOME;

Ant配置:

1.新建环境变量ANT_HOME:值为ANT的主目录;

2.在path中配置%ANT_HOME%/bin;

配置完成之后,打开命令行,输入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文件,整体结构为:

[html] view plaincopyprint?

1.  

2.  

3.      

4.      

5.  

project是生成文件的根元素,表示一个工程;

target是project的子元素,表示一个任务;一个project中可以定义多个target元素,表示多个任务;

default属性表示默认执行的target,如果ant命令没有指定target,则执行default的target;

ant targetname;则会执行此target,而忽略default设置的target;

注意:不能有两个相同的targetname;

代码举例:创建并删除hello目录;

[html] view plaincopyprint?

1.  

2.  

3.      

4.      

5.          

6.      

7.      

8.          

9.      

10.  

四、Ant的XML元素详解

1.元素

是Ant生成文件的根元素;一般形式如:

default的值是默认执行的target名;

basedir是指定基准目录,一般都是basedir="."

name是指工程名字;

2.元素

是project元素的子元素,在project元素中能够有多个target;一般形式如下:

name表示target的名称;

depends中填写其他target名称(可以有多个名称,用逗号分割),表示只有targetA完成之后才能够做此target,如果执行此target,则会先执行A;

if的值表示一个属性名,只有设置了该属性名,才能执行此target;

unless的值表示一个属性名,只有没有设置该属性名,才能执行此target;

3.元素

是project的子元素;property用于定义属性,一般形如:

(1)

如果要使用此property,则需要${pname};类似于表达式语言;

(2) 通过此属性文件导入属性;

如果单纯想使用$,则通过$$表示;

五、Task介绍

在Ant中Task是target的子元素,即一个target中可以有多个task;而Task分为:

(1)核心Task;

(2)可选Task;

(3)自定义Task;

下面介绍一些常用的核心Task;

1.

用于单纯输出,一般形如:

     

举例:hello

2.

用于编译java文件,一般形式如下:

srcdir是编译此文件夹下或子文件夹下的全部java文件;

destdir是编译后的class文件放置路径;

classpath指定第三方类库;

3.

运行java类,一般形式如下:

    【

classname用于指定运行的类名称;

fork="yes"表示另起一个JVM来执行java命令,而不是中断ANT命令,因此fork必须为yes;

4.

打包成jar包;一般形式如下:

    

            

    

destfiie的值为jar包的名称;一般为${dest}/main.jar;

basedir的值是需要打成jar包的目录;一般为${classes}

manifest表示设置META-INF;

5.

创建目录,可以多层创建,比如a\\b\\c,则可以连续创建,一般形式如下:

6.

删除目录,一般形式如下:

可以删除a目录下的b目录;

可以删除文件;

7.

时间戳,一般形式如下:

接下来可以使用${DSTAMP}进行调用当前时间;

8.

复制文件,一般形式如下:

file是源文件;

tofile是目标文件;

9.

移动文件,一般形式如下:

file是源文件;

tofile是目标文件;

10.

 用于替换字符串,类似于String的replace操作,一般形式如下:

file表示要执行替换的文件;

token表示被替换的字符串;

value表示替换的字符串;

代码举例:一般项目中的ant结构

[html] view plaincopyprint?

1.  

2.      

3.      

4.      

5.      

6.          

7.      

8.      

9.        help -打印帮助信息  

10.        compile -编译java源文件  

11.        run -运行程序  

12.        build -打成jar包  

13.        clean -清楚全部编译生成文件  

14.      

15.      

16.          

17.          

18.          

19.      

20.      

21.          

22.              

23.          

24.      

25.      

26.          

27.          

28.          

29.              

30.                  

31.              

32.          

33.      

34.      

35.          

36.          

37.      

38.  

总结一下:

[html] view plaincopyprint?

1.  

2.  

3.      

4.      

5.      

9.      

10.      

15.          

16.          

17.      

23.          

24.              

25.              

26.          

27.      

32.          

33.      

38.          

39.              

40.          

41.      

42.      

46.      

47.      

52.          

53.      

57.              

58.          

59.      

.          

65.              

66.      

69.              

70.          

71.      

74.        Hello world  

75.      

81.          

82.          

83.          

84.          

85.      

86.  

五、在Eclipse中使用Ant

在Eclipse中虽然没有内置创建Ant的生成文件,但是可以通过配置完成;

(1)点击  window-->preferences-->editors-->file associations;

(2)在File types中创建一个build.xml,并将associated editor的默认项设置为ant editor即可;

当在项目中创建一个build.xml时,这个文件就是ant的生成文件;

 

 

六、模式匹配

在Ant中有一些基本的模式匹配的功能,比如:

*表示任意字符串,**表示任意数量的目录;

(1)*.java,表示任意的java文件;

(2)*/*.java表示当前目录的任意java文件;

(3)**/*.java表示当前目录结构下的任意java文件;

 

    

    

    

表示包含src目录下的所有java和txt文件,排除文件名包含Test的文件;

 

举例:将java文件拷贝到dest文件夹下;

[html] view plaincopyprint?

1.  

2. style="white-space:pre">      

3. style="white-space:pre">          

4. style="white-space:pre">      

5.  

 

七、自定义任务

 自定义任务类似于JSP中的自定义标签;

步骤:

(1)继承org.apache.tools.Task;

(2)覆写public void execute()throws BuildException;

(3)在类中添加的属性即为任务标签的属性;

(4)在build.xml中声明任务

举例:复制文件;

[java] view plaincopyprint?

1.package org.tools;  

2.  

3.import java.io.BufferedReader;  

4.import java.io.File;  

5.import java.io.FileInputStream;  

6.import java.io.FileWriter;  

7.import java.io.IOException;  

8.import java.io.InputStreamReader;  

9.import java.io.PrintWriter;  

10.  

11.import org.apache.tools.ant.BuildException;  

12.import org.apache.tools.ant.Task;  

13.public class SimpleTask extends Task{  

14.    private File file;  

15.    private File tofile;  

16.    public File getFile() {  

17.        return file;  

18.    }  

19.    public void setFile(File file) {  

20.        this.file = file;  

21.    }  

22.    public File getTofile() {  

23.        return tofile;  

24.    }  

25.    public void setTofile(File tofile) {  

26.        this.tofile = tofile;  

27.    }  

28.    @Override  

29.    public void execute() throws BuildException {  

30.        try {  

31.            PrintWriter out = new PrintWriter(new FileWriter(tofile));  

32.            BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));  

33.            String line = null;  

34.            while((line=in.readLine())!=null){  

35.                out.println(line);  

36.            }  

37.            out.close();  

38.            in.close();  

39.        } catch (IOException e) {  

40.            e.printStackTrace();  

41.        }  

42.          

43.    }  

44.      

45.}  

build.xml

[html] view plaincopyprint?

1.  

2.      

3.          

4.      

 

 

 下载本文

显示全文
专题