看懂Gradle腳本(1)- Groovy語言的Map語法糖

這一系列文章是寫給剛開始使用Gradle,並且對Groovy語法不是特別瞭解的Java程序員看的。

本篇文章的目標是解釋清楚下面這行Gradle腳本:

apply plugin: 'java'

行尾的分號是可選的

用過JavaScript語言的人對這個語法糖應該比較熟悉,下面是補上分號後的腳本:

apply plugin: 'java';

字符串字面量(Literal)

Java只能用雙引號定義字符串字面量,Groovy語法和JavaScript類似,既可以用雙引號,也可以用單引號。區別是,用雙引號定義的字符串可以插值,如下所示:

def pi = 3.14
def str = "pi is ${pi}"

Map字面量

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']

方法調用的括號可以省略

我最早是在Ruby語言裏見到這種語法糖的,apply實際上是個方法,下面是補上括號後的腳本:

apply(plugin: 'java');

如果傳入方法的參數是Map,那麼Map字面量可以省略方括號

補上方括號以後,腳本看起來是這樣:

apply([plugin: 'java']);

結論

apply其實是個方法,接收一個Map類型的參數。

舉一反三

有了上面的分析,看懂下面這段Gradle腳本應該是小菜一碟了:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章