第2章 Overview 總覽

2018-02-24 15:56 更新

2.1. Features 特性

下面列出了一些 Gradle 的特性:

Declarative builds and build-by-convention聲明式構(gòu)建,符合公約

gradle 的核心是在 基于 Groovy 對 Domain Specific Language (DSL)語言進(jìn)行一個豐富的擴(kuò)展。根據(jù)喜好,Gradle 將陳述建立下一級提供聲明性語言元素。這些元素也提供支持 Java,Groovy,OSGi,Web和Scala 項(xiàng)目。甚至更多,這說明語言是可擴(kuò)展的。添加您自己的新語言元素或加強(qiáng)現(xiàn)有的,從而提供了簡潔,易于維護(hù)和易于理解的構(gòu)建

Language for dependency based programming 依賴型編程語言

聲明式語言位于一個通用的任務(wù)圖,你可以充分利用你的建立。它提供了適應(yīng)您的獨(dú)特需求的最大靈活性的工具。

Structure your build 良好的結(jié)構(gòu)

工具的柔軟性和豐富性允許您用一般性設(shè)計(jì)原則來構(gòu)建項(xiàng)目。你可以創(chuàng)建一個結(jié)構(gòu)良好,易于維護(hù),易于理解的建立。

Deep API 深層次的API

工具允許您監(jiān)視和自定義配置和執(zhí)行行為

Gradle scales 可伸縮

Gradle 伸縮性能非常好。它會增加你的生產(chǎn)力,從簡單的單項(xiàng)目到建立龐大的企業(yè)多項(xiàng)目建設(shè)?!?/p>

Multi-project builds 多項(xiàng)目構(gòu)建

Gradle支持多項(xiàng)目建設(shè)非常突出。項(xiàng)目依賴是一等公民。

Gradle is the first build integration tool Gradle是第一個建立的集成工具

Ant 任務(wù)是一等公民。更有趣的是,Ant 的項(xiàng)目也都是一等公民。Gradle 提供深入的引用給 Ant 項(xiàng)目,在運(yùn)行時,可以轉(zhuǎn)換 Ant 目標(biāo)到 原生的Gradle 任務(wù)。你可以依靠他們的工具,可以提高他們的工具,你甚至可以在build.xml 宣布對 Gradle 任務(wù)的依賴。相同的集成提供了性能,路徑,等…

Gradle 支持現(xiàn)有的 Maven 或 Ivy 倉庫依賴關(guān)系。工具還提供了一個轉(zhuǎn)換器將 Maven pom.xml 轉(zhuǎn)成 Gradle 腳本。Maven 項(xiàng)目運(yùn)行的進(jìn)口就快來了。

Ease of migration 易遷移

Gradle 可以適應(yīng)任何已有的結(jié)構(gòu)。我們通常建議寫測試,確保與生產(chǎn)環(huán)境類似。這樣的遷移是更少的破壞性和盡可能的可靠。這是繼重構(gòu)應(yīng)用小步驟的最佳實(shí)踐。

Groovy 語言

工具的構(gòu)建腳本是用 Groovy,不是XML。但是,不像其他的方法,這不是簡單地將動態(tài)語言的原始腳本進(jìn)行能力的擴(kuò)展。這只會導(dǎo)致一個保持非常困難的構(gòu)建。工具的總體設(shè)計(jì)是面向的是將 Gradle 作為一種語言,而不是一個嚴(yán)格的框架。工具提供了一些標(biāo)準(zhǔn)的故事,但他們不做任何形式的限制。這是我們的一個主要特點(diǎn)。

The Gradle wrapper 關(guān)于Gradle的包裝

該Gradle包裝允許你機(jī)器上沒有安裝Gradle工具也能執(zhí)行 Gradle 的構(gòu)建

Free and open source 免費(fèi)開源

遵守ASL開源協(xié)議

2.2. Why Groovy? 為啥用 Groovy

我們認(rèn)為,當(dāng)使用構(gòu)建腳本作為內(nèi)部 DSL (基于動態(tài)語言)比 XML 有更大的優(yōu)勢。有很多動態(tài)語言,但為啥是 Groovy?答案是在于上下文工具的操作。雖然 Gradle 是一個通用的構(gòu)建工具,這是它的核心,但它的主要焦點(diǎn)還是是 Java 項(xiàng)目。在這樣的項(xiàng)目中,團(tuán)隊(duì)成員更加熟悉 Java。我們考慮的是編譯應(yīng)該都所有成員來說是竟可能的透明。

你可能會說,為什么不使用 Java 作為構(gòu)建腳本。這里有一個問題,就是對于團(tuán)隊(duì)的最高的透明度和最低的學(xué)習(xí)曲線,但是 由于 Java 語言的限制,作為構(gòu)建語言效果并不理想(參考?http://www.defmacro.org/ramblings/lisp.html?可以看到 Ant, XML, Java 和 Lisp 的對比,有趣的是,Java 的語法實(shí)際上是 Groovy 的語法。)。其他語言, Python, Groovy 或者 Ruby 都更能勝任這個工作。我們選擇 Groovy 是因?yàn)閷τ?Java 使用者來說有更高的透明度。它的基本語法與 Java 類似,包括 本文系統(tǒng),包結(jié)構(gòu)和其他方面。Groovy 提供了最重要內(nèi)容但都是符合 Java 基礎(chǔ)功能的。

對于對 Python 或 Ruby 知識擁有強(qiáng)烈的學(xué)習(xí)欲望的 Java 開發(fā)者來說,上述論點(diǎn)不適用。該工具的設(shè)計(jì)非常適合于創(chuàng)建另一個建立在 JRuby 和Jython 腳本引擎。對于我們來說暫時它只是不具有最高優(yōu)先級。我們高興地支持任何社區(qū)的努力來創(chuàng)建額外的構(gòu)建腳本引擎。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號