Gradle面向Java應(yīng)用為主,是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化構(gòu)建開源工具。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項(xiàng)目設(shè)置,目前也增加了基于Kotlin語言的kotlin-based DSL,當(dāng)前其支持的語言C++、Java、Groovy、Kotlin、Scala和Swift,拋棄了基于XML的各種繁瑣配置。
Gradle軟件簡介
Gradle是一個(gè)基于JVM的構(gòu)建工具,是一款通用靈活的構(gòu)建工具,支持maven, Ivy倉庫,支持傳遞性依賴管理,而不需要遠(yuǎn)程倉庫或者是pom.xml和ivy.xml配置文件,基于Groovy,build腳本使用Groovy編寫。
Gradle軟件特色
1、自由,開源。
2、易于移值。
3、基于聲明和基于約定的構(gòu)建。
4、可以結(jié)構(gòu)化構(gòu)建,易于維護(hù)和理解。
5、多種方式的依賴管理。
6、多項(xiàng)目構(gòu)建的支持。
7、腳本采用Groovy編寫,易于維護(hù)。
8、是第一個(gè)構(gòu)建集成工具。集成了Ant, maven的功能。
9、依賴型的編程語言。
10、有良好的擴(kuò)展性。有增量構(gòu)建功能來克服性能瓶頸問題。
11、通過Gradle Wrapper允許你在沒有安裝Gradle的機(jī)器上進(jìn)行Gradle構(gòu)建。
12、有高級(jí)的API允許你在構(gòu)建執(zhí)行的整個(gè)過程當(dāng)中,對(duì)它的核心進(jìn)行監(jiān)視,或者是配置它的行為。
安裝教程
1、安裝JDK,并配置JAVA_HOME環(huán)境變量。因?yàn)镚radle是用Groovy編寫的,而Groovy基于JAVA。另外,Java版本要不小于1.5。
2、下載本站提供的gradle最新版本,官方下載地址是:http://services.gradle.org/distributions ,用戶在這里下載你要的版本。
3、解壓。如果你下載的是gradle-xx-all.zip的完整包,它會(huì)有以下內(nèi)容:
二進(jìn)制文件
用戶手冊(cè)(包括PDF和HTML兩種版本)
DSL參考指南
API手冊(cè)(包括Javadoc和Groovydoc)
樣例
源代碼,僅供參考使用。
4、配置環(huán)境變量。配置GRADLE_HOME到你的gradle根目錄當(dāng)中,然后把%GRADLE_HOME%/bin(linux或mac的是$GRADLE_HOME/bin)加到PATH的環(huán)境變量。
linux用戶可以在~/.bashrc文件中配置。
配置完成之后,運(yùn)行g(shù)radle -v,檢查一下是否安裝無誤。如果安裝正確,它會(huì)打印出Gradle的版本信息,包括它的構(gòu)建信息,Groovy, Ant, Ivy, 當(dāng)前JVM和當(dāng)前系統(tǒng)的版本信息。
另外,可以通過GRADLE_OPTS或JAVA_OPTS來配置Gradle運(yùn)行時(shí)的JVM參數(shù)。不過,JAVA_OPTS設(shè)置的參數(shù)也會(huì)影響到其他的JAVA應(yīng)用程序。
環(huán)境變量配置
首先明確gradle跟maven一樣,也有一個(gè)配置文件,maven里面是叫pom.xml,而在gradle中是叫build.gradle。Android Studio中的android項(xiàng)目通常至少包含兩個(gè)build.gradle文件,一個(gè)是project范圍的,另一個(gè)是module范圍的,由于一個(gè)project可以有多個(gè)module,所以每個(gè)module下都會(huì)對(duì)應(yīng)一個(gè)build.gradle。這么說有點(diǎn)抽象,看下面這個(gè)圖:
這是一個(gè)android工程的project視圖,上面那個(gè)是module下的build.gradle文件。下面那個(gè)是project下的build.gradle文件。這兩個(gè)文件是有區(qū)別的,project下的build.gradle是基于整個(gè)project的配置,而module下的build.gradle是每個(gè)模塊自己的配置。下面看下這兩個(gè)build.gradle里面的內(nèi)容:
project#build.gradle:
注:大家可能很奇怪,為什么倉庫repositories需要聲明兩次,這其實(shí)是由于它們作用不同,buildscript中的倉庫是gradle腳本自身需要的資源,而allprojects下的倉庫是項(xiàng)目所有模塊需要的資源。所以大家千萬不要配錯(cuò)了。
module#build.gradle:
defaultConfig中是一些基本配置,它會(huì)同時(shí)應(yīng)用到debug/release版本上,下面列舉了所有可配項(xiàng)及對(duì)應(yīng)的值:
buildTypes結(jié)點(diǎn)很重要,這里可以配置構(gòu)建的版本的一些參數(shù),默認(rèn)有兩個(gè)構(gòu)建版本release/debug,當(dāng)然你可以自定義一個(gè)構(gòu)建版本,比如叫foo,然后通過gradlew assembleFoo就可以生成對(duì)應(yīng)的apk了。
buildTypes里還有很多可配置項(xiàng),下面列舉了所有可配項(xiàng)以及debug/release版本的默認(rèn)值:
現(xiàn)在大家對(duì)build.gradle已經(jīng)初步了解了,我們?cè)倏聪缕渌恍┡cgradle相關(guān)的文件:
1.gradle.properties:
從名字上就知道它是一個(gè)配置文件,沒錯(cuò),這里面可以定義一些常量供build.gradle使用,比如可以配置簽名相關(guān)信息如keystore位置,密碼,keyalias等。
2.settings.gradle:
這個(gè)文件是用來配置多模塊的,比如你的項(xiàng)目有兩個(gè)模塊module-a,module-b,那么你就需要在這個(gè)文件中進(jìn)行配置,格式如下:
3.gradle文件夾:
這里面有兩個(gè)文件,gradle-wrapper.jar和gradle-wrapper.properties,它們就是gradle wrapper。gradle項(xiàng)目都會(huì)有,你可以通過命令gradle init來創(chuàng)建它們(前提是本地安裝了gradle并且配置到了環(huán)境變量中)。
4.gradlew和gradlew.bat:
這分別是linux下的shell腳本和windows下的批處理文件,它們的作用是根據(jù)gradle-wrapper.properties文件中的distributionUrl下載對(duì)應(yīng)的gradle版本。這樣就可以保證在不同的環(huán)境下構(gòu)建時(shí)都是使用的統(tǒng)一版本的gradle,即使該環(huán)境沒有安裝gradle也可以,因?yàn)間radle wrapper會(huì)自動(dòng)下載對(duì)應(yīng)的gradle版本。
gradlew的用法跟gradle一模一樣,比如執(zhí)行構(gòu)建gradle build命令,你可以用gradlew build。gradlew即gradle wrapper的縮寫。
2.gradle倉庫:
gradle有三種倉庫,maven倉庫,ivy倉庫以及flat本地倉庫。聲明方式如下:
3.gradle任務(wù):
gradle中有一個(gè)核心概念叫任務(wù),跟maven中的插件目標(biāo)類似。
gradle的android插件提供了四個(gè)頂級(jí)任務(wù)
執(zhí)行任務(wù)可以通過gradle/gradlew+任務(wù)名稱的方式執(zhí),執(zhí)行一個(gè)頂級(jí)任務(wù)會(huì)同時(shí)執(zhí)行與其依賴的任務(wù),比如你執(zhí)行
它通常會(huì)執(zhí)行:
這時(shí)會(huì)在你項(xiàng)目的build/outputs/apk或者build/outputs/aar目錄生成輸出文件
注:linux下執(zhí)行構(gòu)建任務(wù)需要首先更改gradlew腳本的權(quán)限,然后才能執(zhí)行該腳本:
可以通過:
列出所有可用的任務(wù)。在Android Studio中可以打開右側(cè)gradle視圖查看所有任務(wù)。
更新日志
1、支持增量構(gòu)建,現(xiàn)在針對(duì) Java 匯編、復(fù)制、歸檔有更優(yōu)秀的 up-to-date 檢查。還可以讓 Gradle 將任何任務(wù)輸入視為具有新的 @Classpath 注釋的類路徑。
2、Gradle 的本機(jī)構(gòu)建支持的用戶在此版本中獲得了一個(gè)重要的工具,是很多人比較熟悉的用于經(jīng)典多項(xiàng)目構(gòu)建的 buildDependents。現(xiàn)在可以將新的 assembleDependents 和 buildDependents 用于本機(jī)構(gòu)建。這對(duì)于你要確定自己的更改是否對(duì)依賴于它們的任何內(nèi)容產(chǎn)生不利影響非常有用。
3、如果你使用IDE,并且在構(gòu)建(特別是動(dòng)態(tài)構(gòu)建)中有很多依賴項(xiàng),那么可能會(huì)需要很長的導(dǎo)入時(shí)間。此版本中已解決了基礎(chǔ)問題,從而大大提高了導(dǎo)入時(shí)間。企業(yè)構(gòu)建的一個(gè)例子顯示了有100倍的改進(jìn)!
4、Kotlin 構(gòu)建腳本在 Windows 平臺(tái)上編譯腳本的錯(cuò)誤已經(jīng)修復(fù),在Windows上嘗試此功能更容易。
5、用于聲明任務(wù)的快捷語法(通過<<)現(xiàn)在已被棄用。