`

java调用ant的api

阅读更多
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:\\temp\\dir1")); 
mkdir.execute(); 

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

注:对每一个Ant Task,如Mkdir,Delete、Copy、Move、Zip等,都必须设置一个Project对象,可以几个Ant Task共用一个Project对象,但不能有Ant Task不设置Project对象。
2. 文件拷贝和移动、更名
1)文件copy
Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:\\temp\\f1.txt"); 
copy.setTodir(new File("d:\\temp\\dir1")); 
copy.execute(); //将f1.txt文件copy到dir1中


2)copy文件并同时替换其中的内容, 如将 xml中的 @eosapp_name@ 替换成真正的应用名称
Project prj=new Project(); 
Copy copy = new Copy(); 
copy.setEncoding("UTF-8"); 
copy.setProject(prj); 
copy.setTodir("d:\\temp"); 

FileSet fileSet=new FileSet(); 
fileSet.setDir(new File(eosHome+"/base/template.app")); 
fileSet.setIncludes("**/*.xml"); 
copy.addFileset(fileSet); 

FilterSet filter=copy.createFilterSet(); 
filter.addFilter("eosapp_name","app1"); 
copy.execute(); 

2)文件或目录移动Move的用法和Copy用法基本一致,Move本身为Copy的子类。
Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:\\temp\\f1.txt"); 
copy.setTodir(new File("d:\\temp\\dir1")); 
copy.execute(); //将f1.txt文件移动到dir1中 

3)文件改名:
Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:\\temp\\f1.txt"); 
copy.setTodir(new File("d:\\temp\\f2.txt")); 
copy.execute(); //将f1.txt文件更名为f2.txt中 

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

3.使用文件集 FileSet使用文件集可以同时将多个满足匹配条件的文件集合进行copy、move和压缩等操作。
Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setTodir(new File("d:\\temp\\todir")); 

FileSet fs=new FileSet(); 
fs.setProject(prj); 
fs.setDir(new File("d:\\javaprj\\src")); 
fs.setIncludes("**/*.*"); //包含所有文件 
fs.setExcludes("**/CVS,**/*.class"); //排除CVS相关文件,以及.class文件 
copy.addFileset(fs); 

copy.execute(); 

注: FileSet的setIncludes, 和setExcludes方法输入pattern, pattern是一个使用“,”或空格分隔的匹配字符串,其中, “**”代表所有文件或目录,“*.*”代表说有文件, “*.java”代表所有扩展名为java的文件。
4.目录扫描,查找文件
DirectoryScanner ds=new DirectoryScanner(); 
ds.setBasedir(new File("d:\\temp\\war")); 
ds.setIncludes(new String[] {"**/*.jsp"}); 
ds.scan(); 
if(ds.getIncludedFilesCount()>0) { 
System.out.println("found jsp!"); 
String[] includeFiles=ds.getIncludedFiles(); 
for(String file:includeFiles){ 
System.out.println(file); 
} 
} 

5.文件压缩,打包//压缩为zip文件
Project prj=new Project(); 
Zip zip=new Zip(); 
zip.setProject(prj); 
zip.setDestFile(new File("d:\\temp\\src.zip")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:\\javaprj\\prj1\\src")); 
fileSet.setIncludes("**/*.java"); 
zip.addFileset(fileSet); 
zip.execute(); 

//将class文件打成jar包 
Project prj=new Project(); 
Jar jar=new Jar(); 
jar.setProject(prj); 
jar.setDestFile(new File("d:\\temp\\prj1.jar")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:\\javaprj\\prj1\\bin")); 
fileSet.setIncludes("**/*.class,**/*.properties"); 
jar.addFileset(fileSet); 
jar.execute(); 


6.文件解压1)将压缩文件中的所有文件解压
Project prj=new Project(); 
Expand expand=new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File("d:\\temp\\src.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:\\temp\\out\\src"); 
expand.execute(); 


2)将压缩文件中的符合匹配条件的文件解压
Project prj=new Project(); 
Expand expand=new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File("d:\\temp\\src.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:\\temp\\out\\src"); 
PatternSet patternset = new PatternSet(); 
patternset.setIncludes("**/*.java"); 
patternset.setProject(prj); 
expand.addPatternset(patternset); 
expand.execute();


3)利用Mapper解压文件: 如将 .../lib/*.jar 解压到 .../WEB-INF/lib目录下(去除目录结构)
Expand expand = new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File(zipFilePath)); 
expand.setDest(new File(webDir+"/WEB-INF/lib")); 

PatternSet pattern = new PatternSet(); 
pattern.setIncludes("lib/*.jar"); 
expand.addPatternset(pattern); 

FileNameMapper mapper=new FlatFileNameMapper(); 
expand.add(mapper); 

/* another way using mapper 
Mapper mapper=expand.createMapper(); 
MapperType type=new MapperType(); 
type.setValue("flatten"); 
mapper.setType(type); 
*/ 
expand.execute();


7.读取zip文件1) 读取zip文件中的文件和目录
ZipFile zipfile = new ZipFile(new File(filepath)); 
for (Enumeration entries = zipfile.getEntries(); entries.hasMoreElements();) { 
ZipEntry entry = (ZipEntry) entries.nextElement(); 
if(entry.isDirectory()) 
System.out.println("Directory: "+entry.getName()); 
else 
System.out.println("file: "+entry.getName()); 
} 
zipfile.close(); //ZipFile用完必须close,否则文件被锁定


2)zip文件扫描,在Zip文件中查找目录或文件
ZipScanner scan=new ZipScanner(); 
scan.setSrc(new File("d:\\temp\\test.zip")); 
scan.setIncludes(new String[] {"*","*/*"}); //查找目录(一、二级目录); 
scan.scan(); 
String dirs[]=scan.getIncludedDirectories(); 
scan.setIncludes(new String[]{"**/*.xml"}); //查找文件 
scan.scan(); 
String files[]=scan.getIncludedFiles(); 
分享到:
评论

相关推荐

    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 的 API 来实现的。具体来说,主要涉及以下几个步骤: 1. **初始化 Project 对象**:创建 `Project` 实例是使用 Ant API 的第一步。`Project` 类代表了一个构建项目,...

    使用Ant进行java开发

    4. Ant的任务和目标:学习如何编写和使用Ant预定义的任务,如(编译Java源代码)、(创建jar文件)、(复制文件或目录)、(执行外部程序)等。目标是Ant中任务执行的最小单位,一个构建文件可以包含多个目标,目标...

    ANT api(chm)

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

    java的Ant打包工具

    Java的Ant打包工具是开发过程中不可或缺的一部分,尤其在构建、部署和自动化任务管理方面发挥着重要作用。Ant是由Apache软件基金会开发的一个开源项目,其设计灵感来源于Make,但使用XML来描述构建过程,使得构建...

    Apache Ant API----下载

    Apache Ant API是构建Java应用程序的重要工具,它是一个由Apache软件基金会开发的开源项目。Ant以其XML为基础的任务定义和依赖管理,使得自动化构建过程变得简单而灵活。本篇将深入探讨Apache Ant及其API的核心概念...

    ant的api,安装操作说明文档,和个人编辑过的build文件

    3. `java_ant详解.doc`:这份文档可能包含了关于如何在Java项目中使用Ant的详细教程和示例。 通过学习和理解这些资源,你可以更高效地利用Ant进行项目构建,提高开发效率。无论是简单的Java应用还是复杂的构建流程...

    用Java访问Twitter的API接口

    本文将深入探讨如何使用Java通过Twitter4J库来访问Twitter的API接口。 首先,Twitter4J是一个Java库,专门设计用于简化Java开发者与Twitter API之间的交互。它提供了一系列的类和方法,使得我们能够方便地执行各种...

    java编程式启动ant

    Java编程式启动Ant是一种在Java程序中调用Apache Ant工具执行构建任务的方法。Apache Ant是一个基于Java的...通过理解Ant的构建文件结构和Java API的使用,我们可以实现复杂的构建逻辑,更好地管理Java项目的构建过程。

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

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

    java zip 压缩 解压缩 附带ant.jar

    在本主题中,我们将深入探讨如何使用Java来对文件进行zip压缩和解压缩,并提及`ant.jar`的作用。 首先,让我们来看一下`JavaZip.java`这个文件。它很可能包含了一个示例程序,演示了如何使用Java API来压缩和解压缩...

    第 1 部分: 引入 Java 脚本 API

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

    java开发API

    理解并熟练使用Java API是成为一名合格Java开发者的必备条件。 2. **Oracle**:Oracle是一种流行的、功能强大的关系型数据库管理系统(RDBMS)。它支持大规模数据存储和处理,广泛应用于企业级应用。开发者需要掌握...

    Using-Java-API-of-Ant:Using Java API of Ant 是一个小项目,展示了如何使用 Ant Build Tool 的 Java API 在运行时使用 Java 平台构建 Java 项目

    #使用Ant的Java API Using Java API of Ant 是一个迷你项目,展示了如何使用 Ant Build Tool 的 Java API 在运行时使用 Java 平台构建 Java 项目。 它展示了如何使用 Java POJO 代码即时构建另一个 Java 项目,甚至...

    ANT打包命令详解api指令

    首先,`api`指令在ANT中并不常见,可能是指使用ANT来处理或调用特定API的过程。然而,通常在`build.xml`文件中,我们看到的是如`copy`、`javac`、`jar`、`java`等基本任务,它们分别对应于文件复制、Java源码编译、...

    基于Java的源码-调用远程API规范 XINS.zip

    这个“基于Java的源码-调用远程API规范 XINS.zip”文件包含了使用Java编程语言实现XINS规范的相关代码和资源,旨在帮助开发者理解如何在Java环境中规范地调用远程API。 XINS的主要特点包括: 1. **XML定义**:XINS...

    JAVA-ANT-Streamline-Source-Code.zip_streamline

    4. **文档**:可能包含精简后的API文档或开发者指南,帮助用户理解如何使用和修改ANT。 5. **测试代码**:尽管已进行了精简,但保留一部分测试代码仍然很重要,因为它们可以验证功能是否正确,并为开发者提供编写...

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

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

    org.apache.tools.*需要的ant.jar包

    2. **Java调用Ant** - **Apache Ant API**:通过引入`ant.jar`,Java代码可以直接与Ant交互。首先,需要创建`Project`对象来加载构建文件,然后使用`Project`实例来执行目标(target)。 - **示例代码**: ```...

Global site tag (gtag.js) - Google Analytics