Gradle系列之构建脚本基础 (2)

创建的任务都有自己的名称,其类型是 Task,那么我们就可以通过 Task API 来控制控制任务的执行,使用任务名操作任务的原理是:Project 在创建任务的时候,已经将该任务对应的任务声明为 Project 对象的一个类型为 Task 的一个属性,测试代码如下:

//任务之间的交互 task E{ println 'hello e' println "E是不是Project的属性:"+project.hasProperty('E') } E.doFirst{ println 'doFirst' } E.doLast{ println 'doLast' }

上述代码的执行结果如下:

PS E:\Gradle\study\GradleSetting> gradle E > Configure project : hello e E是不是Project的属性:true > Task :E doFirst doLast BUILD SUCCESSFUL in 1s 自定义属性

Project 和 Task 都允许用户添加额外的自定义属性,通过应用所属对应的 ext 属性来实现,添加之后可以通过 ext 属性对自定义的属性进行读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块,参考如下代码定义自定义属性:

apply plugin:"java" //自定义单个属性 ext.name1 = "Gradle" //自定义多个属性 ext{ age = 10 score = 100 } //在SourceSet中使用自定义属性 sourceSets.all{ ext.resourceDir = null } //配置自定义属性 sourceSets{ main{ resourceDir = "main/res" } test{ resourceDir = "test/res" } } task customProperty{ println "name=${name1}" println "age=${age}" println "score=${score}" sourceSets.each { println "${it.name} resourceDir is ${it.resourceDir}" } }

上述代码的执行结果:

PS E:\Gradle\study\GradleSetting> gradle customProperty > Configure project : name=Gradle age=10 score=100 main resourceDir is main/res test resourceDir is test/res BUILD SUCCESSFUL in 2s

自定义属性相较局部变量作用域更加广泛,可以跨 Task、Project 访问自定义属性,只要能访问这些属性所属的对象,那么这些属性就可以被访问到, Android 开发中可以使用自定义属性单独定义版本号、版本名称以及用到的第三方库的版本,将其同意在单独的 gradle 文件中,各 Module 直接获取即可,不仅方便管理依赖库的版本,还在一定程度上提高工作效率。

总结

Gradle 脚本基于 Grooy ,而 Groovy 完全兼容 Java 语法,Gradle 脚本本质上还是代码,在 Gradle 中可以利用相关语法来完成相关功能。可以关注公众号:躬行之(jzman-blog),一起交流学习。

Gradle系列之构建脚本基础

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpswzs.html