Ant學習總結


一、Ant介紹


Ant是Java的生成工具,是Apache的核心項目;直接在apache官網下載即可;

Ant類似於Unix中的Make工具,都是用來編譯、生成;

Ant是跨平臺的,而Make不能;

Ant的主要目的就是把你想做的事情自動化,不用你手動一步一步做,因爲裏面內置了javac、java、創建目錄、複製文件等功能,所以可以直接點擊Ant文件,即可編譯生成你的項目;

下載地址: http://ant.apache.org/bindownload.cgi  


二、Ant配置


在Ant安裝之前需要安裝好JDK,並配置好JAVA_HOME;

Ant配置:

1.新建環境變量ANT_HOME:值爲ANT的主目錄;

2.在path中配置%ANT_HOME%/bin

配置完成之後,打開命令行,輸入ant,當出現:

Buildfile: build.xml does not exist!
Build failed

時說明配置完成;


三、Ant入門


ant的默認生成文件爲build.xml;輸入ant後,ant會在當前目錄下搜索是否有build.xml,如果有,則執行;當然也可以自定義生成文件,通過ant -f a.xml即可指定a.xml爲生成文件;

ant的生成文件是xml文件,整體結構爲:

  1. <?xml version=“1.0” encoding=“GBK”?>  
  2. <project default=“ targetname”>  
  3.     <target name=“name”>  
  4.     </target>  
  5. </project>  
<?xml version="1.0" encoding="GBK"?>
<project default=" targetname">
    <target name="name">
    </target>
</project>

project是生成文件的根元素,表示一個工程;

target是project的子元素,表示一個任務;一個project中可以定義多個target元素,表示多個任務;

default屬性表示默認執行的target,如果ant命令沒有指定target,則執行default的target;

ant targetname;則會執行此target,而忽略default設置的target;

注意:不能有兩個相同的targetname;

代碼舉例:創建並刪除hello目錄;

  1. <?xml version=“1.0” encoding=“gbk”?>  
  2. <project default=“delete”>  
  3.     <property name=“name” value=“xiazdong”/>  
  4.     <target name=“delete” depends=“mkdir”>  
  5.         <delete dir={name}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"mkdir"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">" {name}”/>  
  6.     </target>  
  7. </project>  
<?xml version="1.0" encoding="gbk"?>
<project default="delete">
    <property name="name" value="xiazdong"/>
    <target name="delete" depends="mkdir">
        <delete dir="${name}"/>
    </target>
    <target name="mkdir">
        <mkdir dir="${name}"/>
    </target>
</project>


四、Ant的XML元素詳解


1.<project>元素


是Ant生成文件的根元素;一般形式如:

<project default=”    “[ basedir=”.” ] [name=”projectname”]>

default的值是默認執行的target名;

basedir是指定基準目錄,一般都是basedir=”.”

name是指工程名字;


2.<target>元素


是project元素的子元素,在project元素中能夠有多個target;一般形式如下:

<target name=”    “  [ depends=”  A  “]  [ if =”  prop1 “] [ unless=” prop2”]>

</target>

name表示target的名稱;

depends中填寫其他target名稱(可以有多個名稱,用逗號分割),表示只有targetA完成之後才能夠做此target,如果執行此target,則會先執行A;

if的值表示一個屬性名,只有設置了該屬性名,才能執行此target;

unless的值表示一個屬性名,只有沒有設置該屬性名,才能執行此target;


3.<property>元素


是project的子元素;property用於定義屬性,一般形如:

(1)<property name=”  pname  “   value=”  pvalue   “/>

如果要使用此property,則需要${pname};類似於表達式語言;

(2)<property file=”a.properties”/> 通過此屬性文件導入屬性;

如果單純想使用 $表示;


五、Task介紹


在Ant中Task是target的子元素,即一個target中可以有多個task;而Task分爲:

(1)核心Task;

(2)可選Task;

(3)自定義Task;

下面介紹一些常用的核心Task;


1.<echo>


用於單純輸出,一般形如:

<echo>      </echo>

舉例:<echo>hello</echo>


2.<javac>


用於編譯java文件,一般形式如下:

<javac srcdir=”  src   ”       destdir=”  class   “  [classpath=”     “]/>;

srcdir是編譯此文件夾下或子文件夾下的全部java文件;

destdir是編譯後的class文件放置路徑;

classpath指定第三方類庫;


3.<java>


運行java類,一般形式如下:

<Java classname=”    ” fork=”yes“>

    【<arg line=”param1   param2   param3”/>】

</java>

classname用於指定運行的類名稱;

fork=”yes”表示另起一個JVM來執行java命令,而不是中斷ANT命令,因此fork必須爲yes


4.<jar>


打包成jar包;一般形式如下:

