Gradle構建基礎

1,簡介

1)gradle基于JVM的構建工具,需要安裝JDK或者JRE。
2)全面支持已有的maven和ivy倉庫;
基于groovy,支持依賴傳遞(內部 DSL(基于一種動態(tài)語言)相比 XML 在構建腳本方面優(yōu)勢非常大。)。
3)Groovy基于Java并拓展了Java,寫Java程序變得像寫腳本一樣簡單,Groovy內部會將其編譯成Java class然后啟動虛擬機來執(zhí)行。
4)閉包Closure,是一種數(shù)據類型,它代表了一段可執(zhí)行的代碼。
5)多項目構建。必須在根目錄創(chuàng)建settings.gradle文件,指明需要包含哪些項目
eg: rootProject.name = 'hzqdemo'
include 'hzq-common'
include 'hzq-repository'
6)gradle會默認從src/main/java中查找打包源碼, 會從
src/main/resources查找資源文件,將其打包到war中,放入classpath下。

image.png

2,為你的項目添加wrapper

1)/Users/hzq/IdeaProjects/gradle-3.3/bin/gradle wrapper

image.png

添加了Wrapper就可以使用wrapper來執(zhí)行Gradle命令了Gradle Wrapper 允許你在沒有安裝 Gradle 的機器上執(zhí)行 Gradle 構建。
當執(zhí)行gradlew時,它會檢測用于wrapper的gradle是否存在,如果存在,則代理一切gradle的命令,否則去下載Gradle。invocation of gradlew will download and cache the specified version of Gradle
image.png

2)將build和run的動作代理給gradle。When you build a project (Build | Build Project), IntelliJ IDEA invokes the correct tasks using Gradle.當使用build和run/debug時,會調用gradle對應的task。

3,gradle構建基礎

1)任何一個gradle構建都是由一個或者多個project組成,一個project可能是一個jar,war或者多個項目組合而成的jar或者zip等。一個project由多個task組成,一個task代表一個原子操作,如編譯,打包,發(fā)布,生成javadoc。
2)gradle命令會從當前目錄下,尋找build.gradle來執(zhí)行構建。

image.png

3)build.gradle是構建腳本,定義了一個project和一些默認的task。settings.gradle用于將其他project包含進來。
4)基本task
image.png

5)task依賴war.dependsOn readVersionTask,writeVersionTask
image.png

6)doFirst 和 doLast(<<) 可以進行多次調用,任務開始的時候,按照指定順序執(zhí)行。
每個任務都是一個腳本的屬性,使用$hello訪問task。$hello.name
可以為任務增加自定義屬性($hello.a或者$a)。ext.myProperty = "myValue"
image.png

7)gradle允許在腳本中定義多個默認任務。子項目會調父項目的默認任務, ./gradlew -q 會執(zhí)行 defaultTasks "taskA", "taskB"
8)讀寫文件
image.png

4,插件

1)插件是gradle的擴展,為你添加一些非常有用的默認配置。apply plugin: 'java', Java 插件為你添加了眾多任務, 最常用的是build task。
2)java插件提供了,sourceCompatibility(指定編譯.java源碼的jdk版本)和targetCompatibility(確保.class文件與targetCompatibility所指定版本或者更新版本的JVM兼容)屬性。
3)需要注意gradle task的依賴順序。processResources.dependsOn writeVersionTask 而不是war.dependsOn writeVersionTask
eg:

image.png

5,常用 / 命令

1)gradle在執(zhí)行build的時候想跳過test task,那么可以使用-x命令。./gradlew build -x test 或者gradle build -x test
./gradlew properties 查看項目的屬性列表,包含插件添加的屬性以及默認值。
2)./gradlww tasks gradle tasks列出所有task

image.png

自定義任務
image.png

tasks - Displays the tasks runnable from root project
help - Displays a help message.
javadoc - Generates Javadoc API documentation for the main source code.
check - Runs all checks.
test - Runs the unit tests.
3)添加maven倉庫。一般jar都位于倉庫中,倉庫可以用來搜尋依賴,發(fā)布項目產物
repositories {
mavenCentral()//中央倉庫
}
respositories{
maven {
url "http://maven.aliyun.com/nexus/content/groups/public"http://告訴gradle從該地址找dependencies下的依賴jar。
}
}

6,buildscript,allprojects,subprojects以及root級別的repositories和dependencies配置。

1)buildscript中聲明的是,gradle腳本自身需要使用的資源。
2)root級(直接在build.gradle)中聲明的是,項目本身需要的資源。
3)allprojects用于多項目構建,為所有項目提供共同所需依賴包。一個項目的根目錄的build.gradle決定了項目的全局配置
4)subprojects用于配置所有的子Project(不包含根Project)的資源。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 是什么? 在語法上是基于Groovy語言的(Groovy 是一種基于JVM的敏捷開發(fā)語言,可以簡單的理解為強類型語...
    千山萬水迷了鹿閱讀 99,975評論 4 122
  • Android Studio正式版早已經發(fā)布了,默認使用Gradle構建,GitHub上80%的Android項目...
    流哲羽閱讀 3,021評論 1 13
  • 參考資料:http://gold.xitu.io/post/580c85768ac247005b5472f9htt...
    zhaoyubetter閱讀 11,245評論 0 6
  • Gradle對于很多開發(fā)者來說有一種既熟悉又陌生的感覺,他是離我們那么近,以至于我每天做項目都需要他,但是他又是離...
    阿_希爸閱讀 9,694評論 10 199
  • Gradle是一款非常優(yōu)秀的構建系統(tǒng)工具,它的DSL基于Groovy實現(xiàn),可以讓你很方便的通過代碼控制這些DSL來...
    飛雪無情flysnow_org閱讀 3,657評論 0 35

友情鏈接更多精彩內容