程式專案建構工具
Apache Ant
用XML標籤去定義專案內要提供哪些”目標”,哪些”任務”需要被執行。描述自動化編譯的事項,含有XML、DataType、Properties、Task等。早前的自動化編譯工具為Ant與Maven。Gradle 是後起之秀,已經越來越多 Open Source 專案由Maven轉向Gradle(更早之前是由 Ant 轉向 Maven)
參考資料來源
http://www.codedata.com.tw/java/understanding-gradle-1-ant/
Apache Maven
為Java自動化專案建構工具,自動管理相依性功能帶來極大的便利,也支援C#、Ruby、Scala。被創造的動機有二個原因:Java 專案的標準化、Java 專案函式庫管理的問題。提供專案『樣版』的機制,它會建立好專案目錄結構、範例檔與 Maven 設定檔 pom.xml。super-pom.xml 和pom.xml決定了該專案的設定、編譯行為。Convention Over Configuration觀念。函式庫會由 Maven 透過 repostiory server 下載,並 cache 在使用者目錄下的 .m2 目錄。
參考資料來源
http://www.codedata.com.tw/java/understanding-gradle-2-maven/
https://zh.wikipedia.org/wiki/Apache_Maven
Gradle
以Apache Ant和Apache Maven概念的專案自動化建構工具,具有自動管理相依性、編譯、測試、檢查程式碼、產生文件、清理或壓縮、上傳、發佈、重新啟動伺服器到送出電子郵件。使用Groovy的特定領域語言(script)設定專案,Maven Repositories,而不是XML格式。目前支援Java、Groovy、Scala。為Android Studio 內建的封裝布署工具
參考資料來源
https://zh.wikipedia.org/wiki/Gradle
https://ithelp.ithome.com.tw/articles/10129873
Sbt
Simple Build Tool的簡稱,類似於Maven,是Scala界的Maven,支援scala與java語言的專案管理,支持增量編譯,內置scala console。
1. 使用Scala作為DSL來定義build文件(one language rules them all);
2. 通過觸發執行(trigger execution)特性支持持續的編譯與測試;
3. 增量編譯;^[SBT的增量編譯支持因為如此優秀,已經剝離為Zinc,可被Eclipse, Maven,Gradle等使用]
4. 可以混合構建Java和Scala項目;
5. 並行的任務執行;
6. 可以重用Maven或者ivy的repository進行依賴管理
參考資料來源
https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown
https://www.scala-sbt.org/index.html
Gulp
是一個開源 Task runner,建構於 nodejs 與 npm 上,基於串流方式自動化整合套件的方式,從起點進行每一個工作(Task),最後到達目的地(Destination)。
參考資料來源
https://ithelp.ithome.com.tw/articles/10185420
scons
python語言編寫的下一代的程序建造工具。功能上類似於make、autoconf與automake工具。具有以下優點:
1. 使用Python 腳本做為配置文件
2. 對於C,C++ 和Fortran, 內建支持可靠自動依賴分析. 不用像make 工具那樣需要執行"make depends"和"make clean"就可以獲得所有的依賴關係。
3. 內建支持C, C++, D, Java, Fortran, Yacc, Lex, Qt,SWIG 以及Tex/Latex。用戶還可以根據自己的需要進行擴展以獲得對需要編程語言的支持。
4. 支持make -j 風格的並行建造。相比make -j, SCons 可以同時運行N 個工作,而不用擔心代碼的層次結構。
5. 使用Autoconf 風格查找頭文件,函數庫,函數和類型定義。
6. 良好的誇平台性。SCons 可以運行在Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和OS/2 上
參考資料來源
https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html
Cmake
CMake是個一個開源的跨平台自動化建構系統,用來管理軟體建置的程式,並不相依於某特定編譯器。並可支援多層目錄、多個應用程式與多個函式庫。 它用組態檔控制建構過程(build process)的方式和Unix的make相似,只是CMake的組態檔取名為CMakeLists.txt。CMake並不直接建構出最終的軟體,而是產生標準的建構檔(如Unix的Makefile或Windows Visual C++的projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個整合開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是CMake和SCons等其他類似系統的區別之處。 CMake設定檔(CMakeLists.txt)可設定原始碼或目標程式庫的路徑、產生適配器(wrapper)、還可以用任意的順序建構執行檔。CMake支援in-place建構(二進檔和原始碼在同一個目錄樹中)和out-of-place建構(二進檔在別的目錄裡),因此可以很容易從同一個原始碼目錄樹中建構出多個二進檔。CMake也支援靜態與動態程式庫的建構。
參考資料來源
https://zh.wikipedia.org/wiki/CMake
Grunt
它是以 Node.js 為基礎所開發的命令列工具,在經過適當的設定之後,可以幫助程式開發者將一些重複性的工作自動化,減輕開發者與開發團隊的負擔。
Grunt可以處理的事情很多,例如精簡 CSS 程式或網頁的大小、編譯 CoffeeScript、unit test、linting 等,舉凡一般性的重複動作多半都可以使用這個工具來處理。
Grunt 背後有一個很大的生態系統(ecosystem),包含了大量的 plugins,使用者可以藉由這些 plugins 將自己的工作自動化,而使用者也可以很容易的把自己開發的 plugin 上傳到 npm 上面分享給其他人使用。
參考資料來源
https://blog.gtwang.org/web-development/grunt-javascript-task-runner/