
【基本介紹】
Gradle是一個基于JVM的構(gòu)建工具,是一款通用靈活的構(gòu)建工具,支持maven, Ivy倉庫,支持傳遞性依賴管理,而不需要遠(yuǎn)程倉庫或者是pom.xml和ivy.xml配置文件,基于Groovy,build腳本使用Groovy編寫。【軟件功能】
-gradle對多工程的構(gòu)建支持很出色,工程依賴是gradle的第一公民。-gradle支持局部構(gòu)建。
-支持多方式依賴管理:包括從maven遠(yuǎn)程倉庫、nexus私服、ivy倉庫以及本地文件系統(tǒng)的jars或者dirs
-gradle是第一個構(gòu)建集成工具,與ant、maven、ivy有良好的相容相關(guān)性。
-輕松遷移:gradle適用于任何結(jié)構(gòu)的工程,你可以在同一個開發(fā)平臺平行構(gòu)建原工程和gradle工程。通常要求寫相關(guān)測試,以保證開發(fā)的插件的相似性,這種遷移可以減少破壞性,盡可能的可靠。這也是重構(gòu)的最佳實踐。
-gradle的整體設(shè)計是以作為一種語言為導(dǎo)向的,而非成為一個嚴(yán)格死板的框架。
-免費開源
【軟件特色】
gradle可以提供:1.一種可切換的,像maven一樣的基于約定的構(gòu)建框架,卻又從不鎖住你(約定優(yōu)于配置)
2. 強(qiáng)大的支持多工程的構(gòu)建
3. 強(qiáng)大的依賴管理(基于Apache Ivy),提供最大的便利去構(gòu)建你的工程
4. 全力支持已有的Maven或者Ivy倉庫基礎(chǔ)建設(shè)
5. 支持傳遞性依賴管理,在不需要遠(yuǎn)程倉庫和pom.xml和ivy配置文件的前提下
6 基于groovy腳本構(gòu)建,其build腳本使用groovy語言編寫
7 具有廣泛的領(lǐng)域模型支持你的構(gòu)建
【軟件組成】
1. Project與Task在Gradle中,每一個待構(gòu)建的工程是一個Project,構(gòu)建一個Project需要執(zhí)行一系列Task,比如編譯、打包這些構(gòu)建過程的子過程都對應(yīng)著一個Task。具體來說,一個apk文件的構(gòu)建包含以下Task:Java源碼編譯、資源文件編譯、Lint檢查、打包以生成最終的apk文件等等。
2. 插件
插件的核心工作有兩個:一是定義Task;而是執(zhí)行Task。也就是說,我們想讓Gradle能正常工作,完成整個構(gòu)建流程中的一系列Task的執(zhí)行,必須導(dǎo)入合適的插件,這些插件中定義了構(gòu)建Project中的一系列Task,并且負(fù)責(zé)執(zhí)行相應(yīng)的Task。
在新建工程的app模塊的build.gradle文件的第一行,往往都是如下這句:
apply plugin: 'com.android.application'
這句話的意思就是應(yīng)用“com.android.application“這個插件來構(gòu)建app模塊,app模塊就是Gradle中的一個Project。也就是說,這個插件負(fù)責(zé)定義并執(zhí)行Java源碼編譯、資源文件編譯、打包等一系列Task。實際上"com.android.application"整個插件中定義了如下4個頂級任務(wù):
·assemble: 構(gòu)建項目的輸出(apk)
·check: 進(jìn)行校驗工作
·build: 執(zhí)行assemble任務(wù)與check任務(wù)
·clean: 清除項目的輸出
當(dāng)我們執(zhí)行一個任務(wù)時,會自動執(zhí)行它所依賴的任務(wù)。比如,執(zhí)行assemble任務(wù)會執(zhí)行assembleDebug任務(wù)和assembleRelease任務(wù),這是因為一個Android項目至少要有debug和release這兩個版本的輸出。
3. Gradle配置文件
我們在Android Studio中新建一個工程,可以得到如下的工程結(jié)構(gòu)圖:

