qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Ant構建Java項目之第2篇

           實例1:實現自定義Ant任務
            其中FileSorter文件的源碼如下:
          package com.ant.test02;
          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;
          public class FileSorter extends Task {
          private File srcFile;
          private File destFile;
          public File getSrcFile() {
          return srcFile;
          }
          public void setSrcFile(File srcFile) {
          this.srcFile = srcFile;
          }
          public File getDestFile() {
          return destFile;
          }
          public void setDestFile(File destFile) {
          this.destFile = destFile;
          }
          @Override
          public void execute() throws BuildException {
          try {
          BufferedReader fromFile = new BufferedReader(
          new FileReader(srcFile));
          BufferedWriter toFile = new BufferedWriter(new FileWriter(destFile));
          List<String> list = new ArrayList<String>();
          String line = fromFile.readLine();
          while (line != null) {
          list.add(line);
          line = fromFile.readLine();
          }
          Collections.sort(list);
          for (ListIterator<String> li = list.listIterator(); li.hasNext();) {
          String str = li.next();
          toFile.write(str);
          toFile.newLine();
          }
          fromFile.close();
          toFile.close();
          } catch (Exception ex) {
          ex.printStackTrace();
          }
          }
          }
          實現一個文件排序的功能。
            build.xml文件源碼如下:
          <?xml  version="1.0"?>
          <project name="tasks" default="main">
          <property name="build.dir" location="build" />
          <target name="init">
          <mkdir dir="${build.dir}" />
          </target>
          <target name="compile" depends="init">
          <javac srcdir="src" destdir="${build.dir}" />
          </target>
          <target name="simpletask" depends="compile">
          <taskdef name="simpletask" classname="com.ant.test02.FileSorter" classpath="${build.dir}" />
          <simpletask srcFile="input.txt" destFile="output.txt"/>
          </target>
          <target name="clean">
          <delete dir="${build.dir}" />
          </target>
          <target name="main" depends="simpletask" />
          </project>
            input.txt中輸入需要排序的內容后,運行build.xml。查看output.txt,發現內容進行了排序。
            實例2:模式匹配
            可以對目錄執行模式匹配。例如,模式src*/*.java將匹配帶src前綴的任何目錄中的所有Java文件。
            還有另一種模式結構:**,它匹配任意數量的目錄。例如,模式**/*.java將匹配當前目錄結構下的所有Java文件。
          <copy todir=”archive”>
          <fileset dir=”src”>
          <include name=”*.java”/>
          </fileset>
          </copy>
            fileset默認情況下包含指定src目錄下的所有文件,因此為了僅選擇Java文件,我們對模式使用一個include元素。類似地,我們可以對另一個模式添加一個exclude元素,從而潛在地排除include指定的匹配項。甚至可以指定多個include和exclude元素;這樣將得到一組文件和目錄,它們包含include模式的所有匹配項的并集,但排除了exclude模式的所有匹配項。
          <?xml  version="1.0"?>
          <project name="tasks" default="main">
          <property name="build.dir" location="build" />
          <target name="main" >
          <copy todir="${build.dir}/dest_dir">
          <!-- 只拷貝build目錄下的文件,其子目錄下的文件不做拷貝 -->
          <fileset dir="${build.dir}">
          <include name="*.class"/>
          <exclude name="*.war"/>
          </fileset>
          </copy>
          </target>
          </project>
           實例3:可執行Jar文件的生成
            在com.ant.test03包下新建一個Testjar.java文件,源碼如下:
          package com.ant.test03;
          import java.awt.Color;
          import java.awt.Dimension;
          import javax.swing.JButton;
          import javax.swing.JFrame;
          public class TestJar {
          public static void main(String[] args) {
          JFrame frame = new JFrame();
          frame.setSize(new Dimension(200, 300));
          frame.setBackground(new Color(200, 200, 200));
          frame.setAlwaysOnTop(true);
          frame.getContentPane().add(new JButton("Test Ant"));
          frame.setVisible(true);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
          }
            build.xml文件源碼如下:
          <?xml version="1.0" encoding="utf-8"?>
          <project name="myAntProject" default="dist" basedir=".">
          <property name="compile" value="compile" />
          <property name="dist" value="dist" />
          <target name="preprocess" >
          <mkdir dir="${compile}" />
          <mkdir dir="${dist}" />
          </target>
          <target name="myCompile" depends="preprocess">
          <javac srcdir="src" destdir="${compile}">
          </javac>
          </target>
          <target name="dist" depends="myCompile">
          <jar destfile="${dist}/package.jar" basedir="${compile}">
          <manifest>
          <attribute name="Built-By" value="${user.name}" />
          <attribute name="Main-Class" value="com.ant.test03.TestJar" />
          </manifest>
          </jar>
          </target>
          </project>
            運行后刷新MyEclipse項目,就可以看到在dist文件夾下生成的package.jar文件,雙擊可以運行。
          相關文章:

          posted on 2014-05-22 10:16 順其自然EVO 閱讀(198) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 扎兰屯市| 阿合奇县| 荆门市| 祁东县| 吉安县| 子长县| 浮梁县| 大渡口区| 富顺县| 开阳县| 蓝田县| 台东县| 达拉特旗| 沂南县| 九寨沟县| 封丘县| 灵山县| 应城市| 日喀则市| 北辰区| 丁青县| 图木舒克市| 公安县| 双鸭山市| 防城港市| 紫阳县| 长乐市| 赞皇县| 年辖:市辖区| 西昌市| 鱼台县| 岱山县| 新竹市| 水富县| 杭锦后旗| 南溪县| 陇川县| 同仁县| 灵石县| 青冈县| 昌邑市|