<jar destfile=”  main.jar” basedir=”    “>

    <manifest>

        <attribute name=”Main-Class”   value=”classname”/>    <!–指定主類–>

    </manifest>

</jar>

destfiie的值爲jar包的名稱;一般爲${dest}/main.jar

basedir的值是需要打成jar包的目錄;一般爲${classes}

manifest表示設置META-INF;


5.<mkdir>


創建目錄,可以多層創建,比如a\b\c,則可以連續創建,一般形式如下:

<mkdir dir=”a\b”/>


6.<delete>


刪除目錄,一般形式如下:

<delete dir=”a\b”/> 可以刪除a目錄下的b目錄;

<delete file=”1.txt”/>可以刪除文件;


7.<tstamp>


時間戳,一般形式如下:

<tstamp />

接下來可以使用${DSTAMP}進行調用當前時間;


8.<copy>


複製文件,一般形式如下:

<copy file=”file1” tofile=”file2”/>

file是源文件;

tofile是目標文件;


9.<move>


移動文件,一般形式如下:

<move file=”file1” tofile=”file2”/>

file是源文件;

tofile是目標文件;


10.<replace>


 用於替換字符串,類似於String的replace操作,一般形式如下:

<replace file=”filename” token=”old” value=”new”/>

file表示要執行替換的文件;

token表示被替換的字符串;

value表示替換的字符串;


代碼舉例:一般項目中的ant結構

  1. <project default=“init”>  
  2.     <property name=“src” value=“src”/>  
  3.     <property name=“classes” value=“classes”/>  
  4.     <property name=“dest” value=“dest”/>  
  5.     <path id=“classpath”>  
  6.         <pathelement path={classes}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">path</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"help"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>help&nbsp;-打印幫助信息</span><span class="tag">&lt;/</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>compile&nbsp;-編譯java源文件</span><span class="tag">&lt;/</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>run&nbsp;-運行程序</span><span class="tag">&lt;/</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>build&nbsp;-打成jar包</span><span class="tag">&lt;/</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>clean&nbsp;-清楚全部編譯生成文件</span><span class="tag">&lt;/</span><span class="tag-name">echo</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"compile"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">" {classes}”/>  
  7.         <mkdir dir={classes}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">javac</span><span>&nbsp;</span><span class="attribute">srcdir</span><span>=</span><span class="attribute-value">" {src}” destdir={classes}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"run"</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">"compile"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">java</span><span>&nbsp;</span><span class="attribute">classname</span><span>=</span><span class="attribute-value">"org.xiazdong.Test"</span><span>&nbsp;</span><span class="attribute">fork</span><span>=</span><span class="attribute-value">"yes"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">classpath</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">" {classes}”/>  
  8.         </java>  
  9.     </target>  
  10.     <target name=“build” depends=“run”>  
  11.         <delete dir={dest}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">" {dest}”/>  
  12.         <jar destfile={dest}/Test.jar"</span><span>&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">" {classes}”>  
  13.             <manifest>  
  14.                 <attribute name=“Main-Class” value=“org.xiazdong.Test”/>  
  15.             </manifest>  
  16.         </jar>  
  17.     </target>  
  18.     <target name=“clean”>  
  19.         <delete dir={classes}"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">" {dest}”/>  
  20.     </target>  
  21. </project>  
<project default="init">
    <property name="src" value="src"/>
    <property name="classes" value="classes"/>
    <property name="dest" value="dest"/>
    <path id="classpath">
        <pathelement path="${classes}"/>
    </path>
    <target name="help">
        <echo>help -打印幫助信息</echo>
        <echo>compile -編譯java源文件</echo>
        <echo>run -運行程序</echo>
        <echo>build -打成jar包</echo>
        <echo>clean -清楚全部編譯生成文件</echo>
    </target>
    <target name="compile">
        <delete dir="${classes}"/>
        <mkdir dir="${classes}"/>
        <javac srcdir="${src}" destdir="${classes}"/>
    </target>
    <target name="run" depends="compile">
        <java classname="org.xiazdong.Test" fork="yes">
            <classpath path="${classes}"/>
        </java>
    </target>
    <target name="build" depends="run">
        <delete dir="${dest}"/>
        <mkdir dir="${dest}"/>
        <jar destfile="${dest}/Test.jar" basedir="${classes}">
            <manifest>
                <attribute name="Main-Class" value="org.xiazdong.Test"/>
            </manifest>
        </jar>
    </target>
    <target name="clean">
        <delete dir="${classes}"/>
        <delete dir="${dest}"/>
    </target>
</project>


