1.对于项目中的settings.gradle中配置工程中依赖的子工程
//表示包含的子项目名
include ":build"
//包含子项目的位置,如果不指定,就会默认当前目录。
project(':build').projectDir=new File(rootDir,"build")
2.对于项目project中的build.gradle,是Project的构建入口,可以配置版本,插件,依赖等。
//配置所有工程的依赖库下载仓库
allprojects {
repositories {
google()
jcenter()
}
}
//配置子工程的依赖库下载仓库
subprojects{
repositories {
google()
jcenter()
}
}
3.每个project由多个Task组成,一个Task就是一个原子性操作。
Task捡起来像一个关键字,其实是Project的一个函数,原型为create(String name,Closure configureClosure),第一个参数就是任务名,第二个参数就是闭包。
task hello{
doFirst{
println "啦啦"
}
}
可以写成下面
tasks.create("hello") {
doFirst{
println "啦啦"
}
}
4.任务依赖,使用dependsOn进行依赖,当执行hello2的时候,先执行hello。
使用dependsOn可以接受多个依赖任务作为参数。
第一种写法
tasks.create("hello") {
doFirst{
println "啦啦"
}
}
task hello2(dependsOn: hello){
doLast{
println "啦啦222"
}
}
第二种写法
tasks.create("hello") {
doFirst{
println "啦啦"
}
}
task hello2(dependsOn: hello){
doLast{
println "啦啦222"
}
}
task hello3{
dependsOn hello,hello2
doLast{
println "啦啦333"
}
}
5.通过任务名去访问方法属性并对其进行控制
project在创建该任务的时候,同时把该任务对应的任务名注册为Project的一个属性,类型为Task
task hello4{
}
hello4.doLast{
println project.hasProperty("hello4") //true
}
6.自定义属性
添加额外的属性,通过队形属性的ext属性可以实现。添加之后可以通过ext属性对自定义属性读取和设置,如果有多个属性,可以通过ext代码块。可以跨project,跨task进行访问自定义属性。只要你能访问到这些属性所属的对象,那么这些属性就能被访问到。如果是跨project进行访问ext,那么就可以通过rootProject.ext.support[“junit”]等方式进行访问。
ext.age=12
ext{
phone="123"
address=""
}
task hello5{
println age
println phone
address="嗯嗯嗯"
println address
}
使用sourceSets
sourceSets.all{
//自定义一个变量
ext.resourcesDir=""
}
//java插件引入了一个概念叫做SourceSets,通过修改SourceSets中的属性,
//可以指定哪些源文件(或文件夹下的源文件)要被编译,哪些源文件要被排除。
sourceSets{
main{
resourcesDir="main/res"
}
test{
resourcesDir="test/res"
}
}
task hello5{
sourceSets.each{
println it
println "${it.name}的资源文件${it.resourcesDir}"
}
}
7.获取时间
def buildTime(){
def data=new Date()
def formatDate=data.format('yyyyMMdd')
return formatDate
}
task hello6{
println "时间=="+buildTime()
}
8.创建task的三种方式
def Task t1=task(t1)
t1.doLast{
println "创建方法原型 Task task(String name)"
}
/**task参数中的map的可用配置
type :基于一个存在的Task来创建,相当于继承
overwrite:是否替换存在的Task,和type配合使用
dependsOn:用于配置任务依赖
action:添加到任务中的一个Action或一个闭包
description:配置任务描述
group:配置任务分组
*/
def Task t2=task(t2,group:"eee")
t2.doLast{
println "创建方法原型 Task task(String name,Map args)"
}
task t3{
description "演示"
doLast{
println "创建方法原型:Task task(String name,Closure closure),任务描述:${description}"
}
}