Ant 給Ant指令碼傳遞引數的最佳實踐

2021-06-03 00:49:34 字數 1303 閱讀 2305

ant是乙個make tool,主要用於**的編譯,構建。當然,也有很多ant愛好者開發了很多外部任務擴充套件了它的功能。它無介面,跨平台的特性,正好適用於軟體開發人員。ant已經成為軟體開發人員開發過程中的一道利器。

在專案開發的過程中,ant除了會被用來進行編譯,打包,生成各種報告外,還可以被用來寫開發中用到的工具。

當然了,既然是開發中用到,引數的傳遞也少不了了。那麼,怎麼樣做才是更好的方法呢?

預備知識

1. ant指令碼中有屬性,可以用來設定值。

但是一定要了解它的作用域和順序。

直接在節點下的所設定的值,所有的都可以使用。而節點下的只在本內部有效。

內部定義的必須位於使用它的**之前,因為ant是邊解析配置檔案邊執行的。如果定義的部分放到了使用的部分之後,那麼使用的部分就會認為沒有定義。也就是說,假如a和b是兩段使用到了的部分,而把放到a和b之間的話,那麼a不能使用這個,而b則可以使用。但是節點下的則沒有這個問題,ant優先讀取完所有屬性之後,才會去執行具體的。

2. ant中的除了可以使用[name/value,name/location]這樣的鍵值對外,還可以使用屬性[file]載入properties檔案。

相比較而言,properties檔案比xml更容易讓普通使用者接受。

3. 在使用命令執行ant指令碼時,可以通過"-dname=value"的方式向ant指令碼傳遞引數。

如果在執行命令的時候,使用了"ant -f ***x.xml -dbuild.name=helloproject"之類的命令的話,那麼ant指令碼中所有位置都可以使用$來使用這個屬性的值。

這一種方式,等同於下的。

4. ant指令碼中的是有優先順序區分的。

如果在有兩個同名的,ant只讀取第乙個定義的值,不管是[name/value; name/location]還是[file]的定義方式。

通過上面3中介紹的"-dname=value"的方式定義的值的優先順序比下的的優先順序高。

最佳實踐

1. 把所有需要使用者傳遞的引數放到乙個properties檔案中去,並把定義部分放到ant指令碼中的最前面。

2. 不要設計太多的引數。工具本來就是要減輕使用者負擔的,如果有太多的引數需要設定的話,任誰也要考慮一下使用成本的。

3.  如果引數只需要設定一次,以後不需要變更的話,那麼算是最好的了。如果每一次執行都要傳遞不同的引數的話,可以考慮提供針對特定os的指令碼,使用"-dname=value"來簡化使用方法,比如說windows的bat,linux/unix的sh檔案等。不過,寫特定os的指令碼是一種不推薦的方式,這樣就把ant本來擁有的跨平台能力給抹去了。

命令列和ant指令碼的引數傳遞

比如在執行build.xml的某些任務時候,需要從外面的命令列傳遞引數給ant指令碼。可以通過以下的方式進行引數傳入 ant f build.xml idc.type.ismenu.war dparent version parent version dson version son version...

在ant指令碼中對外部ant任務的呼叫

在ant指令碼中對外部ant任務的呼叫,在多專案管理中特別有用。兩種方法總結一下 使用antfile 使用exec 一 使用antfile antfile表示子專案的構建檔案。dir表示構建檔案所再的目錄,預設為當前目錄。inheritall表示父專案的所有屬性在子專案中都可使用,並覆蓋子專案中的同...

乙個用於部署應用的ant指令碼

沒有剛工作的時候寫的那個漂亮,不過總算完成一樣的事情了。能夠在本地分資源種類打包,然後上傳到伺服器,解壓,重啟伺服器。name ecourse default deploy name prj.base.dir location property name keyfile.path location ...