本人也稍微用了一些指令碼語言了,可是在同事的反饋給我的印象中,指令碼語言似乎從未得到正名,似乎總是寒酸和小打小鬧的代名詞。我在做一個門戶網站,身邊有一些公司和某一些開發人員,總是對於頁面上的技能很輕視,殊不知使用者體驗(也許我專指UCD)恰恰是對使用者影響最大的部分,對Portal來說,更勝於功能。同樣,指令碼語言亦扮演著看似無足輕重,但實際非常重要的作用。
指令碼語言可以做什嗎?適合做什嗎?能想到的,似乎總是敏捷、快速、輕量的東西,說得冠冕堂皇一點,就是能把人從繁重的重複勞動中解脫出來;還有,就是很適合運行在用戶端,做一些簡單的解析和對使用者體驗的協助,這不也是因為它敏捷、快速和輕量嗎?
今天我不說瀏覽器端的JavaScript、VBScript,不說作業系統的bat、shell,就說說Ant、Maven和Gant。
Ant是我用得最多的,任何的語言在編寫的時候都要講究條理、層次和邏輯,ant作為誕生比較早的指令碼語言,也是如此。其實嚴格說,ant只不過是定義的一系欄標籤而已,非常簡單的文法,把一個個標籤嵌套起來,串起來使用即可。後來能夠接觸到一些動態語言,perl、ruby等,這些文法就比ant要輕快得多了。
Ant經常使用的功能:拷貝粘貼這一類的不說了,還有:打包(jar/war/tar/zip)、compile、concact、Sql(這個東西不太好用,經常用ant調用sqlPlus代替)、JavaDoc、LoadProperties、FTP、SSH、JUnit。
我經常使用的Ant擴充外掛程式,包括SVN外掛程式、XML外掛程式、Contrib外掛程式(主要是邏輯能力,包括if、for等等這種Ant預設不支援的能力)。
在管理項目的時候,經常需要使用Ant來編寫指令碼,便於完成打包、校正、上庫、部署、更新、測試等等工作,自動化指令碼的成熟程度,也一定程度上標誌著項目的成熟程度。
Maven我接觸得不多,Maven是基於項目物件模型(POM),可以通過一小段描述資訊來管理項目的構建,報告和文檔的軟體專案管理工具。所以,嚴格說來,Maven早就超越了指令碼語言的概念,是一個真正適用於工程和專案管理層級的工具。
http://maven.apache.org/
借用官網上的例子,可見上手也是非常簡單的,日後我會寫一篇Maven入門的文章:
這裡有一個Maven和Ant之間的對比:
其中提到了一點,Ant的構建規則通常是靜態,除非用Script Ant來做,我覺得使用Contrib外掛程式也可以做到,只是不知道這個外掛程式是如何?的。
給一個Script Ant的例子:
參見:http://www.sitepen.com/blog/2001/09/25/javascript-and-ant/,後續我會把這篇翻譯出來。
說到現在Ant和Maven還是沒有脫離XML的約束,Gant就不同了。Gant是一個基於Ant的構建工具,它採用Groovy指令碼代替XML來編寫構建邏輯。Gant完全依賴於Ant task來做真正的事情,所以如果用Ant實現構建,但不喜歡用XML構建檔案,Gant是一個不錯的選擇。
這裡有一個簡易教程:http://blog.csdn.net/yangvlive/archive/2008/08/31/2854325.aspx;
官網:http://gant.codehaus.org/
可以看到Gant就是寫groovy指令碼,之前研究過好一段時間的GoG,這裡瞭解一下即可,就不展開了。