java调用ant工具

简介:

java调用ant

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:\\temp\\dir1"));

  5. mkdir.execute();


2) 删除目录

  1. Project prj=new Project();

  2. Delete delete=new Delete();

  3. delete.setProject(prj);

  4. delete.setDir(new File("d:\\temp\\dir1")); //可同时将子目录及所有文件删除

  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:\\temp\\f1.txt");

  5. copy.setTodir(new File("d:\\temp\\dir1"));

  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. FileSet fileSet=new FileSet();

  7. fileSet.setDir(new File(eosHome+"/base/template.app"));

  8. fileSet.setIncludes("**/*.xml");

  9. copy.addFileset(fileSet);

  10. FilterSet filter=copy.createFilterSet();

  11. filter.addFilter("eosapp_name","app1");

  12. 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:\\temp\\f1.txt");

  5. copy.setTodir(new File("d:\\temp\\dir1"));

  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:\\temp\\f1.txt");

  5. copy.setTodir(new File("d:\\temp\\f2.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:\\temp\\dir1");

  5. copy.setTodir(new File("d:\\temp\\dir2"));

  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:\\temp\\todir"));

  5. FileSet fs=new FileSet();

  6. fs.setProject(prj);

  7. fs.setDir(new File("d:\\javaprj\\src"));

  8. fs.setIncludes("**/*.*"); //包含所有文件

  9. fs.setExcludes("**/CVS,**/*.class"); //排除CVS相关文件,以及.class文件

  10. copy.addFileset(fs);

  11. copy.execute();


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

  1. DirectoryScanner ds=new DirectoryScanner();

  2. ds.setBasedir(new File("d:\\temp\\war"));

  3. ds.setIncludes(new String[] {"**/*.jsp"});

  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:\\temp\\src.zip"));

  5. FileSet fileSet=new FileSet();

  6. fileSet.setProject(prj);

  7. fileSet.setDir(new File("d:\\javaprj\\prj1\\src"));

  8. fileSet.setIncludes("**/*.java");

  9. zip.addFileset(fileSet);

  10. zip.execute();

  11. //将class文件打成jar包

  12. Project prj=new Project();

  13. Jar jar=new Jar();

  14. jar.setProject(prj);

  15. jar.setDestFile(new File("d:\\temp\\prj1.jar"));

  16. FileSet fileSet=new FileSet();

  17. fileSet.setProject(prj);

  18. fileSet.setDir(new File("d:\\javaprj\\prj1\\bin"));

  19. fileSet.setIncludes("**/*.class,**/*.properties");

  20. jar.addFileset(fileSet);

  21. jar.execute();


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

  1. Project prj=new Project();

  2. Expand expand=new Expand();

  3. expand.setProject(prj);

  4. expand.setSrc(new File("d:\\temp\\src.zip"));

  5. expand.setOverwrite(overwrite);

  6. expand.setDest("d:\\temp\\out\\src");

  7. expand.execute();


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

  1. Project prj=new Project();

  2. Expand expand=new Expand();

  3. expand.setProject(prj);

  4. expand.setSrc(new File("d:\\temp\\src.zip"));

  5. expand.setOverwrite(overwrite);

  6. expand.setDest("d:\\temp\\out\\src");

  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. PatternSet pattern = new PatternSet();

  6. pattern.setIncludes("lib/*.jar");

  7. expand.addPatternset(pattern);

  8. FileNameMapper mapper=new FlatFileNameMapper();

  9. expand.add(mapper);

  10. /* another way using mapper

  11. Mapper mapper=expand.createMapper();

  12. MapperType type=new MapperType();

  13. type.setValue("flatten");

  14. mapper.setType(type);

  15. */

  16. 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:\\temp\\test.zip"));

  3. scan.setIncludes(new String[] {"*","*/*"}); //查找目录(一、二级目录);

  4. scan.scan();

  5. String dirs[]=scan.getIncludedDirectories();

  6. scan.setIncludes(new String[]{"**/*.xml"}); //查找文件

  7. scan.scan();

  8. String files[]=scan.getIncludedFiles();

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt246
相关文章
|
1月前
|
监控 Java 测试技术
Java开发现在比较缺少什么工具?
【10月更文挑战第15天】Java开发现在比较缺少什么工具?
36 1
|
1天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
126 82
|
27天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
27天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
30天前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
|
1月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
38 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
47 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
1月前
|
Java C++
做了个Java打包工具,可以双击启动了!
本文介绍了作者日常使用Java和Swing进行开发的经验,以及Java程序分发时遇到的问题,如需要JRE环境。文中列举了几种常见的Java程序打包方法,并对比了各自的优缺点,最后作者结合这些方案,利用Winform开发了一款工具,将Java程序打包成二进制可执行文件,简化了分发流程。
做了个Java打包工具,可以双击启动了!
|
1月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
55 2
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
81 5
下一篇
无影云桌面