下面列出了一些 Gradle 的特性:
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)建
聲明式語(yǔ)言位于一個(gè)通用的任務(wù)圖,你可以充分利用你的建立。它提供了適應(yīng)您的獨(dú)特需求的最大靈活性的工具。
工具的柔軟性和豐富性允許您用一般性設(shè)計(jì)原則來(lái)構(gòu)建項(xiàng)目。你可以創(chuàng)建一個(gè)結(jié)構(gòu)良好,易于維護(hù),易于理解的建立。
工具允許您監(jiān)視和自定義配置和執(zhí)行行為
Gradle 伸縮性能非常好。它會(huì)增加你的生產(chǎn)力,從簡(jiǎn)單的單項(xiàng)目到建立龐大的企業(yè)多項(xiàng)目建設(shè)?!?/p>
Gradle支持多項(xiàng)目建設(shè)非常突出。項(xiàng)目依賴(lài)是一等公民。
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)了。
Gradle 可以適應(yīng)任何已有的結(jié)構(gòu)。我們通常建議寫(xiě)測(cè)試,確保與生產(chǎn)環(huán)境類(lèi)似。這樣的遷移是更少的破壞性和盡可能的可靠。這是繼重構(gòu)應(yīng)用小步驟的最佳實(shí)踐。
工具的構(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)。
該Gradle包裝允許你機(jī)器上沒(méi)有安裝Gradle工具也能執(zhí)行 Gradle 的構(gòu)建
遵守ASL開(kāi)源協(xié)議
我們認(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)建腳本引擎。
更多建議: