下面列出了一些 Gradle 的特性:
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)建
聲明式語言位于一個通用的任務(wù)圖,你可以充分利用你的建立。它提供了適應(yīng)您的獨(dú)特需求的最大靈活性的工具。
工具的柔軟性和豐富性允許您用一般性設(shè)計(jì)原則來構(gòu)建項(xiàng)目。你可以創(chuàng)建一個結(jié)構(gòu)良好,易于維護(hù),易于理解的建立。
工具允許您監(jiān)視和自定義配置和執(zhí)行行為
Gradle 伸縮性能非常好。它會增加你的生產(chǎn)力,從簡單的單項(xiàng)目到建立龐大的企業(yè)多項(xiàng)目建設(shè)?!?/p>
Gradle支持多項(xiàng)目建設(shè)非常突出。項(xiàng)目依賴是一等公民。
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)口就快來了。
Gradle 可以適應(yīng)任何已有的結(jié)構(gòu)。我們通常建議寫測試,確保與生產(chǎn)環(huán)境類似。這樣的遷移是更少的破壞性和盡可能的可靠。這是繼重構(gòu)應(yīng)用小步驟的最佳實(shí)踐。
工具的構(gòu)建腳本是用 Groovy,不是XML。但是,不像其他的方法,這不是簡單地將動態(tài)語言的原始腳本進(jìn)行能力的擴(kuò)展。這只會導(dǎo)致一個保持非常困難的構(gòu)建。工具的總體設(shè)計(jì)是面向的是將 Gradle 作為一種語言,而不是一個嚴(yán)格的框架。工具提供了一些標(biāo)準(zhǔn)的故事,但他們不做任何形式的限制。這是我們的一個主要特點(diǎn)。
該Gradle包裝允許你機(jī)器上沒有安裝Gradle工具也能執(zhí)行 Gradle 的構(gòu)建
遵守ASL開源協(xié)議
我們認(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)建腳本引擎。
更多建議: