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)基本taskimage.png
5)task依賴war.dependsOn readVersionTask,writeVersionTaskimage.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 tasksgradle tasks列出所有taskimage.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)的資源。










