`
krs
  • 浏览: 124739 次
  • 性别: 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进行文件部署操作等常用的用法。

    Ant 1.9.2 API (CHM格式)

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

    Java代码检查工具PMD

     2、未调用的代码,例如没有使用的局部变量、参数和私有方法  3、未优化的代码,例如String的不正确使用  4、过于复杂的表达式,没有必要的表达式循环,判断  5、重复代码  PMD支持的编辑器包括:  JDeveloper...

    Java通用代码生成实用程序XDoclet(源码包)

    XDoclet 是一个通用的代码生成实用程序,是一个扩展的Javadoc Doclet引擎,它允许您使用象 JavaDoc 标记之 类的东西来向诸如类、方法和字段之类的语言特征添加元数据。随后,它利用这些额外的元数据来生成诸如部署...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    所使用的应用服务器是jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。  本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,...

    禁止API:警察的禁止API检查器

    警察的禁止API检查器允许解析Java字节码以查找方法/类/字段签名的调用,并导致构建失败(Apache Ant,Apache Maven或Gradle)。文献资料请参阅Github 。 该检查器可作为Apache Ant Task,Apache Maven Mojo和Gradle...

    swing界面设计之JTree

    (四) JTree的使用方法 57 JTreeDemo.java源程序 57 经验汇总 60 1. 初始化 60 2. 三个经常使用的取值函数 60 3. 根据node得到path: 60 4. 根据Path展开到该节点 60 5. 根据path设定该节点选定 61 6. 选中节点的方法...

    pro_android_cpp_with_the_ndk.pdf

    4.8 从原生代码中调用Java 4.8.1 异步通信 4.8.2 启用Directors 4.8.3 启用RTTI 4.8.4 重写回调方法 4.8.5 更新HeIIojniActivity 4.9 小结 第5章 日志、调试及故障处理 5.1 日志 5.1.1 框架 5.1.2 原生日志API ...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    Java学习笔记-个人整理的

    {1.12}Java API}{41}{section.1.12} {1.13}Linux命令}{41}{section.1.13} {1.13.1}基本查看、移动}{41}{subsection.1.13.1} {1.13.2}权限}{42}{subsection.1.13.2} {1.13.3}打包备份与恢复}{42}{subsection....

    自己平时做的android相关的总结

    Ndk的使用方法: Ant 与 android update project 命令行只有在非根盘符上才能运行 android Launcher Android 运行环境搭建 Android:name什么时候加”.” Activity class {package/class} does not exist 问题的解决 ...

    Spring in Action(第二版 中文高清版).part2

    5.5 Spring和Java持久API 5.5.1 使用JPA模板 5.5.2 创建一个实体管理器工厂 5.5.3 建立使用JPA的DAO 5.6 Spring和iBATIS 5.6.1 配置iBATIS客户模板 5.6.2 建立基于iBATIS的DAO 5.7 缓存 5.7.1 配置缓存...

    Spring in Action(第二版 中文高清版).part1

    5.5 Spring和Java持久API 5.5.1 使用JPA模板 5.5.2 创建一个实体管理器工厂 5.5.3 建立使用JPA的DAO 5.6 Spring和iBATIS 5.6.1 配置iBATIS客户模板 5.6.2 建立基于iBATIS的DAO 5.7 缓存 5.7.1 配置缓存...

    Spring-Reference_zh_CN(Spring中文参考手册)

    Ant风格的pattern 4.7.2.2. classpath*: 前缀 4.7.2.3. 其他关于通配符的说明 4.7.3. FileSystemResource 提示 5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 ...

    Spring in Action(第2版)中文版

    5.5spring和java持久api 5.5.1使用jpa模板 5.5.2创建一个实体管理器工厂 5.5.3建立使用jpa的dao 5.6spring和ibatis 5.6.1配置ibatis客户模板 5.6.2建立基于ibatis的dao 5.7缓存 5.7.1配置缓存方案 5.7.2...

    Android UI组件实例集合

    使用方法:1-把GifView.jar加入你的项目。2-在xml中配置GifView的基本属性,GifView继承自View类,和Button、ImageView一样是一个UI控件。 如: <com.ant.liao.GifView android:id="@+id/gif2" android:layout_...

    fckedit编辑器

    编辑器 FCKeditor2.4 使用说明 .下载 FCKeditor2.3 (FCKeditot for java) FCKeditor2.4 (FCKeditor基本文件) 以下是下载地址: http://www.fckeditor.net/download/default.html 2.建立项目: 建立项目tomcat...

Global site tag (gtag.js) - Google Analytics