聽風觀影,我的博客!

          我的博客日志!!!
          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;
          }

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


          網站導航:
           
          主站蜘蛛池模板: 平泉县| 观塘区| 镇沅| 特克斯县| 涿州市| 广水市| 北碚区| 航空| 禹城市| 贵南县| 拜泉县| 开鲁县| 屏南县| 罗山县| 抚顺市| 五常市| 聂拉木县| 绥阳县| 喜德县| 奉新县| 新晃| 甘泉县| 射阳县| 滦南县| 垫江县| 兖州市| 林周县| 双峰县| 翁牛特旗| 美姑县| 香港 | 洛隆县| 西贡区| 利津县| 疏附县| 临漳县| 阿巴嘎旗| 望江县| 梅州市| 信宜市| 三台县|