当 Gradle 执行一个脚本时,它将脚本编译为一个实现了 Script 接口的类,这意味着所有由该Script 接口声明的属性和方法在脚本中均可使用。

Gradle 的domain model中,所有增强的对象都可以允许用户定义额外属性,例如项目(project)、任务(task)和源码集(source set)等等。额外属性可以通过所属对象的 ext 属性进行添加,读取和设置。当然也可以使用 ext 块同时添加多个属性。

看个例子:

apply plugin: "java"
ext {springVersion = "3.1.0.RELEASE"emailNotification = "jerry@sap.com"
}
sourceSets.all { ext.purpose = null }
sourceSets {main {purpose = "production"}test {purpose = "test"}plugin {purpose = "production"}
}
task printProperties << {println springVersionprintln emailNotificationsourceSets.matching { it.purpose == "production" }.each { println it.name }
}

逐行分析:

通过ext代码块将两个扩展属性添加到project对象中去。

将purpose扩展属性添加到所有的sourceSets对象中去。

给名为main,test和plugin的sourceSets对象的purpose属性分别赋值。

最后gradle printProperties打印输出:

Groovy会自动地把一个属性的引用转换为对适当的 getter 或 setter 方法的调用:

    println project.buildDirprintln getProject().getBuildDir()

输出:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Gradle的script API相关推荐

  1. Android gradle implementation与api的区别及引用传递

    在本篇文章我会先描述使用的场景及结果,然后再做总结,而不是一开始就给出结论,这样大家也比较好理解,也可以自己创建项目运行验证下. 场景一 项目中有三个module,分别叫app.lib1.lib2,依 ...

  2. Gradle脚本基础全攻略

    转载http://blog.csdn.net/yanbober/article/details/49314255 [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处 ...

  3. 【转载】Gradle学习 第十一章:使用Gradle命令行

    转载地址:http://ask.android-studio.org/?/article/94 This chapter introduces the basics of the Gradle com ...

  4. Gradle 2.0 用户指南翻译——第五十章. 依赖管理

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

  5. gradle(Project)

    目录 Lifecycle Tasks Dependencies Multi-project 构建 Plugins Properties Extra Properties Dynamic Methods ...

  6. 秒懂Gradle之从完全懵逼到似懂非懂

    [版权申明]非商业目的注明出处可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/106714278 出自:shusheng00 ...

  7. Java和Android构建工具Gradle深入了解

    Gradle3.0编程与自动化构建 gradle是一款最新的,功能强大的构建工具,它使用程序代替传统的XML配置,构建项目更加灵活.gradle有丰富的第三方插件. Gradle相关介绍及开发环境搭建 ...

  8. Gradle入门之基础概念

    Gradle是什么 Gradle是一款开源的自动化构建工具,可以灵活的构建任何类型软件(基本上),比如我们日常开发所熟知的: Java的产物(.JAR) Android Application的产物( ...

  9. 【Android Gradle 插件】LintOptions 配置 ③ ( LintOptions#error 方法配置 | Lint 问题 ID | 查询 Lint 问题 ID 列表 )

    文章目录 一.LintOptions#error 方法配置 1.配置简介 2.Lint 问题 ID 3.error 方法原型 4.使用示例 二.lint 的有效问题 id 字符串 Android Pl ...

最新文章

  1. Yolo:实时目标检测实战(下)
  2. hibernate中多对多分解成一对多,
  3. 由一个异常开始思考springmvc参数解析
  4. 问题集锦(26-29)
  5. boost::convert模块实现默认转换器的测试程序
  6. python flask项目过程_Python 开发过程遇到的问题
  7. spring mvc学习(26):处理数据模型--从表单到controller传输数据
  8. java trylock超时_老师,死锁设置超时这个我知道意思,但是您能举个例子么
  9. Java list中的对象转为list,list中的对象转为map
  10. 基于证据理论的多源数据融合仿真实验matlab代码(源码)
  11. 190825 reverse-ogeek初赛
  12. Python乌龟吃鱼小游戏
  13. 20160909阿里校招数据研发工程师笔试总结
  14. 拉里 埃里森_拉里·沃尔(Larry Wall)的“程序员的三个美德”是胡说八道
  15. Class ‘xxx‘ is public, should be declared in a file named ‘xxx.java‘
  16. React.memo Component definition is missing display name
  17. 2021-2027全球与中国TAC功能膜市场现状及未来发展趋势
  18. GitHub上的AutoML
  19. springboot自带的线程池ThreadPoolTaskExecutor、ThreadPoolTaskScheduler的深入应用——异步任务监听回调,任务中断案例
  20. docker 常用命令 -----(批量查看镜像/容器,重命名,运行,进入容器,私有仓库)

热门文章

  1. IOS开发基础知识--碎片8
  2. stm32F1和stm32F4的区别
  3. imx6的kernel3.4.15启动流程
  4. Spring实战 MethodInvokingJobDetailFactoryBean使用与分析
  5. 福州大学软件1715|W班-助教卞倩虹个人简介
  6. JS 原生 AJax
  7. 014、BOM与DOM对象的应用
  8. 【最近公共祖先】[COCI]STOGOVI
  9. 转载一个不错的Scrapy学习博客笔记
  10. 下拉导航中绝对定位与相对定位问题