国产探花免费观看_亚洲丰满少妇自慰呻吟_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。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁山县| 池州市| 扎鲁特旗| 射洪县| 哈尔滨市| 寻乌县| 溆浦县| 乐至县| 台南县| 时尚| 芜湖市| 出国| 苏尼特左旗| 建宁县| 南川市| 宜川县| 涟源市| 麦盖提县| 清镇市| 冀州市| 分宜县| 九台市| 祥云县| 陵水| 务川| 玉林市| 泸溪县| 巴彦县| 襄汾县| 广丰县| 济源市| 泰兴市| 晋州市| 屯门区| 仙桃市| 苍南县| 安丘市| 利川市| 宣城市| 明光市| 溧阳市|