第2章 Overview 總覽

2018-02-24 15:56 更新

2.1. Features 特性

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

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

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

Language for dependency based programming 依賴(lài)型編程語(yǔ)言

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

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

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

Deep API 深層次的API

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

Gradle scales 可伸縮

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

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

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

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

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

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

Ease of migration 易遷移

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

Groovy 語(yǔ)言

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

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

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

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

遵守ASL開(kāi)源協(xié)議

2.2. Why Groovy? 為啥用 Groovy

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)