Settings文件
用于初始化以及工程樹(shù)的配置,設(shè)置文件的默認(rèn)名字是setting.gradle,放在根工程目錄下嗜价。
根工程相當(dāng)于Android Studio中的Project艇抠,一個(gè)根工程可以有很多子工程Moudle. 一個(gè)子工程只有在Setting文件里配置Gradle才會(huì)識(shí)別并在構(gòu)建的時(shí)候包含進(jìn)去幕庐。
include ':app'
rootProject.name='Building'
include ':common'
include ':order'
include ':personal'
include ':gradle-test'
project(':gradle-test').projectDir=new File('','/Users/xxxx/Desktop/gradle-test')
Build文件
每個(gè)Project含有一個(gè)Build文件,該文件是該P(yáng)roject構(gòu)建的入口练链,可在在這里對(duì)該P(yáng)roject進(jìn)行配置翔脱,比如配置版本,需要那些插件媒鼓,依賴那些庫(kù)届吁。
Root Project也含有Build文件,并且它可以獲取所有的Child Project绿鸣,在Root Project的Build文件里我們可以對(duì)Child Project統(tǒng)一配置疚沐,比如應(yīng)用對(duì)插件,依賴的Maven中心庫(kù)等潮模。
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
Projects以及tasks
一個(gè)Project就是在你的業(yè)務(wù)范圍內(nèi)亮蛔,被你抽象出來(lái)的一個(gè)個(gè)獨(dú)立的模塊,你可以根據(jù)項(xiàng)目的情況抽象歸類擎厢,最后這一個(gè)個(gè)的Project組成里你的整個(gè)Gradle構(gòu)建究流。
一個(gè)Project包含很多個(gè)Task,Task是一個(gè)操作动遭,一個(gè)原子性的操作芬探,比如打包jar包,復(fù)制一份文件厘惦,編譯一次Java代碼偷仿。
- 創(chuàng)建一個(gè)任務(wù)
task customTask1{
doFirst{
println 'customTask1 doFirst'
}
doLast{
println 'customTask1 doLast'
}
}
tasks.create("customTask2"){
doFirst{
println 'customTask2 doFirst'
}
doLast{
println 'customTask2 doLast'
}
}
- 任務(wù)依賴
task ex35Hello{
doLast{
println 'hello'
}
}
task ex35World{
doLast{
println 'word'
}
}
task ex35Main(dependsOn:ex35World){
doLast{
println 'main'
}
}
task ex35MultiTask{
dependsOn ex35Hello,ex35World
doLast{
println 'multiTask'
}
}
- 任務(wù)間通過(guò)API控制/交互
task ex36Hello{
println 'dowLast1'
}
ex36Hello.doFirst{
println 'dowFirst'
}
ex36Hello.doLast{
//Project在創(chuàng)建任務(wù)時(shí)候,同時(shí)把該任務(wù)對(duì)應(yīng)的任務(wù)名注冊(cè)為Project的一個(gè)屬性
println project.hasProperty('ex36Hello')
println 'dowLast2'
}
- 自定義屬性
Project和Task都允許用戶添加額外都自定義屬性宵蕉,通過(guò)應(yīng)用所屬對(duì)應(yīng)的ext屬性即可實(shí)現(xiàn)酝静。
ext.age=18
ext{
phone =1234567
address=''
}
task exCustomProperty{
println "age:${age}"
println "phone:${phone}"
}
-自定義屬于應(yīng)用在SourceSet中
apply plugin:"java"
sourceSets.all{
ext.resourceDir=null
}
sourceSets{
main{
resourceDir="main/res"
}
test{
resourceDir="test/res"
}
}
task sourceTask{
sourceSets.each{
println "${it.name}中的resourceDir:${it.resourceDir}"
}
}
- 腳本即代碼 代碼也是腳本
def buildTime(){
def date=new Date()
def formattedDate=date.format('yyyy-MM-dd')
return date
}
task helloDate{
println buildTime()
}