国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

編寫自定義任務,輕松擴展Ant(1)

2019-11-17 06:12:13
字體:
來源:轉載
供稿:網友

  Ant自帶了大量的任務(Task),在網上也有大量的任務可用,可是假如你面對的是別人根本不會想到的問題,怎么辦呢?其實,只要花一點點功夫就可以編寫出自己的任務出來。我開始也沒想到會這樣簡單(做嵌套任務碰到一點問題),由此可見Ant的結構設計是相當優秀的。

  假設我們需要顯示任務執行各花了多少時間,寫一個TimerTask

  起步:覆蓋org.apache.tools.ant.Task的execute方法
  import org.apache.tools.ant.Task;

  import org.apache.tools.ant.BuildException;

  public class TimerTask extends Task {

  public void execute() throws BuildException {

    System.out.

  }

  }

  注重,編譯時ant.jar必須在Classpath上。

  簡單起見,假設java源文件,類文件在同一目錄下,在此目錄再寫一個build.xml文件:

  <?xml version="1.0" ?>

  <project name="testTimer" default="test" basedir=".">

   <taskdef name="timer" classname="TimerTask" classpath="."/>

  <target name="test">

    <timer />

  </target>

  </project>

  打開Dos窗口,到此目錄,運行ant

  夠簡單吧!假如類路徑比這復雜或者在jar文件中,設置<taskdef>的classpath屬性就行了。

   繼續:設置屬性

  假設我們想添加一個action屬性,在Java文件中:

  private String action;

  ….

進入討論組討論。

  public void execute() throws BuildException {

  if (action.equals(“init”)) {

        …
  }

  …

  }

  public String getAction() {

  return action;

  }

  public void setAction(String string) {

  action = string;

  }

  在xml文件中:

  <timer action=”init” />

  使用Project保存中間結果

  對于這個任務來講,必須把時間值保存起來,比較合適的就是org.apache.tools.ant.Project了,Project對象生命期是整個Build,并且可以通過setProperty, getProperty等方法保存/獲取值。

   public void execute() throws BuildException {

    if (getOwningTarget() == null)

進入討論組討論。

        return;

    Project proj = getOwningTarget().getProject();

    …

 

    // can do smt with proj now

  }

  晉級:嵌套任務

  假如我們想要在Timer下面再嵌套子任務(似乎沒有這個必要 :-):

  <timer action=”init” >

  <foo />

  </timer>

  那我們首先只需要寫一個簡單的FooTask,然后在build.xml加上<foo>的定義:

  <taskdef name="timer" classname="TimerTask" classpath="."/>

  <taskdef name="foo" classname="FooTask" classpath="."/> 

  然后給TimerTask添加一個方法:

  public void addFoo(FooTask foo) {

  }

  注重:addXXX的XXX由<taskdef>中的name決定,Ant會利用Java Reflection去找;類型必須是具體的類型FooTask,不能是Task。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁化县| 双牌县| 上杭县| 白河县| 蒙山县| 隆回县| 淮阳县| 修水县| 肥东县| 威信县| 海淀区| 金门县| 抚州市| 北流市| 建水县| 康乐县| 永德县| 邹平县| 尉氏县| 晋城| 湾仔区| 同仁县| 长沙市| 莆田市| 岱山县| 二手房| 津市市| 恩平市| 荣成市| 香港| 射阳县| 碌曲县| 永济市| 乌审旗| 谢通门县| 舒城县| 南靖县| 桑植县| 永昌县| 旬阳县| 关岭|