<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    OMG,到底在尋找什么..................
    (構(gòu)造一個完美的J2EE系統(tǒng)所需要的完整知識體系)
    posts - 198,  comments - 37,  trackbacks - 0
    轉(zhuǎn)貼地址:http://m.tkk7.com/calvin/archive/2006/09/07/68150.html
    作者:江南白衣

    ?? 這篇文檔是專門寫給那些編程狂熱者,在Ant里編程時要留意的重要Task。

    ??? 不知為何,老外的各種腳本都寫得格外漂亮。從Appfuse里學(xué)到很多,在編寫SpringSide2.0的構(gòu)件安裝腳本時又被迫自學(xué)了不少,這里作下總結(jié)。

    ??? 如果只說一樣最重要的事情,就是ant-contrib的<if> 和 <for>節(jié)點(diǎn),使Ant 擁有了完整的編程能力。

    1. 變量

    ?? Ant里的變量有個詭異的特性----一旦被賦值就不會改變,這個特性有時候幫助很大,有時候讓人很苦惱,一定要注意。另一樣要注意的是,Ant里的變量和其他語言的變量一樣,有可效范圍。

    ?? 1.由命令行賦值

    ????? ant build.xml -Dtomcat.home=foo

    ?? 2.與用戶交互輸入--Input task

    ????? <input message="請選擇一個Target "
    ?????????????? validargs="compile,jar,test"
    ?????????????? addproperty="my.input"/>

    ?3.從propertis文件讀取并存盤 -- propertyfile task????

    ????? <propertyfile file="my.properties">
    ??????????????<entry key="springside.home" default="."/>
    ??????</propertyfile>

    ????? 如果my.properties 不存在,生成my.properties文件,springside.home=.。有一個特別有用的地方:有些properties文件的屬性每個開發(fā)者都不同,不想放入svn,但又想初始化數(shù)值,可以用該命令。

    ???? <propertyfile file="my.properties">
    ??????????????<entry key="springside.home" value="....."/>
    ??????</propertyfile>

    ????? 重新寫入配置文件。

    2. 流程控制

    ???? 如果沒有ant-contrib 貢獻(xiàn)的<if> 和<for>節(jié)點(diǎn),Ant的可編程性是極低極低的。

    ?2.1 if task

    ?ant原來可以在target級進(jìn)行if判斷(unless,if 屬性),但實在太不方便了。

    2.2 Conditions

    但Ant預(yù)先封裝的一堆condition很是很方便的。這些condition完全從實際出發(fā),包括文件是否存在,http://localhost:8080是否連通都可以作為條件,見Ant的參考手冊

    2.3 For task

    支持"a,b,c,d" 字符串?dāng)?shù)組的循環(huán)與文件目錄,F(xiàn)ileset的循環(huán)。

    2.4 Parallel task

    Parallel非常有用,比如我想一邊開tomcat,一邊做別的,就需要使用它,否則就只有用spawn=true屬性把tomcat放在后臺運(yùn)行。spawn有很多不好的地方,比如不能即時在console看到信息,停止ant運(yùn)行不能把tomcat關(guān)掉等。

    Parallel相當(dāng)于一個容器,放在里面的每個task都會被并行執(zhí)行。如果想把某幾個task順序執(zhí)行,用相當(dāng)于()的Sequential task?包起來。

    2.5 Waitfor task

    暫停ant執(zhí)行直到條件符合,比如<waitfor><http url=http://localhost:8080/></waitfor>就會等待tomcat啟動后才會繼續(xù)往下執(zhí)行。Macrodef task

    3. 代碼封裝

    ?ant 代碼最基本的封裝是

    ?1. ant? task:調(diào)用其他腳本的任務(wù),可設(shè)定dir 與是否繼承本腳本的變量。

    ?2. antcall task:調(diào)用本腳本內(nèi)其他task,可設(shè)置參數(shù)。

    ?3. import task :就像其他語言的include一樣,引入其他腳本內(nèi)容到本腳本里。

    1. AntFetch,? AntCallBack task

    ?? ant-contrib貢獻(xiàn),對應(yīng)于Ant 與 AntCall。原版只能向被調(diào)用函數(shù)傳遞變量,函數(shù)執(zhí)行后沒辦法return 值。antcallback的語法如下
    ???<antcallback target="mytarget" return="myresult1,myresult2"/>

    2. Macrodef task

    ???作為最小的封裝單位,與以<target>封裝再<antcall target="xxx">調(diào)用差不太遠(yuǎn),細(xì)微之處自行體驗了。個人比較喜歡用macrodef。

    3. Java taskExec task 直接執(zhí)行Java類或程序

    ???注意執(zhí)行目錄的定義。另在Windows下如果要直接運(yùn)行dos窗口中的命令,以下指令啟動默認(rèn)瀏覽器訪問localhost:

    ?? <exec executable="cmd.exe">
    ????? <arg line="/c start http://localhost:8080"/>
    ???</exec>???

    4. 擴(kuò)展Ant的Task

    ?? 擴(kuò)展ant task很簡單,實現(xiàn)execute() 方法執(zhí)行task,實現(xiàn)setter接口讓ant框架執(zhí)行屬性注入。繼承Task 獲得一些ant的能力,比如查詢某個變量的值。

    ?? 稍微有點(diǎn)麻煩的是多層嵌套屬性的注入。詳細(xì)請看http://ant.apache.org/manual/developlist.html

    ?? SpringSide 2.0 里很簡單的實現(xiàn)了一個XML File Merge的task,見XmlMergeTask.java。

    ???蛋蛋?說擴(kuò)展Ant的最方便的方法還是在ANT里嵌套腳本。導(dǎo)入BSF庫以后,你就可以用BSF支持的腳本語言了(見Script Task)。接下來有機(jī)會嘗試一下。


    ?5. 文件操作

    ? 剛好springside里進(jìn)行了比較多的文件操作,隨便記一下。

    ? replace 與 copy 時加入filter, 都可以進(jìn)行字符串替換.

    ??concat在文件末添加其他文件的內(nèi)容。

    ? 好困,很多東西沒寫詳細(xì),明天再補(bǔ)充。

    ??題外話,Ant 完整演示了如何編寫XML式的代碼,雖然對于開發(fā)人員來說XML編碼非常麻煩,遠(yuǎn)遠(yuǎn)沒有Ruby的rake以ruby代碼本身來構(gòu)建系統(tǒng)清晰,但對于IDE,特別是希望圖形化編程的IDE來說,XML比普通代碼要容易渲染得多,所以普元EOS的圖形化編程也是序列成XML代碼。再另外,Ant的task 和 普元的構(gòu)件也有相似。

    posted on 2006-09-08 13:13 OMG 閱讀(959) 評論(0)  編輯  收藏 所屬分類: Ant/Maven

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


    網(wǎng)站導(dǎo)航:
     

    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風(fēng)云人物

    文檔

    朋友

    相冊

    經(jīng)典網(wǎng)站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕不卡免费视频| 啦啦啦完整版免费视频在线观看| 在线观看亚洲天天一三视| 免费看搞黄视频网站| 中文日韩亚洲欧美制服| 国产免费131美女视频| 桃子视频在线观看高清免费视频 | 国产国拍精品亚洲AV片| 亚洲成人在线免费观看| 曰批全过程免费视频免费看 | 日韩精品免费一线在线观看| 亚洲卡一卡2卡三卡4卡无卡三| 青青草国产免费久久久下载| 青青操免费在线观看| 亚洲欧美日本韩国| 亚洲AV日韩AV永久无码下载| 日本黄色免费观看| 人妻丰满熟妇无码区免费| 免费大片av手机看片高清| 中文字幕在线观看亚洲| 亚洲日本一区二区一本一道| 4455永久在线观免费看| 久青草视频97国内免费影视| 亚洲人成电影网站免费| 亚洲国产人成在线观看69网站| 免费欧洲美女牲交视频| 免费精品国产日韩热久久| 免费在线黄色电影| 羞羞漫画在线成人漫画阅读免费 | 亚洲精品网站在线观看你懂的 | 亚洲国产成人精品无码区二本| 亚洲邪恶天堂影院在线观看| 亚洲男人第一无码aⅴ网站| 欧美日韩国产免费一区二区三区| 国内精品久久久久影院免费| 免费视频精品一区二区| 亚洲精华国产精华精华液网站| 亚洲一区在线观看视频| 中文字幕亚洲免费无线观看日本 | 国产亚洲精品一品区99热| 亚洲国产精品嫩草影院久久|