Gradle | 簡介

簡介

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.png

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)


USER_HOME/.gradle.png

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曹货、項目目錄


project.png

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ù)


Tasks.png

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

更多
1妖胀、命令手冊
2、自動補全

插件

插件提供默認(rèn)行為的一系列功能(Task)
例如Java 插件:構(gòu)建Java 項目

Tasks:
compileJava
compileTestJava
processResources
jar
javadoc
test
uploadArchives
clean
cleanTaskName
....

使用 script 配置

 plugins {
        id 'java'
}

插件詳情

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惠勒,一起剝皮案震驚了整個濱河市赚抡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纠屋,老刑警劉巖涂臣,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異巾遭,居然都是意外死亡肉康,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門灼舍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吼和,“玉大人,你說我怎么就攤上這事骑素§排遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵献丑,是天一觀的道長末捣。 經(jīng)常有香客問我,道長创橄,這世上最難降的妖魔是什么箩做? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮妥畏,結(jié)果婚禮上邦邦,老公的妹妹穿的比我還像新娘。我一直安慰自己醉蚁,他們只是感情好燃辖,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著网棍,像睡著了一般黔龟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天氏身,我揣著相機與錄音巍棱,去河邊找鬼。 笑死观谦,一個胖子當(dāng)著我的面吹牛拉盾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豁状,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捉偏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泻红?” 一聲冷哼從身側(cè)響起夭禽,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谊路,沒想到半個月后讹躯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡缠劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年潮梯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惨恭。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秉馏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脱羡,到底是詐尸還是另有隱情萝究,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布锉罐,位于F島的核電站帆竹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脓规。R本人自食惡果不足惜栽连,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侨舆。 院中可真熱鬧升酣,春花似錦、人聲如沸态罪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽复颈。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耗啦,已是汗流浹背凿菩。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帜讲,地道東北人衅谷。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像似将,于是被迫代替她去往敵國和親获黔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355