`
krs
  • 浏览: 128906 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[转]Java调用Ant API用法收集

    博客分类:
  • Java
阅读更多

Ant是Java程序员的一个好的工具,主要可以帮助程序员进行java项目的的管理,包括批量编译、部署、文档生成等工作,其用途远不止如此,ant内置了大量的API进行各种文件系统操作,在各种应用服务器中都被广泛应用于程序和资源的部署。
Ant功能强大的地方在于,程序员不仅能通过编写Ant的脚本(build.xml)来进行各种文件部署管理操作,还可以通过调用Ant的丰富的API,甚至扩展Ant的API进行编程。
用于介绍Ant 脚本编写的书比较多,而介绍Java 调用 Ant API的书籍和资料比较少,初学者用户在进行Ant编程时会遇到不少麻烦,笔者也是在项目开发过程中,逐渐摸索并掌握了一些Java调用Ant API的一些方法和技巧,并将常用的案例收集起来呈现给大家(本文使用Ant 1.7.0版本),以供大家参考。当然,Ant的API非常丰富,本文仅做抛砖引玉之用,更强大的功能还需要读者自己在结合Ant的API进行摸索和领悟。
1. 目录操作:
1) 创建目录

Project prj=new Project();
Mkdir mkdir=new Mkdir();
mkdir.setProject(prj);
mkdir.setDir(new File("d:tempdir1"));
mkdir.execute();


2) 删除目录

1. Project prj=new Project();
2. Delete delete=new Delete();
3. delete.setProject(prj);
4. delete.setDir(new File("d:tempdir1")); //可同时将子目录及所有文件删除
5. delete.execute();


注:对每一个Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必须设置一个Project对象,可以几个Ant Task共用一个Project对象,但不能有Ant Task不设置Project对象。
2. 文件拷贝和移动、更名
1)文件copy

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //将f1.txt文件copy到dir1中


2)copy文件并同时替换其中的内容, 如将 xml中的 @eosapp_name@ 替换成真正的应用名称

1. Project prj=new Project();
2. Copy copy = new Copy();
3. copy.setEncoding("UTF-8");
4. copy.setProject(prj);
5. copy.setTodir("d:temp");
6.
7. FileSet fileSet=new FileSet();
8. fileSet.setDir(new File(eosHome "/base/template.app"));
9. fileSet.setIncludes("**/*.xml");
10. copy.addFileset(fileSet);
11.
12. FilterSet filter=copy.createFilterSet();
13. filter.addFilter("eosapp_name","app1");
14. copy.execute();


2)文件或目录移动
Move的用法和Copy用法基本一致,Move本身为Copy的子类。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //将f1.txt文件移动到dir1中


3)文件改名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempf2.txt"));
6. copy.execute(); //将f1.txt文件更名为f2.txt中


4)目录更名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempdir1");
5. copy.setTodir(new File("d:tempdir2"));
6. copy.execute(); //将dir1目录更名为dir2,相当于将dir1目录下的所有文件移到dir2目录下


3.使用文件集 FileSet
使用文件集可以同时将多个满足匹配条件的文件集合进行copy、move和压缩等操作。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setTodir(new File("d:temptodir"));
5.
6. FileSet fs=new FileSet();
7. fs.setProject(prj);
8. fs.setDir(new File("d:javaprjsrc"));
9. fs.setIncludes("**/*.*"); //包含所有文件
10. fs.setExcludes("**/CVS,**/*.class"); //排除CVS相关文件,以及.class文件
11. copy.addFileset(fs);
12.
13. copy.execute();


注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。
4.目录扫描,查找文件

1. DirectoryScanner ds=new DirectoryScanner();
2. ds.setBasedir(new File("d:tempwar"));
3. ds.setIncludes(new String[] );
4. ds.scan();
5. if(ds.getIncludedFilesCount()>0) {
6. System.out.println("found jsp!");
7. String[] includeFiles=ds.getIncludedFiles();
8. for(String file:includeFiles){
9. System.out.println(file);
10. }
11. }


5.文件压缩,打包
//压缩为zip文件

1. Project prj=new Project();
2. Zip zip=new Zip();
3. zip.setProject(prj);
4. zip.setDestFile(new File("d:tempsrc.zip"));
5. FileSet fileSet=new FileSet();
6. fileSet.setProject(prj);
7. fileSet.setDir(new File("d:javaprjprj1src"));
8. fileSet.setIncludes("**/*.java");
9. zip.addFileset(fileSet);
10. zip.execute();
11.
12. //将class文件打成jar包
13. Project prj=new Project();
14. Jar jar=new Jar();
15. jar.setProject(prj);
16. jar.setDestFile(new File("d:tempprj1.jar"));
17. FileSet fileSet=new FileSet();
18. fileSet.setProject(prj);
19. fileSet.setDir(new File("d:javaprjprj1bin"));
20. fileSet.setIncludes("**/*.class,**/*.properties");
21. jar.addFileset(fileSet);
22. jar.execute();


6.文件解压
1)将压缩文件中的所有文件解压

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. expand.execute();


2)将压缩文件中的符合匹配条件的文件解压

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. PatternSet patternset = new PatternSet();
8. patternset.setIncludes("**/*.java");
9. patternset.setProject(prj);
10. expand.addPatternset(patternset);
11. expand.execute();


3)利用Mapper解压文件: 如将 .../lib/*.jar 解压到 .../WEB-INF/lib目录下(去除目录结构)

1. Expand expand = new Expand();
2. expand.setProject(prj);
3. expand.setSrc(new File(zipFilePath));
4. expand.setDest(new File(webDir "/WEB-INF/lib"));
5.
6. PatternSet pattern = new PatternSet();
7. pattern.setIncludes("lib/*.jar");
8. expand.addPatternset(pattern);
9.
10. FileNameMapper mapper=new FlatFileNameMapper();
11. expand.add(mapper);
12.
13. /* another way using mapper
14. Mapper mapper=expand.createMapper();
15. MapperType type=new MapperType();
16. type.setValue("flatten");
17. mapper.setType(type);
18. */
19. expand.execute();


7.读取zip文件
1) 读取zip文件中的文件和目录

1. ZipFile zipfile = new ZipFile(new File(filepath));
2. for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) {
3. ZipEntry entry = (ZipEntry) entries.nextElement();
4. if(entry.isDirectory())
5. System.out.println("Directory: " entry.getName());
6. else
7. System.out.println("file: " entry.getName());
8. }
9. zipfile.close(); //ZipFile用完必须close,否则文件被锁定


2)zip文件扫描,在Zip文件中查找目录或文件

1. ZipScanner scan=new ZipScanner();
2. scan.setSrc(new File("d:temptest.zip"));
3. scan.setIncludes(new String[] ); //查找目录(一、二级目录);
4. scan.scan();
5. String dirs[]=scan.getIncludedDirectories();
6. scan.setIncludes(new String[]); //查找文件
7. scan.scan();
8. String files[]=scan.getIncludedFiles();


Ant是Java程序员的一个好的工具,主要可以帮助程序员进行java项目的的管理,包括批量编译、部署、文档生成等工作,其用途远不止如此,ant内置了大量的API进行各种文件系统操作,在各种应用服务器中都被广泛应用于程序和资源的部署。
Ant功能强大的地方在于,程序员不仅能通过编写Ant的脚本(build.xml)来进行各种文件部署管理操作,还可以通过调用Ant的丰富的API,甚至扩展Ant的API进行编程。
用于介绍Ant 脚本编写的书比较多,而介绍Java 调用 Ant API的书籍和资料比较少,初学者用户在进行Ant编程时会遇到不少麻烦,笔者也是在项目开发过程中,逐渐摸索并掌握了一些Java调用Ant API的一些方法和技巧,并将常用的案例收集起来呈现给大家(本文使用Ant 1.7.0版本),以供大家参考。当然,Ant的API非常丰富,本文仅做抛砖引玉之用,更强大的功能还需要读者自己在结合Ant的API进行摸索和领悟。
1. 目录操作:
1) 创建目录

1. Project prj=new Project();
2. Mkdir mkdir=new Mkdir();
3. mkdir.setProject(prj);
4. mkdir.setDir(new File("d:tempdir1"));
5. mkdir.execute();


2) 删除目录

1. Project prj=new Project();
2. Delete delete=new Delete();
3. delete.setProject(prj);
4. delete.setDir(new File("d:tempdir1")); //可同时将子目录及所有文件删除
5. delete.execute();


注:对每一个Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必须设置一个Project对象,可以几个Ant Task共用一个Project对象,但不能有Ant Task不设置Project对象。
2. 文件拷贝和移动、更名
1)文件copy

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //将f1.txt文件copy到dir1中


2)copy文件并同时替换其中的内容, 如将 xml中的 @eosapp_name@ 替换成真正的应用名称

1. Project prj=new Project();
2. Copy copy = new Copy();
3. copy.setEncoding("UTF-8");
4. copy.setProject(prj);
5. copy.setTodir("d:temp");
6.
7. FileSet fileSet=new FileSet();
8. fileSet.setDir(new File(eosHome "/base/template.app"));
9. fileSet.setIncludes("**/*.xml");
10. copy.addFileset(fileSet);
11.
12. FilterSet filter=copy.createFilterSet();
13. filter.addFilter("eosapp_name","app1");
14. copy.execute();


2)文件或目录移动
Move的用法和Copy用法基本一致,Move本身为Copy的子类。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempdir1"));
6. copy.execute(); //将f1.txt文件移动到dir1中


3)文件改名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempf1.txt");
5. copy.setTodir(new File("d:tempf2.txt"));
6. copy.execute(); //将f1.txt文件更名为f2.txt中


4)目录更名:

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setFile(new File("d:tempdir1");
5. copy.setTodir(new File("d:tempdir2"));
6. copy.execute(); //将dir1目录更名为dir2,相当于将dir1目录下的所有文件移到dir2目录下


3.使用文件集 FileSet
使用文件集可以同时将多个满足匹配条件的文件集合进行copy、move和压缩等操作。

1. Project prj=new Project();
2. Copy copy=new Copy();
3. copy.setProject(prj);
4. copy.setTodir(new File("d:temptodir"));
5.
6. FileSet fs=new FileSet();
7. fs.setProject(prj);
8. fs.setDir(new File("d:javaprjsrc"));
9. fs.setIncludes("**/*.*"); //包含所有文件
10. fs.setExcludes("**/CVS,**/*.class"); //排除CVS相关文件,以及.class文件
11. copy.addFileset(fs);
12.
13. copy.execute();


注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。
4.目录扫描,查找文件

1. DirectoryScanner ds=new DirectoryScanner();
2. ds.setBasedir(new File("d:tempwar"));
3. ds.setIncludes(new String[] );
4. ds.scan();
5. if(ds.getIncludedFilesCount()>0) {
6. System.out.println("found jsp!");
7. String[] includeFiles=ds.getIncludedFiles();
8. for(String file:includeFiles){
9. System.out.println(file);
10. }
11. }


5.文件压缩,打包
//压缩为zip文件

1. Project prj=new Project();
2. Zip zip=new Zip();
3. zip.setProject(prj);
4. zip.setDestFile(new File("d:tempsrc.zip"));
5. FileSet fileSet=new FileSet();
6. fileSet.setProject(prj);
7. fileSet.setDir(new File("d:javaprjprj1src"));
8. fileSet.setIncludes("**/*.java");
9. zip.addFileset(fileSet);
10. zip.execute();
11.
12. //将class文件打成jar包
13. Project prj=new Project();
14. Jar jar=new Jar();
15. jar.setProject(prj);
16. jar.setDestFile(new File("d:tempprj1.jar"));
17. FileSet fileSet=new FileSet();
18. fileSet.setProject(prj);
19. fileSet.setDir(new File("d:javaprjprj1bin"));
20. fileSet.setIncludes("**/*.class,**/*.properties");
21. jar.addFileset(fileSet);
22. jar.execute();


6.文件解压
1)将压缩文件中的所有文件解压

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. expand.execute();


2)将压缩文件中的符合匹配条件的文件解压

1. Project prj=new Project();
2. Expand expand=new Expand();
3. expand.setProject(prj);
4. expand.setSrc(new File("d:tempsrc.zip"));
5. expand.setOverwrite(overwrite);
6. expand.setDest("d:tempoutsrc");
7. PatternSet patternset = new PatternSet();
8. patternset.setIncludes("**/*.java");
9. patternset.setProject(prj);
10. expand.addPatternset(patternset);
11. expand.execute();


3)利用Mapper解压文件: 如将 .../lib/*.jar 解压到 .../WEB-INF/lib目录下(去除目录结构)

1. Expand expand = new Expand();
2. expand.setProject(prj);
3. expand.setSrc(new File(zipFilePath));
4. expand.setDest(new File(webDir "/WEB-INF/lib"));
5.
6. PatternSet pattern = new PatternSet();
7. pattern.setIncludes("lib/*.jar");
8. expand.addPatternset(pattern);
9.
10. FileNameMapper mapper=new FlatFileNameMapper();
11. expand.add(mapper);
12.
13. /* another way using mapper
14. Mapper mapper=expand.createMapper();
15. MapperType type=new MapperType();
16. type.setValue("flatten");
17. mapper.setType(type);
18. */
19. expand.execute();


7.读取zip文件
1) 读取zip文件中的文件和目录

1. ZipFile zipfile = new ZipFile(new File(filepath));
2. for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) {
3. ZipEntry entry = (ZipEntry) entries.nextElement();
4. if(entry.isDirectory())
5. System.out.println("Directory: " entry.getName());
6. else
7. System.out.println("file: " entry.getName());
8. }
9. zipfile.close(); //ZipFile用完必须close,否则文件被锁定


2)zip文件扫描,在Zip文件中查找目录或文件

1. ZipScanner scan=new ZipScanner();
2. scan.setSrc(new File("d:temptest.zip"));
3. scan.setIncludes(new String[] ); //查找目录(一、二级目录);
4. scan.scan();
5. String dirs[]=scan.getIncludedDirectories();
6. scan.setIncludes(new String[]); //查找文件
7. scan.scan();
8. String files[]=scan.getIncludedFiles();

 

(转自:http://www.chinaaet.com/article/9809

 

分享到:
评论

相关推荐

    Java调用Ant API用法收集

    首先,要使用Java调用Ant API,你需要在项目中引入Apache Ant的库。通常,这通过添加以下Maven依赖完成: ```xml <groupId>org.apache.ant <artifactId>ant <version>1.10.x</version> <!-- 使用最新的版本号 -...

    Java 代码调用ANT

    ### Java 代码调用 ANT 的方法与实践 #### 一、引言 在软件开发过程中,构建工具扮演着至关重要的角色。Apache Ant 是一个流行的 Java 平台上的构建工具,它提供了一种灵活的方式来自动化构建过程。通过 XML 文件...

    java 调用https webservice实例及axis包

    6. **文档和资源**:"doc"目录可能包含Axis的API文档,帮助理解如何使用相关类和方法。"res"目录可能包含证书文件或者其他的资源,例如自签名证书,用于测试环境。 在实际开发中,你还需要了解和处理如证书链、信任...

    ANT api(chm)

    Ant API允许开发者在Java程序中直接调用Ant的功能,创建自定义任务或在非命令行环境中使用Ant。主要的API类包括: - `Project`: 表示整个构建项目的上下文,包含所有属性、目标、任务等信息。 - `Task`: 表示一个...

    用Java访问Twitter的API接口

    1. `twitter4j-2.0.10-javadoc.jar`:这是Twitter4J的Java文档,包含了所有类和方法的详细说明,对于开发者来说,它是理解和使用API的重要参考。 2. `twitter4j-2.0.10.jar`:这是Twitter4J的核心库文件,包含了...

    java编程式启动ant

    Java编程式启动Ant是一种在Java程序中调用Apache Ant工具执行构建任务的方法。Apache Ant是一个基于Java的任务驱动的构建系统,常用于自动化Java项目的编译、打包、测试等任务。以下将详细介绍如何通过Java代码来...

    java代码调用ant执行类

    project.setName("Java调用Ant示例"); ``` 3. **加载Ant构建文件**: 使用`ProjectHelper`加载XML格式的Ant构建文件。构建文件定义了Ant任务和目标。 ```java File buildFile = new File("path_to_your_build...

    第 1 部分: 引入 Java 脚本 API

    综上所述,"第 1 部分: 引入 Java 脚本 API" 主题涵盖了在Java应用程序中集成和使用脚本引擎的关键概念,包括添加依赖、执行脚本、与脚本环境交互,以及如何在实际项目中通过构建工具如Ant或Maven进行配置。...

    5-5+Ray的Java+API+与跨语言编程.pdf

    针对Java开发者的需求,Ray推出了Java API,使得Java开发者也能充分利用Ray构建分布式应用。其设计原则包括: - **基于Ray的基本概念**:任务(远程函数)和演员(Actor)。 - **与Python API保持一致**:确保Java...

    outlook带会议提醒javaDemo

    2. JACOB库文件(如jacob.jar):这是Java调用COM对象所需的库文件,需要在项目的类路径中添加。 3. 构建脚本(如build.xml):如果是使用Ant或Maven构建项目,这里可能会有构建脚本来编译和打包Java代码。 4. 配置...

    java调用ireport生成word报告

    通过上述步骤,我们可以轻松地使用Java调用iReport工具来生成Word报告。此外,对于需要生成Excel或PDF格式的报告,只需对上述Java代码中的导出部分稍作调整即可。这种方法不仅提高了报表生成的效率,还大大简化了...

    JAVA游戏API

    9. **README**:此文件通常提供项目的基本介绍、安装指南、使用方法和开发者信息,是新用户了解项目和开始使用的入口。 通过这些知识点,我们可以看出【JAVA游戏API】项目已经迈出了构建一个功能齐全、可扩展的游戏...

    Ant 1.9.2 API (CHM格式)

    Ant功能强大的地方在于,程序员不仅能通过编写Ant的脚本(build.xml)来进行各种文件部署管理操作,还可以通过调用Ant的丰富的API,甚至扩展Ant的API进行编程。 1. 目录操作: 1) 创建目录 1. Project prj=new ...

    java如何与脚本(javaScript)之间相互调用二

    标题“Java如何与脚本(JavaScript)之间相互调用二”主要探讨的是在Java应用程序中如何集成和调用JavaScript代码,以及反过来JavaScript如何调用Java的功能。这涉及到跨语言交互的技术,通常通过Java的ScriptEngine...

    Java develop with ant书中代码

    9. **外部工具集成**:Ant不仅可以调用Java任务,还可以调用系统命令行工具,如JavaDoc生成API文档,或者使用ProGuard进行代码混淆。 10. **目标依赖关系**:Ant的目标可以相互依赖,通过`depends`属性定义先执行...

    7_ant_junit和ant的整合(非常重要)

    测试类应包含各种测试方法,这些方法使用JUnit的断言(如`assertEquals`、`assertTrue`)来验证代码的行为。 3. **配置Ant构建文件**:打开Ant的build.xml文件,添加JUnit任务。这通常包括`<junit>`元素,其中可以...

    ant脚本资料ant

    通过阅读`命令.txt`、`ant知识.txt`、`ant构建Java.txt`、`ant例子.txt`这些文件,你可以深入了解Ant的使用方法,包括命令行调用、具体的构建步骤、Java项目构建实例以及各种任务的实践应用。这些资料将帮助你掌握...

    Java使用asix调用webService源码+jar包

    本资源聚焦于使用Java语言通过Apache Axis(ASIX)框架来调用Web Service的方法。Apache Axis是Apache软件基金会开发的一个开源工具,专门用于构建和部署Web Services。 首先,理解Web Service的基本概念至关重要。...

    ant发送邮件依赖jar包.rar

    邮件发送功能在Java中通常是通过JavaMail API实现的,而Ant则可以通过调用JavaMail API的相关任务来完成这一操作。 首先,JavaMail API是一个开放源代码的Java库,它提供了发送和接收电子邮件的标准API。要使用...

Global site tag (gtag.js) - Google Analytics