Gradle 2.0用戶手冊——總覽(譯)

jopen 8年前發布 | 11K 次閱讀 Gradle 項目構建

2.1 特性

本章將介紹一系列Gradle的特性。

申明式構建和基于約定的構建

Gradle的核心是基于Groovy呈現了一種豐富的針對特定領域的語言,稱之為Domain Specific Language(DSL)。通過自由的申明式語言元素,Gradle將申明式構建推向了一個新的高度。這些元素也提供了基于約定構建的功能,用于支持Java,Groovy,OSGI,Web和Scala項目。而且,這種申明式語言是可以擴展的。你可以增加一些新的元素,或者對已有的元素進行增強,以此實現簡明的,易于維護和可讀性高的構建。

基于依賴的編程語言

因為聲明式語言位于任務圖頂端,所以你可以完全放心的將Grale加入到你的構建。它提供了足夠的靈活性以應對各式各樣的項目。

構建結構化

因為Gradle具有強大的功能以及容易使用的特點,你可以隨意在你的構建中添加通用的設計法則。例如:通過可復用的構建邏輯輕松構建。不應當存在不必要的內聯關系。不要強行分離已經在一起的部分(例如:項目層級關系)。避免分散的變化,那樣會讓項目變得難以維護。總之,你可以創建一個結構合理,易于維護,容易理解的構建。

底層API

在運行構建的生命周期里有,Gradle提供了很多內嵌的鉤子,這讓你可以從它的核心來監控和自定義它的配置和執行邏輯。這是非常讓人愉悅的一個特性。

Gradle Scales

Gradle Scales真的非常棒,從簡單的單一Project架構到大型的企業級多Project架構,它都能從容應付,帶來顯著的效率提升。

多項目構建

Gradle的多項目構建功能是十分杰出的。項目依賴十分重要。Gradle允許用戶在一個多項目構建中去塑造它們之間的依賴關系。Gradle遵循用戶的意圖,而不是讓用戶反過來按照Gradle的要求去完成構建。

Gradle也可以完成局部構建,如果你試圖構建一個子項目,Gradle會將此子項目依賴的子項目都進行構建。你也可以選擇重新構建子項目所依賴的其他子項目。這樣可以在一些大項目里節省很多時間。

多種方法管理依賴

不同的團隊有不同的依賴管理方法。Gradle提供了方便的方式以支持各種策略。不論是從Maven倉庫或Ivy倉庫的依賴傳遞管理,還是本地系統的文件夾或Jar包依賴,Gradle都能從容應付。

Gradle是第一個集成構建工具

Ant任務優先被支持。更重要的是Ant項目也被很好的支持。Gradle提供底層的導入以支持Ant項目,在運行的時候,Ant 的任務將轉換為native的Gradle任務。你可以通過Gradle依賴或者增強它們,甚至可以在你的build.xml里聲明它們的依賴關系。同樣的,也可以繼承properties,paths等等。

Gradle完全支持已有的Maven或者Ivy倉庫來構建實現發布和檢索依賴,Gradle也提供了一個將Maven的pom.xml轉換為Gradle腳本的轉換器。在運行時導入Maven項目也很快會被引入。

便于遷移

Gradle能適配各種結構。因此你總是可以并行的去構建你項目中的不同分支。通常我們建議編寫一些測試來確保這些分支是相同的。通過這種方法可以讓遷移變得更加可靠。這是使用依葫蘆畫瓢的方式來獲取的最佳重構實踐。

Groovy

Gradle構建腳本是通過Groovy編寫,而不是通過XML。和其他方式不同的是這并不僅僅只是生硬的展示動態語言的強大能力。那樣的話會讓構建維護變得十分困難。Gradle的整體設計是為了讓Gradle成為一種被廣泛使用的語言,而不僅僅只是一個僵硬的框架。Groovy是連接Gradle和你的項目的紐帶。Gradle提供了一些標準的應用場景,然而這些場景并沒有設么特殊的地方。Gradle的Groovy支持不僅僅只是一個噱頭。Gradle的API看上去和Groovy非常的相似,這是一種非常愉快和可靠的體驗。

Gradle Wrapper

Gradle wrapper使得你可以在沒有安裝Gradle的環境執行Gradle構建。在一些連續集成的服務器上,這顯得十分有用。同樣的,Gradle wrapper也使得一些開源項目變得容易構建。Gradle wrapper對企業來說也很有吸引力,因為對于終端機器并不需要任何的管理方式,并且可以指定適用特定的Gradle版本來避免一些可能產生的問題。

免費并且開源

Gradle是一個基于 ASL 協議的開源項目。

2.2 為什么是Groovy?

我們認為當運行構建腳本時,一個在XML之上的內部DSL(基于動態語言)的優勢是顯而易見的。目前有很多種這樣的語言,為什么是Grooby呢?原因在于Gradle是應用環境。雖然Gradle的核心目標是作為一個構建工具,但是它的主要應用場景卻是在Java項目里,這些項目里的成員都非常熟悉Java。我們認為一個構建最好對于它的所有應用者都應該是容易學習和熟悉的,所以選擇了Groovy。

基于上述原因,你可能會問為什么不直接使用Java作為構建腳本的語言。我們認為這是一個很好的問題。如果直接使用Java作為構建腳本的語言,可能對于你的團隊來說是最容易接受,學習成本最低的方案,但是因為Java語言自身的局限性,將Java作為構建語言并不是很好的方案(在 這里 你可以找到答案,這里很好的比較了Ant,XML,Java和Lisp),像Python,Groovy或者Ruby都會比java更適合完成構建工作。我們選擇Groovy就是為了為Java開發者提供最低的學習曲線,它的基本語法,符號,包結構等都非常接近于Java,Groovy不僅與java有著共同的基礎,而且還提供了更多的特性。

對于那些同時具有Python或Ruby的Java開發者,以上解釋也許不能接受。Gradle非常適合使用JRuby或者Jython來創建一個新的構建腳本引擎,不過這并不是我們目前的最高優先級任務。我們非常樂意支持任何社會團體和個人來實現一個額外構建引擎。

來自: http://www.cnblogs.com/wisekingokok/p/5113954.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!