聽風觀影,我的博客!

          我的博客日志!!!
          posts - 2, comments - 0, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          轉:交互式的ant 調用與自寫的Ant Task

          Posted on 2006-03-09 22:33 聽風觀影 閱讀(221) 評論(0)  編輯  收藏 所屬分類: ant
          寫完代碼生成的框架,少不了需要ant來調用。寫完之后值得一記的東西有三:
          一、《Ant--The Definitive Guide 2nd》是本不錯的cookbook

          二、與用戶進行交互式輸入而不是逼著用戶改build.xml

          下面的代碼運行時,ant會提問"What is the name of your POJO?",讓用戶輸入屬性PojoName的值。

          <input message="What is the name of your POJO (i.e. Person)?" addproperty="PojoName"/>
          三,寫Ant Task

          寫Ant Task其實很簡單,看看下面這篇Turtorial就可以了。

          http://ant.apache.org/manual/tutorial-writing-tasks.html

          上文可濃縮到三句話里:
          1.寫一個Java類,繼承于org.apache.tools.ant.Task。
          2.實現execute()方法,Ant就會進行調用。
          3.參數要從build.xml傳入時,Task類只需擁有同名的變量和setter函數,Ant就會為你注入。

          1.Ant Task的標準實現

          import org.apache.tools.ant.Task;public class HelloWorld extends Task{String msg;public void execute(){  System.out.println(msg);}public void setMsg(String msg){    this.msg = msg;}}
          將上面的文件編譯打包成helloworld.jar

          build.xml調用如下

          <target description="Use the Task">  
          <taskdef name="helloworld" classname="HelloWorld" classpath="helloworld.jar"/>  
          <helloworld msg="Hello World"/>
          </target>

          另外:
          1.取得build.xml中的公共變量和Target名稱

          String myProperty = getProject().getProperty("myProperty ");
          String targetName = getOwningTarget().getName();                     
                     
          2.取得復合的屬性就要復雜一點,該模式可以擴展到比下面復雜得多的情況。
          <target>  
          <helloworld>     
          <message msg="Hello "/>     
          <message msg="World"/>  
          </helloworld>
          </target>

          1.先定義叫Message的內部類以表示Message節點,該類有一個msg屬性,同樣有一個setter函數,使其可以在build.xml中賦值

          public class Message extends Object{   
          public Message()  {}  
          String msg;  
          public void setMsg(String msg)  {   
          this.msg = msg;  
          }  
          public String getMsg() {    return msg;  }
          }

          2.再根據Ant的框架,定義給Helloworld注入message的createXXX函數和持有Message列表的messages對象,ant就會為你完成自動注入。

          Vector msgs = new Vector();
          public Message createMessage(){   
          Message msg = new Message();
          messages.add(msg);  
          return msg;
          }

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 灌南县| 临高县| 石棉县| 改则县| 两当县| 夏邑县| 曲水县| 石家庄市| 济源市| 龙陵县| 沙田区| 台东市| 迁安市| 通州区| 英吉沙县| 屏边| 庆城县| 浪卡子县| 措勤县| 维西| 石棉县| 九江县| 东乌珠穆沁旗| 五河县| 萍乡市| 久治县| 开封市| 澜沧| 南通市| 南部县| 临江市| 喜德县| 耿马| 虎林市| 湖南省| 崇左市| 百色市| 山丹县| 新巴尔虎右旗| 麻城市| 利川市|