Gradle是一種構(gòu)建工具,它拋棄了基于XML的構(gòu)建腳本,取而代之的是采用一種基于Groovy的內(nèi)部領(lǐng)域特定語(yǔ)言。近期,Gradle獲得了極大的關(guān)注,這也是我決定去研究Gradle的原因。
這篇文章是Gradle教程的第一篇,我們有兩個(gè)目標(biāo):
1. 幫助我們學(xué)會(huì)安裝Gradle。
2. 介紹一些基本概念,這有助于我們進(jìn)一步理解本教程的后面章節(jié)。
我們開始吧,先看一下如何安裝Gradle。
安裝Gradle
如果我們使用的操作系統(tǒng)是Windows或Linux,我們可以根據(jù)以下步驟安裝Gradle:
1. 從這個(gè)頁(yè)面下載二進(jìn)制文件。
2. 解壓Zip文件,加入環(huán)境變量(在PATH中加入GRADLE_HOME/bin目錄)。
如果在安裝過程中遇到問題,可以進(jìn)一步查看官方的安裝指南。
如果我們使用的操作系統(tǒng)是OS X,我們可以使用Homebrew安裝Gradle,在命令提示符中輸入以下命令:
brew install gradle
我們可以驗(yàn)證一下Gradle是否工作正常,在命令提示符中執(zhí)行命令gradle -v即可,如果Gradle工作正常,我們應(yīng)該能看到以下輸出結(jié)果(當(dāng)然,Windows和Linux用戶看到的結(jié)果會(huì)有細(xì)微差異)。
> gradle -v
------------------------------------------------------------
Gradle 1.12
------------------------------------------------------------
Build time: 2014-04-29 09:24:31 UTC
Build number: none
Revision: a831fa866d46cbee94e61a09af15f9dd95987421
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
Ivy: 2.2.0
JVM: 1.8.0 (Oracle Corporation 25.0-b70)
OS: Mac OS X 10.9.3 x86_64
下面我們來快速瀏覽一下Gradle構(gòu)建的基本概念。
Gradle構(gòu)建簡(jiǎn)介
在Gradle中,有兩個(gè)基本概念:項(xiàng)目和任務(wù)。請(qǐng)看以下詳解:
項(xiàng)目是指我們的構(gòu)建產(chǎn)物(比如Jar包)或?qū)嵤┊a(chǎn)物(將應(yīng)用程序部署到生產(chǎn)環(huán)境)。一個(gè)項(xiàng)目包含一個(gè)或多個(gè)任務(wù)。
任務(wù)是指不可分的最小工作單元,執(zhí)行構(gòu)建工作(比如編譯項(xiàng)目或執(zhí)行測(cè)試)。
那么,這些概念和Gradle的構(gòu)建又有什么聯(lián)系呢?好,每一次Gradle的構(gòu)建都包含一個(gè)或多個(gè)項(xiàng)目。
下面這張圖展示了上面所談到的這些概念的關(guān)系。
我們能夠使用以下配置文件對(duì)Gradle的構(gòu)建進(jìn)行配置:
Gradle構(gòu)建腳本(build.gradle)指定了一個(gè)項(xiàng)目和它的任務(wù)。
Gradle屬性文件(gradle.properties)用來配置構(gòu)建屬性。
Gradle設(shè)置文件(gradle.settings)對(duì)于只有一個(gè)項(xiàng)目的構(gòu)建而言是可選的,如果我們的構(gòu)建中包含多于一個(gè)項(xiàng)目,那么它就是必須的,因?yàn)樗枋隽四囊粋€(gè)項(xiàng)目參與構(gòu)建。每一個(gè)多項(xiàng)目的構(gòu)建都必須在項(xiàng)目結(jié)構(gòu)的根目錄中加入一個(gè)設(shè)置文件。
你可以在這篇文章中獲得更多關(guān)于Gradle構(gòu)建腳本的信息。
我們繼續(xù),下面我們看一下如果使用Gradle插件為構(gòu)建工作加入新功能。
更簡(jiǎn)短的Gradle插件簡(jiǎn)介
Gradle的設(shè)計(jì)理念是,所有有用的特性都由Gradle插件提供,一個(gè)Gradle插件能夠:
在項(xiàng)目中添加新任務(wù)
為新加入的任務(wù)提供默認(rèn)配置,這個(gè)默認(rèn)配置會(huì)在項(xiàng)目中注入新的約定(如源文件位置)。
加入新的屬性,可以覆蓋插件的默認(rèn)配置屬性。
為項(xiàng)目加入新的依賴。
Gradle用戶手冊(cè)提供了一系列標(biāo)準(zhǔn)Gradle插件。
在我們?yōu)轫?xiàng)目加入Gradle插件時(shí),我們可以根據(jù)名稱或類型來指定Gradle插件。
我們可以將下面這行代碼加入到build.gradle文件中,它通過名稱指定Gradle插件(這里的名稱是foo):
apply plugin: 'foo'
另一方面,我們也可以通過類型指定Gradle插件,將下面這行代碼加入到build.gradle文件中(這里的類型是com.bar.foo):
apply plugin: 'com.bar.foo'