`
夜乡晨
  • 浏览: 36360 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java调用Ant API用法收集

阅读更多
Java调用Ant API用法收集
开发者在线 Builder.com.cn 更新时间:2008-04-07作者:陈光耀 来源:IT专家网
本文关键词: 用法 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-1.10.1-API文档-中文版.zip

    赠送jar包:ant-1.10.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    ant-1.9.1-API文档-中文版.zip

    赠送jar包:ant-1.9.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Ant 1.9.2 API (CHM格式)

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

    ant-1.10.1-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    Java代码检查工具PMD

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

    JCreator 小型java开发工具

    可无限撤销、代码缩进、自动类库方法提示、按所选智能定位查阅JavaAPI文档等功能。  2.新版采用仿VS2005界面设计,体验感觉更快更好更易用。  3.支持JSP、Ant、CVS。  4.小巧、易用、美观,是Java初级程序员的...

    完全免费的Java/jsp开发编辑工具FirstJava2

    对初学者来说,使用方法过于复杂,如果你编译200个java文件,编译速度太慢,需要好长时间. Eclipse和Jbuild编辑辅助方式,显示的内容太多了,眼都看花了. 当你使用FirstJava2你会发现,它速度很快,功能简单,管用,反应敏捷,...

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

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

    java二进制补码源码-authy-java:TwilioAuthy两因素身份验证(2FA)API的Java客户端

    API的Java使用情况的文档,请参见。 Authy API支持2FA的多个渠道: 通过短信和语音的一次性密码。 软令牌(通过Authy App) 通过Authy App进行推送身份验证 如果您只需要一次性短信的SMS和语音支持,则建议您改用一...

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

    XDoclet 是一个通用的代码生成实用程序,是一个扩展的Javadoc Doclet引擎,它允许您使用象 JavaDoc 标记之 类的东西来向诸如类、方法...这样,我们就能在使用ant编译工程的同时,使Xdoclet为我们生成相关的配置文件了。

    dave-java-captools:用Java编写的Captricity API客户端

    使用说明该代码是针对Java 1.8.0_40构建的,并使用ant 1.9.4作为构建工具。 在目录的底部,键入ant jar基本目录中将生成一个名为captricity-1.1.jar的jar文件。 将captricity-1.1.jar文件复制/移动到您的类路径中。 ...

    FirstJava2完全教材

    对初学者来说,使用方法过于复杂,如果你编译200个java文件,编译速度太慢,需要好长时间. Eclipse和Jbuild编辑辅助方式,显示的内容太多了,眼都看花了. 当你使用FirstJava2你会发现,它速度很快,功能简单,管用,反应敏捷,...

    软件工程师Java班课程

    设计基础 J2sdk基础、Java 面向对象基础、Java API使用、数据结构及算法基础、Java高级类特性、异常处理。 掌握Java语言规范、面向对象编程基础(OOA/OOP) J2SE平台Java程序设计 Java AWT图形界面程序开发,Swing...

    Java语言基础下载

    构造方法在继承中的使用 96 super关键字 97 包装类 97 toString( )方法 100 内容总结 101 独立实践 102 第七章:类的高级特征 103 学习目标 103 static关键字 104 final关键字 106 内部类 106 实例分析 110 抽象类,...

    jocky 混肴编译rar包(ant和插件俩个版本)

    事实上,即便不加@preserve指令,Jocky对Java语言特有的一些private级别的方法不进行混淆,譬如,在序列化时有特殊作用的writeObject及readObject方法等。但笔者强烈建议: 针对这些有特殊含义不...

    精通Struts基于MVC的Java Web设计与开发 孙卫琴 光盘

    内容推荐 Struts是目前非常流行的基于MVC的Java ...第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试Struts应用项目。

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

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

    java 混淆工具,不可逆 jocky 也许是最好的了

    使用Jocky非常简单,获得jocky.jar以后,只需要运行java -jar jocky.jar就可以启动Jocky混淆编译器,jocky的命令行参数和javac完全相同,但增加了一个新的参数-scramble,它的用法如下: -scramble 混淆所有...

Global site tag (gtag.js) - Google Analytics