Ant学习总结

来源:互联网 发布:json空值 编辑:程序博客网 时间:2024/05/17 22:20


一、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文件,整体结构为:

[html] view plain copy
print?
  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目录;

[html] view plain copy
print?
  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结构

[html] view plain copy
print?
  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>


总结一下:

[html] view plain copy
print?
  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文件夹下;

[html] view plain copy
print?
  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”/>

举例:复制文件;

[java] view plain copy
print?
  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
[html] view plain copy
print?
  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>


 

 

 

0 0