簡介
Gradle 是一個支持多語言的構(gòu)建工具各聘,并且可以與大多數(shù)IDE 集成
使用并發(fā)和緩存機制構(gòu)建蝴光,使得效率較高她渴。
參考資料
使用方式
1、使用 gradle
通用 Gradle 二進(jìn)制 壓縮包下載解壓配置環(huán)境變量蔑祟,也可以使用軟件倉庫安裝 例如 brew install gradle
2趁耗、使用 gradle wrapper
gradle wrapper 的命令為 gradlew,gradlew 會依據(jù)gradle-wrapper.properties 配置的gradle 版本來構(gòu)建項目疆虚,當(dāng)配置的gradle 版本不存在苛败,會自動安裝。gradle wrapper 一般和項目文件一起使用 (如下圖)径簿,并且添加到版本管理中罢屈,使得開發(fā)項目的gradle 構(gòu)建版本一致。
gradle-wrapper.properties 配置
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
3牍帚、gradle 與gradlew 區(qū)別
gradlew 會調(diào)用 gradle-wrapper.properties 配置的gradle版本進(jìn)行項目構(gòu)建儡遮。如果配置的gradle 版本不存在,會自動下載
gradlew 調(diào)用 gradle 進(jìn)行項目構(gòu)建
gradlew 命令與 gradle 命名可以替換使用暗赶,區(qū)別是他們使用的gradle 版本依據(jù)配置可能不一樣
4鄙币、IDEA 導(dǎo)入 gradle 項目
File —>new —> project from exists source —>gradle —finish
idea 構(gòu)建成功后肃叶,會自動設(shè)置sourceSet ,module十嘿。如果module因惭,sourceSet 沒有自動設(shè)置,可能是由于編譯或者構(gòu)建失敗
相關(guān)文件與配置
1绩衷、gradle 安裝目錄
含有g(shù)radle.properties ,bin/gradle 執(zhí)行文件
2蹦魔、用戶目錄 (USER_HOME/.gradle)
1、該目錄為gradle wrapper 下載 gradle 安裝目錄
2咳燕、gradle.properties 為屬性配置文件
3勿决、init.gradle 為初始化配置文件,比如倉庫鏡像全局配置招盲。
init.gradle 替換國內(nèi)倉庫低缩,如果沒有該文件,可以新建到這個位置
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_JCENTER_URL }
maven { url ALIYUN_GOOGLE_URL }
maven { url ALIYUN_GRADLE_PLUGIN_URL }
}
}
3曹货、項目目錄
1咆繁、含有g(shù)radle wrapper 相關(guān)文件 gradle/wrapper ,gradlew(gradlew.bat)
2、含有項目構(gòu)建配置Script 顶籽,setting.gradle,build.gradle
4玩般、屬性配置與腳本配置
屬性配置
- 環(huán)境變量
- gradle.properties :用戶目錄,項目目錄礼饱,安裝目錄
- gradle 讀取所有配置坏为,并且合并配置
Script 配置
- initScript :init.gradle (用戶目錄) ,接口來源 Gradle +Script
- buildScript : build.gralde(項目目錄)慨仿,接口來源Project +Script
- settingScript :setting.gradle 久脯, 接口來源 Settings+Script
Repositories
1、支持類型ivy镰吆,maven,flat
2跑慕、默認(rèn)maven 倉庫
mavenCentral()
jcenter()
google()
mavenLocal() 本地緩存USER_HOME/.m2
自定義倉庫地址
maven {
url "https://maven.springframework.org/release"
}
3万皿、自定義過濾支持
由于可以使用groovy 腳本,可以輕松實現(xiàn)一些 過濾核行,排除依賴這樣的定義
命令
語法
gradle [taskName...] [--option-name...]
taskName 說明
1牢硅、多個名稱是空格隔開,在多項目中芝雪,task 需要添加項目前綴 减余,例如 :mySubproject:taskName
2、task 具有依賴關(guān)系惩系,比如下圖執(zhí)行 gradle dist 位岔,那么compile ,compileTest,test task 都會執(zhí)行 如筛,可以使用-x 排除任務(wù)
3、task來源 :
- 內(nèi)置通用 build,run,check,clean,projects,tasks,dependencies,
- 插件定義task 比如: java 抒抬,groovy
- 腳本定義 :task taskName {}
option-name說明
1杨刨、用=賦值 --console=plain
2、開關(guān)選項 --build-cache擦剑,--no-build-cache
插件
插件提供默認(rèn)行為的一系列功能(Task)
例如Java 插件:構(gòu)建Java 項目
Tasks:
compileJava
compileTestJava
processResources
jar
javadoc
test
uploadArchives
clean
cleanTaskName
....
使用 script 配置
plugins {
id 'java'
}