不得不学之「 Gradle」 ④ Gradle 任务

1、多种建立方式任务

这个那么多,其实咱们平时用的最多仍是闭包的形式。记得太多容易混,别的看到能分别出来这个是建立就能够了。数组

2、多种方式访问任务

task 和 tasks
tasks 其实就是一个数组,根据 task 的名字能够查到。没啥意思。就是方便。用到在深究。 tasks['task1']bash

3、分组和描述符

group 分类 分组均可以 description 描述符闭包

4、<<

<< 至关于 doLast (说实话我一用这个就报错 真的不知道咋回事)app

5、执行顺序

doFirst -> doSelf -> doLast taskB.shouldRunAfter(taskA) 只是应该,可能也没有 taskB.MustRunAfter(taskA) 这个就必须了学习

6、任务的启用和禁用

taskA.enabled = true taskA.enabled = falseui

7、断言

若是咱们首发的渠道是应用宝和百度,直接执行 build 会编译出来全部的包,这个太慢了,因此就能够用这个断言 onlyIf 。spa

final String BUILD_APPS_ALL = 'all'
final String BUILD_APPS_SHOUFA = 'shoufa'
final String BUILD_APPS_EXCLUDE_SHOUFA = 'exclude_shoufa'



task exBaiduRelease  {
	doLast{
	println '打包百度'
}
}
task exHuaWeiRelease  {
	doLast{
	println '打包华为'
}
}

task exMeizuRelease  {
	doLast{
	println '打包魅族'
}
}


task exMiRelease {
	doLast{
	println '打包小米'
}
}

exMeizuRelease.mustRunAfter exMiRelease
task build2{
	group BasePlugin.BUILD_GROUP
	description '大渠道包'
	println description
}

build2.dependsOn exBaiduRelease,exHuaWeiRelease,exMeizuRelease,exMiRelease

exBaiduRelease.onlyIf{
	def execute = false
	if(project.hasProperty('build_apps')){
		Object buildAppps = project.property('build_apps')
		if(buildAppps.equals(BUILD_APPS_SHOUFA)||buildAppps.equals(BUILD_APPS_ALL)){
execute = true
		}
	}
	execute
}

exHuaWeiRelease.onlyIf{
	def execute = false
	if(project.hasProperty('build_apps')){
		Object buildAppps = project.property('build_apps')
		if(buildAppps.equals(BUILD_APPS_SHOUFA)||buildAppps.equals(BUILD_APPS_ALL)){
execute = true
		}
	}
	execute
}
exMeizuRelease.onlyIf{
	def execute = false
	if(project.hasProperty('build_apps')){
		Object buildAppps = project.property('build_apps')
		if(buildAppps.equals(BUILD_APPS_EXCLUDE_SHOUFA)||buildAppps.equals(BUILD_APPS_ALL)){
execute = true
		}
	}
	execute
}
exMiRelease.onlyIf{
	def execute = false
	if(project.hasProperty('build_apps')){
		Object buildAppps = project.property('build_apps')
		if(buildAppps.equals(BUILD_APPS_EXCLUDE_SHOUFA)||buildAppps.equals(BUILD_APPS_ALL)){
execute = true
		}
	}
	execute
}
复制代码

8、任务规则

咱们建立的任务都是在 TaskContainer 里的,全部咱们访问任务的时候都是经过 TaskContainer 进行访问。TaskContainer 又是一个 NamedDomainObjectCollection(继承它),也就是 NamedDomainObjectCollection 的规则。NamedDomainObjectCollection 是一个具备惟一不变名字的域对象的集合。它里面的全部元素都有一个惟一不变的名字,String 类型的。咱们能够经过名字来获取元素。也就是能够经过任务名来获取任务。至于怎么加规则,咱们简单写一下。等之后要用的时候再深究。code

tasks.addRule('增长规则,这是规则描述'){ String taskName ->
	task(taskName){
		doLast{
println "该 task ${taskName} 不存在 "
		}
	}
}

ask exBaiduRelease  {
	dependsOn exYingYongBao
	doLast{
	println '打包百度'
}

}

exBaiduRelease.mustRunAfter exYingyongBao
复制代码

最后说个事情,个人 << 符号仍是不能用,难道是版本的问题?仍是别的不清楚,慢慢解决吧。cdn

划重点: 本文是彻底参考 《Android Gradle 权威指南》而写,做为学习笔记使用。对象

相关文章
相关标签/搜索