Gradle引人注目的特性集

振宇要低調發表於2017-05-23

  Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化建構工具。它使用一種基於Groovy的特定領域語言來宣告專案設定,而不是傳統的XML。當前其支援的語言限於Java、Groovy和Scala,計劃未來將支援更多的語言。

1、可表達性的構建語言

  在Gradle指令碼中每一個元素都有一個與Java類一對一的對映。在許多情況下Groovy化的類相對於Java,程式碼更加簡潔,並且允許使用如閉包這樣的新語言特性。

2、Gradle就是Groovy

  Ant和maven這樣傑出的構建工具使用XML來定義他們的構建邏輯。XML很容易讀和寫,但是如果內容太多就不容易維護了。XML並不具備很強的表達性,這使得它很難定義複雜的定製邏輯。Gradle採用一種不同的方式,是一種具有可讀性和表達性的構建語言。能夠用程式語言來表達你需要的構建是Gradle的一大亮點。

3、靈活的約定

  Gradle針對你的專案給予指導和有意義的預設值。Gradle中的每個Java專案都確切的知道原始碼和測試類檔案的位置。但改變預設值也非常的簡單,通過約定屬性即可改變。Gradle的約定和maven提供的約定相似,但不會讓你感覺到被限制。maven非常武斷,它建議一個工程包含一個Java原始碼目錄且只產生一個jar檔案。Gradle允許你輕鬆的打破約定。ant不會給你任何關於如何組織構建指令碼方面的指導,以確保最大程度的靈活性。Gradle則折中選擇和,即提供約定,又給予你改變約定的能力。Gradle是不武斷工具上的一個武斷的框架。

4、魯棒和強大的依賴管理

  專案會依賴第三方元件,你編譯好的元件也可能會被其他團隊所依賴。外部依賴通過倉庫獲得,而倉庫的型別各種各樣,從純檔案系統到成熟的企業倉庫。外部依賴還可能存在對其他類庫或資源的引用——傳遞性依賴。Gradle提供了一個基礎設施去管理解析、獲取和儲存依賴的複雜性。一旦他們被下載並儲存到本地快取中,你的專案就可以使用了。

5、可擴充套件的構建

  Gradle支援通過指定任務的輸入和輸出進行增量型構建。它準確的找出哪些任務需要跳過,哪些需要構建或者部分構建。Gradle會負責重新構建需要的部分。
  自動化測試、整合測試和功能測試是構建過程的一部分。將需要短時間執行的測試和那些需要準備資源和外部依賴的測試分離是有意義的。Gradle支援測試的並行執行。

6、輕鬆的可擴充套件性

  大部分企業構建都不一樣,它們也不會解決相同的問題。一旦完成了建立基本構建指令碼的初始化階段,你就會開始實現定製邏輯。Gradle提供一種可以在類定義中寫定製化邏輯的方法,這樣可以讓維護和編寫程式碼更簡單。如果你想要在多個構建或者專案中分享可重用程式碼,Gradle提供外掛這種擴充套件機制。而且寫一個外掛也非常的簡單。

7、和其他構建工具的整合

  Gradle與Ant、Maven、Ivy可以做很好的整合。對於Ant,Gradle允許你匯入現有的構建邏輯並重用標準的Ant任務。Gradle與maven和Ivy倉庫100%相容。你可以從中獲取依賴,也可以釋出工件。對於已有的maven構建,Gradle提供了一個轉換器可以將構建邏輯轉換為Gradle的構建指令碼。

8、社群和公司的推動

  除了Gradle中標準的外掛,Gradle社群幾乎每天都會發布新的功能(可重用的外掛)。Gradleware是Gradle背後的技術服務和支援公司。它不僅提供了關於Gradle的專業建議,它的目標更是指向了更大範圍的企業級別的自動化諮詢。

總結

  總結起來,Gradle是一個為企業準備的構建系統,由具有宣告式和表達性的Groovy的DSL支援。它結合了靈活性和基於約定優於配置思想的擴充套件性,以及對傳統依賴管理的支援。它背後有一個專業的服務公司(Gradleware)和強大的社群參與,Gradle成為了許多開源專案和企業構建方案的第一選擇。

相關文章