zoukankan      html  css  js  c++  java
  • 自定义任务扩展 ANT

    使用ant自定义任务,可以非常简便的扩展ant, 其实与扩展jsp标签的方法是类似的.

    1. 新建一个项目,并导入ant的 jar包

    2. 写一个java类,继承org.apache.tools.ant.Task类,并覆盖execute方法

    package com;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.ListIterator;
    import org.apache.tools.ant.BuildException;
    import org.apache.tools.ant.Task;
    /**
     * 该类主要用于 对文件中的行进行排序, 并将排序 后的行 写入 一个新 文件 中
     * @author Administrator
     */
    public class FileSort extends Task
    {
        private File file;          //源文件
        private File tofile;    //目标 文件
        
        @Override
        public void execute() throws BuildException
        {
            try
            {
                BufferedReader fromFile = new BufferedReader(new FileReader(file));
                BufferedWriter toFile = new BufferedWriter(new FileWriter(tofile)); 
                //读取文件
                String line = fromFile.readLine();
                List<String> fileString = new ArrayList<String>();
                while(line!=null)
                {
                    fileString.add(line);
                    line = fromFile.readLine();
                }
                //排序
                Collections.sort(fileString);
                //排序后写入新文件
                for(ListIterator<String> li= fileString.listIterator(); li.hasNext();)
                {
                    String str = li.next();
                    toFile.write(str);
                    toFile.newLine();
                }
                
                fromFile.close();
                toFile.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            
            super.execute();
        }
        //提供 2个属性file和tofile的set及get方法..省略

     3. 在项目根目录下,创建build.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="myantExtend" default="sortFile" basedir=".">
    
        <target name="sortFile">
            <!--这个classpath实际 上是针对build.xml这个 文件所处的位置,
                classpath指向的就是FileSort.class文件对应的目录-->
            <taskdef name="myFileSortextend" classname="com.FileSort" classpath="bin">
            </taskdef>
                
            <!--使用刚刚定义的任务-->
            <myFileSortextend file="input.txt" tofile="output.txt" >
            </myFileSortextend>
        </target>
    </project>


     4. 将input.txt中写入要排序的字符, 然后运行该build,将会得到排序后的output.txt文件,至此,自定义一个ant任务已经完成了.

    目录结构如下图:

  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/david-rui/p/ant.html
Copyright © 2011-2022 走看看