Java調用Ant API用法

Java調用Ant API用法 
用法 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)  刪除目錄 


Project prj=new Project(); 
Delete delete=new Delete(); 
delete.setProject(prj); 
delete.setDir(new File("d:tempdir1")); //可同時將子目錄及全部文件刪除 
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:tempf1.txt"); 
copy.setTodir(new File("d:tempdir1")); 
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:tempf1.txt"); 
copy.setTodir(new File("d:tempdir1")); 
copy.execute(); //將f1.txt文件移動到dir1中 

3)文件更名: 


Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempf1.txt"); 
copy.setTodir(new File("d:tempf2.txt")); 
copy.execute(); //將f1.txt文件改名爲f2.txt中 

4)目錄改名: 


Project prj=new Project(); 
Copy copy=new Copy(); 
copy.setProject(prj); 
copy.setFile(new File("d:tempdir1"); 
copy.setTodir(new File("d:tempdir2")); 
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:temptodir")); 

FileSet fs=new FileSet(); 
fs.setProject(prj); 
fs.setDir(new File("d:javaprjsrc")); 
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:tempwar")); 
ds.setIncludes(new String[] ); 
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:tempsrc.zip")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:javaprjprj1src")); 
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:tempprj1.jar")); 
FileSet fileSet=new FileSet(); 
fileSet.setProject(prj); 
fileSet.setDir(new File("d:javaprjprj1bin")); 
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:tempsrc.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:tempoutsrc"); 
expand.execute(); 

2)將壓縮文件中的符合匹配條件的文件解壓 


Project prj=new Project(); 
Expand expand=new Expand(); 
expand.setProject(prj); 
expand.setSrc(new File("d:tempsrc.zip")); 
expand.setOverwrite(overwrite); 
expand.setDest("d:tempoutsrc"); 
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:temptest.zip")); 
scan.setIncludes(new String[] ); //查找目錄(1、二級目錄); 
scan.scan(); 
String dirs[]=scan.getIncludedDirectories(); 
scan.setIncludes(new String[]); //查找文件 
scan.scan(); 
String files[]=scan.getIncludedFiles();
java

相關文章
相關標籤/搜索