上面我們說過,Android Studio中的一個Module即為Gradle中的一個Project。上圖的app目錄下,存在一個build.gradle文件,代表了app Module的構(gòu)建腳本,它定義了應(yīng)用于本模塊的構(gòu)建規(guī)則。我們可以看到,工程根目錄下也存在一個build.gradle文件,它代表了整個工程的構(gòu)建,其中定義了適用于這個工程中所有模塊的構(gòu)建規(guī)則。
接下來我們介紹一下上圖中其他幾個Gradle配置文件:
gradle.properties: 從它的名字可以看出,這個文件中定義了一系列“屬性”。實際上,這個文件中定義了一系列供build.gradle使用的常量,比如keystore的存儲路徑、keyalias等等。
gradlew與gradlew.bat: gradlew為Linux下的shell腳本,gradlew.bat是Windows下的批處理文件。gradlew是gradle wrapper的縮寫,也就是說它對gradle的命令進(jìn)行了包裝,比如我們進(jìn)入到指定Module目錄并執(zhí)行“gradlew.bat assemble”即可完成對當(dāng)前Module的構(gòu)建(Windows系統(tǒng)下)。
local.properties: 從名字就可以看出來,這個文件中定義了一些本地屬性,比如SDK的路徑。
settings.gradle: 假如我們的項目包含了不只一個Module時,我們想要一次性構(gòu)建所有Module以完成整個項目的構(gòu)建,這時我們需要用到這個文件。比如我們的項目包含了ModuleA和ModuleB這兩個模塊,則這個文件中會包含這樣的語句:include ':ModuleA', ':ModuleB'。
4. 構(gòu)建腳本
首先我們來看一下工程目錄下的build.gradle,它指定了真?zhèn)€整個項目的構(gòu)建規(guī)則,它的內(nèi)容如下:
buildscript {
repositories {
jcenter() //構(gòu)建腳本中所依賴的庫都在jcenter倉庫下載
}
dependencies {
//指定了gradle插件的版本
classpath 'com.android.tools.build:gradle:1.5.0'
}
}
allprojects {
repositories {
//當(dāng)前項目所有模塊所依賴的庫都在jcenter倉庫下載
jcenter()
}
}
我們再來簡單介紹下app模塊的build.gradle的內(nèi)容:
//加載用于構(gòu)建Android項目的插件
apply plugin: 'com.android.application'
android { //構(gòu)建Android項目使用的配置
compileSdkVersion 23 //指定編譯項目時使用的SDK版本
buildToolsVersion "23.0.1" //指定構(gòu)建工具的版本
defaultConfig {
applicationId "com.absfree.debugframwork" //包名
minSdkVersion 15 //指定支持的最小SDK版本
targetSdkVersion 23 //針對的目標(biāo)SDK版本
versionCode 1
versionName "1.0"
}
buildTypes { //針對不同的構(gòu)建版本進(jìn)行一些設(shè)置
release { //對release版本進(jìn)行的設(shè)置
minifyEnabled false //是否開啟混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //指定混淆文件的位置
}
}
}
dependencies { //指定當(dāng)前模塊的依賴
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
【安裝教程】
gradle安裝配置教程下載Gradle安裝包
將解壓好的gradle的全路徑先拷貝,如下圖所示。

右鍵桌面上【此電腦】,然后在點擊彈出菜單里的【屬性】選項,如下圖所示。

打開電腦系統(tǒng)對話框后,點擊左側(cè)導(dǎo)航欄的【高級系統(tǒng)設(shè)置】,如下圖所示。

在彈出的系統(tǒng)屬性對話框里,點擊下面的【環(huán)境變量】按鈕,如下所示。

在彈出的環(huán)境變量界面上,先點擊系統(tǒng)變量下方的【新建】按鈕,然后在彈出的新建對話框里輸入變量名和變量值。
變量名:GRADLE_HOME
變量值:就是gradle解壓的路徑。

在系統(tǒng)變量里找到【path】并選中,然后點擊下方的【編輯】按鈕,在彈出的編輯環(huán)境變量對話框里,點擊右側(cè)的【新建】,如下圖所示。

點擊新建后,會新增一行,在這里輸入【%GRADLE_HOME%\bin】,如下圖所示。

配置好gradle后,打開cmd運行對話框,在cmd對話框里輸入【gradle -version】,然后回車,此時系統(tǒng)會返回gradle的信息,表示gradle安裝配置成功,如下圖所示。

【使用教程】
gradle使用教程gradle怎么構(gòu)建項目結(jié)構(gòu),怎么搭建gradle項目
在用gradel構(gòu)建java項目前,先查看下自己安裝的grade版本,如下圖所示。

先自己在電腦上創(chuàng)建一個gradel項目文件夾,名稱自己隨便定義,如下圖所示。

然后在創(chuàng)建好的gradel項目文件夾里創(chuàng)建個gradel搭建生成文件build.gradel,如下圖所示。

在build.gradel文件里寫上構(gòu)建java項目結(jié)構(gòu)的代碼,如下圖所示。
apply plugin: 'java'
task "create-dirs" << {
sourceSets*.java.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

然后打開cmd命令窗口,用cd命令進(jìn)入gradel的文件夾層,如下圖所示。

輸入gradel構(gòu)建java項目的命令:gradle create-dirs,然后回車,如下圖所示。

回車后,cmd命令窗口會顯示出創(chuàng)建java項目的信息,看到BUILD SUCCESSFUL,表示gradle構(gòu)建java項目完成,如下圖所示。

完成后,我們到新建的gradle文件下看看gradle給我們生成的java工程文件目錄吧,跟Maven生成的類似,如下圖所示。

【相關(guān)比較】
gradle和maven的區(qū)別Gradle 和 Maven 都是項目工具 - build automation system, 但是 Gradle 的有點在于不是用 XML 的繁瑣配置 (Mavan 是基于 XML 配置)。取而代之,Gradle 采用了 Groovy 語言去配置,因此大大簡化了構(gòu)建代碼的行數(shù)。
gradle相比于maven有很大的靈活性,目前gradle的使用者越來越多。而由于maven之前處于主流,并且在某些方面maven較gradle還有一些優(yōu)點,所以maven和gradle并存。在github上大多數(shù)優(yōu)秀的開源項目會同時提供maven和gradle兩種添加依賴的方式。






































