看懂Gradle脚本(1)- Groovy语言的Map语法糖

这一系列文章是写给刚开始使用Gradle,并且对Groovy语法不是特别了解的Java程序员看的。

本篇文章的目标是解释清楚下面这行Gradle脚本:

apply plugin: 'java'

行尾的分号是可选的

用过JavaScript语言的人对这个语法糖应该比较熟悉,下面是补上分号后的脚本:

apply plugin: 'java';

Map字面量(Literal)

Java语言只有基本类型String数组是有字面量的,如下所示:

boolean b = false;
int i = 100;
double d = 4.14;
String s = "java";
int[] arr = {1, 2, 3};

Groovy语言给Map添加了字面量,如下所示:

def langs = ['C++':'Stroustrup', 'Java':'Gosling', 'Lisp':'McCarthy']

语法像是Java里的数组字面量,key和value用冒号分隔,pair之间用逗号分隔。另外,用这种语法创建出来的是java.util.LinkedHashMap实例。如果key是普通的字符串,还可以进一步省略掉引号,如下所示:

def langs = ['C++':'Stroustrup', Java:'Gosling', Lisp:'McCarthy']

方法调用的括号可以省略

apply实际上是个方法,下面是补上括号后的脚本:

apply(plugin: 'java');

如果传入方法的参数是Map,那么Map字面量可以省略方括号

补上方括号以后,脚本看起来是这样:

apply([plugin: 'java']);

结论

apply其实是个方法,接收一个Map类型的参数。

举一反三

有了上面的分析,看懂下面这段Gradle脚本应该是小菜一碟了:

testCompile group: 'junit', name: 'junit', version: '4.10'

看懂Gradle脚本(1)- Groovy语言的Map语法糖

时间: 2024-08-05 22:52:51

看懂Gradle脚本(1)- Groovy语言的Map语法糖的相关文章

看懂Gradle脚本(2)- Groovy语言的闭包语法

本篇文章讨论下面这一小段Gradle脚本: repositories { mavenCentral() } 闭包字面量 闭包字面量看起来像Java里的代码块:用一对儿花括号包起来.前面讨论过,方法调用的圆括号可以省略,补上圆括号之后,脚本看起来是这样: repositories({ // <-- mavenCentral() }) 如果闭包是方法的最后一个参数,那么闭包可以放在圆括号外面 也就是说,上面的代码写成这样也是可以的: repositories() { // <-- mavenCen

看懂Gradle脚本(6)- Hello Groovy, Goodbye Getters&amp;Setters

本篇文章很简单,就是把下面这段Gradle脚本打回原形: version = 1.0 Groovy语法糖 Java程序员对JavaBeans和Getter/Setter方法肯定不陌生,所以就不过多介绍了.虽然现代的IDE都提供了快捷方式,可以很方便的给字段生成Getter和Setter方法,但我还是很讨厌他们.还好,有Groovy的语法糖在手,就可以跟Getter/Setter方法说再见了!上面的脚本,实际上是调用Project接口的setVersion方法: project.setVersio

看懂Gradle脚本(3)- Groovy AST转换

延续上一篇文章 上篇文章末尾有一段脚本,定义了一个Task: task 'myTask' { doLast { println 'hello world!' } } 我们已经知道,这段脚本其实是调用Project的task方法,并且传入两个参数:一个是Task的名字,另外一个是闭包,用来配置Task(在这段脚本中,给Task添加了一个Action). Task名的引号去哪儿了? 但是Gradle官方推荐的写法,是像下面这样定义Task: task myTask { // <-- doLast {

看懂Gradle脚本(5)- 跟Gradle学领域驱动设计

领域驱动设计(DDD) 如果第一次听说领域驱动设计,那么赶紧买一本,或借一本Eric Evans写的那么同名经典书补一下课.Gradle是一个自动化build工具,所以Gradle面对的领域就是自动化构建这一领域.Gradle是按照DDD的思想设计和开发的,所以自动化构建领域里的大部分概念,在Gradle的源代码里都有一个接口或类与之对应.本文介绍对Gradle新手来说最重要的三个领域对象:Project.Task.Action. Project Project是Gradle最重要的一个领域对象

看懂Gradle脚本(4)- Groovy语法之运算符重载

继续讨论Task定义 回想一下前一篇文章的样例: task myTask { doLast { println 'hello world!' } } 这段脚本定义了一个名为myTask的任务.而且通过一个闭包对这个任务进行了配置,给它加了一个Action.doLast是Task的一个方法. 由于这样的情况非经常见,所以Gradle提供了一种更加方便的写法,例如以下所看到的: task myTask << { println 'hello world!' } 能够少写两行代码 :) AST转换

看懂sh脚本

1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编写脚本完成时,如果要执行该脚本,还必须使其可执行. 要使编写脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您在程序中使用注释. 3 变量 在其他编程语言中您必须使用变量.在

Gradle 脚本剪片---copy

Gradle是以Groovy语言为基础,基于DSL语法的自动化构建工具,一个构建脚本能够包含任何Groovy语言元素,每个脚本都是UTF-8编码的文件. 6-1 Project对象API 前面我们说过,Gradle在构建脚本中定义了一个project,对于构建脚本中每个project其实Gradle都创建了一个 Project类型的对象来关联,当构建脚本执行时它会去配置所关联的Project对象:构建脚本中每个被调用的方法和属性都委托给了当前Project对象. 如下我们看一个使用Project

Gradle脚本基础全攻略

[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.点我开始Android技术交流] 1 背景 在开始Gradle之前请务必保证自己已经初步了解了Groovy脚本,特别是闭包规则,如果还不了解Groovy则可以先看<Groovy脚本基础全攻略>这一篇博客速成一下Groovy基础,然后再看此文即可.关于Gradle速成干货基础详情也请参考Geadle官方网站,不好意思我太Low了. Gradle核心是基于Groovy的领域特定语言(DSL,具体概念参见<

从编程的角度理解gradle脚本??Android Studio脚本构建和编程

本篇文章由嵌入式企鹅圈原创团队.魅族资深工程师degao撰写! 随着Android 开发环境从Eclipse转向Android Studio,我们每个人都开始或多或少要接触gradle脚本,大多数人将gradle看做构建工具,出现问题不知如何着手分析,只能寄希望百度能找到解决方案,其实大可不必. 如果我们把gradle看做编程框架,并理清gradle脚本与gradle对象的关系,通过查阅文档,不但能清晰理解gradle脚本,而且出现问题再也不用百度,通过查阅文档就能轻松解决问题. 本文就通过一个