總結一下:

  1. <?xml version = “1.0” encoding=“GBK”?>  
  2. <project name=“Test” default=“” basedir=“.”>  
  3.     <property name=“src” value={basedir}\src"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">" {basedir}\a.properties”/>  
  4.     <!–  
  5.     path用法  
  6.         1.id屬性表示編號,用於被引用  
  7.     –>  
  8.     <path id=“classpath”>  
  9.     <!–   
  10.     pathelement的用法  
  11.         1.path表示多個目錄,用“;”隔開目錄     
  12.         2.location表示一個目錄  
  13.     –>  
  14.         <pathelement path=“lib;src”/>  
  15.         <pathelement location=“lib”/>  
  16.     <!–  
  17.     dirset的用法  
  18.         1.dir屬性指定根目錄  
  19.         2.子元素<include name=“    ”/>表示包含的目錄  
  20.         3.子元素<exclude name=“    ”/>表示不包含的目錄  
  21.     –>  
  22.         <dirset dir=“lib”>  
  23.             <include name=“**/*Test*”/>  
  24.             <exclude name=“**/class”/>  
  25.         </dirset>  
  26.     <!–  
  27.     filelist的用法  
  28.         1.dir屬性指定根路徑  
  29.         2.files屬性指定文件名的列表,用”,”隔開  
  30.     –>  
  31.         <filelist dir=“lib” files=“a.xml,b.xml”/>  
  32.     <!–  
  33.     fileset用法  
  34.         1.dir屬性指出根路徑  
  35.         2.子元素<include name=“   ”/>指定包含的文件名  
  36.     –>  
  37.         <fileset dir=“lib”>  
  38.             <include name=“**/*.jar”/>  
  39.         </fileset>  
  40.     </path>  
  41.     <!–  
  42.     target用法  
  43.         1.表示任務,子元素爲各種task的集合;  
  44.     –>  
  45.     <target name=“target1”>  
  46.     <!–  
  47.     javac用法  
  48.         1.srcdir表示java文件的目錄  
  49.         2.destdir表示class文件的保存目錄  
  50.     –>  
  51.         <javac srcdir=“src” destdir=“bin”>  
  52.     <!–  
  53.     classpath用法  
  54.         1.refid引用前面的path指定的路徑  
  55.     –>  
  56.             <classpath refid=“classpath”/>  
  57.         </javac>  
  58.     <!–  
  59.     java用法  
  60.         1.classname表示要運行的類  
  61.         2.fork=“yes”一定要寫上!!  
  62.     –>  
  63.         <java classname=“Test” fork=“yes”>  
  64.             <classpath refid=“classpath”/>  
  65.     <!– 
  66.         arg表示指定的參數 
  67.     –>  
  68.             <arg value=“a b c”/>  
  69.         </java>  
  70.     <!– 
  71.     echo表示輸出 
  72.     –>  
  73.         <echo>Hello world</echo>  
  74.     <!–  
  75.     copy表示複製文件  
  76.     delete表示刪除文件  
  77.     mkdir表示創建目錄  
  78.     move表示移動文件  
  79.     –>  
  80.         <copy file=“src.txt” tofile=“dest.txt”/>  
  81.         <delete dir=“src”/>  
  82.         <mkdir dir=“src”/>  
  83.         <move file=“src.txt” tofile=“dest.txt”/>  
  84.     </target>  
  85. </project>  
<?xml version = "1.0" encoding="GBK"?>
<project name="Test" default="" basedir=".">
    <property name="src" value="${basedir}\src"/>
    <property file="${basedir}\a.properties"/>
    <!--
    path用法
        1.id屬性表示編號,用於被引用
    -->
    <path id="classpath">
    <!-- 
    pathelement的用法
        1.path表示多個目錄,用“;”隔開目錄   
        2.location表示一個目錄
    -->
        <pathelement path="lib;src"/>
        <pathelement location="lib"/>
    <!--
    dirset的用法
        1.dir屬性指定根目錄
        2.子元素<include name="    "/>表示包含的目錄
        3.子元素<exclude name="    "/>表示不包含的目錄
    -->
        <dirset dir="lib">
            <include name="**/*Test*"/>
            <exclude name="**/class"/>
        </dirset>
    <!--
    filelist的用法
        1.dir屬性指定根路徑
        2.files屬性指定文件名的列表,用","隔開
    -->
        <filelist dir="lib" files="a.xml,b.xml"/>
    <!--
    fileset用法
        1.dir屬性指出根路徑
        2.子元素<include name="   "/>指定包含的文件名
    -->
        <fileset dir="lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <!--
    target用法
        1.表示任務,子元素爲各種task的集合;
    -->
    <target name="target1">
    <!--
    javac用法
        1.srcdir表示java文件的目錄
        2.destdir表示class文件的保存目錄
    -->
        <javac srcdir="src" destdir="bin">
    <!--
    classpath用法
        1.refid引用前面的path指定的路徑
    -->
            <classpath refid="classpath"/>
        </javac>
    <!--
    java用法
        1.classname表示要運行的類
        2.fork="yes"一定要寫上!!
    -->
        <java classname="Test" fork="yes">
            <classpath refid="classpath"/>
    <!--
        arg表示指定的參數
    -->
            <arg value="a b c"/>
        </java>
    <!--
    echo表示輸出
    -->
        <echo>Hello world</echo>
    <!--
    copy表示複製文件
    delete表示刪除文件
    mkdir表示創建目錄
    move表示移動文件
    -->
        <copy file="src.txt" tofile="dest.txt"/>
        <delete dir="src"/>
        <mkdir dir="src"/>
        <move file="src.txt" tofile="dest.txt"/>
    </target>
</project>




五、在Eclipse中使用Ant


在Eclipse中雖然沒有內置創建Ant的生成文件,但是可以通過配置完成;

(1)點擊  window–>preferences–>editors–>file associations;

(2)在File types中創建一個build.xml,並將associated editor的默認項設置爲ant editor即可;

當在項目中創建一個build.xml時,這個文件就是ant的生成文件;

 


 

六、模式匹配


在Ant中有一些基本的模式匹配的功能,比如:

*表示任意字符串,**表示任意數量的目錄;

(1)*.java,表示任意的java文件;

(2)*/*.java表示當前目錄的任意java文件;

(3)**/*.java表示當前目錄結構下的任意java文件;

 

<fileset dir=”   src  “>

    <include name=”**/*.java”/>

    <include name=”**/*.txt”/>

    <exclude name=”**/*Test*”/>

</fileset>

表示包含src目錄下的所有java和txt文件,排除文件名包含Test的文件;

 

舉例:將java文件拷貝到dest文件夾下;

  1. <copy todir=“dest”>  
  2. <span style=“white-space:pre”>  </span><fileset dir=“.”>  
  3. <span style=“white-space:pre”>      </span><include name=“**/*.java”/>  
  4. <span style=“white-space:pre”>  </span></fileset>  
  5. </copy>  
<copy todir="dest">
  <fileset dir=".">
      <include name="**/*.java"/>
  </fileset>
</copy>

 

七、自定義任務


 自定義任務類似於JSP中的自定義標籤;

步驟:

(1)繼承org.apache.tools.Task;

(2)覆寫public void execute()throws BuildException;

(3)在類中添加的屬性即爲任務標籤的屬性;

(4)在build.xml中聲明任務<taskdef name=”   ”   classname=”    ”   classpath=”bin”/>

舉例:複製文件;

  1. package org.tools;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileWriter;  
  7. import java.io.IOException;  
  8. import java.io.InputStreamReader;  
  9. import java.io.PrintWriter;  
  10.   
  11. import org.apache.tools.ant.BuildException;  
  12. import org.apache.tools.ant.Task;  
  13. public class SimpleTask extends Task{  
  14.     private File file;  
  15.     private File tofile;  
  16.     public File getFile() {  
  17.         return file;  
  18.     }  
  19.     public void setFile(File file) {  
  20.         this.file = file;  
  21.     }  
  22.     public File getTofile() {  
  23.         return tofile;  
  24.     }  
  25.     public void setTofile(File tofile) {  
  26.         this.tofile = tofile;  
  27.     }  
  28.     @Override  
  29.     public void execute() throws BuildException {  
  30.         try {  
  31.             PrintWriter out = new PrintWriter(new FileWriter(tofile));  
  32.             BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));  
  33.             String line = null;  
  34.             while((line=in.readLine())!=null){  
  35.                 out.println(line);  
  36.             }  
  37.             out.close();  
  38.             in.close();  
  39.         } catch (IOException e) {  
  40.             e.printStackTrace();  
  41.         }  
  42.           
  43.     }  
  44.       
  45. }  
package org.tools;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
public class SimpleTask extends Task{
    private File file;
    private File tofile;
    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public File getTofile() {
        return tofile;
    }
    public void setTofile(File tofile) {
        this.tofile = tofile;
    }
    @Override
    public void execute() throws BuildException {
        try {
            PrintWriter out = new PrintWriter(new FileWriter(tofile));
            BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            String line = null;
            while((line=in.readLine())!=null){
                out.println(line);
            }
            out.close();
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
build.xml
  1. <taskdef name=“MyCopy” classname=“org.tools.SimpleTask” classpath=“bin”></taskdef>  
  2.     <target name=“mycopy”>  
  3.         <MyCopy file=“2.txt” tofile=“output.txt”/>  
  4.     </target>  
<taskdef name="MyCopy" classname="org.tools.SimpleTask" classpath="bin"></taskdef>
    <target name="mycopy">
        <MyCopy file="2.txt" tofile="output.txt"/>
    </target>


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章