看懂Gradle指令碼(1)- Groovy語言的Map語法糖
阿新 • • 發佈:2019-01-04
這一系列文章是寫給剛開始使用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
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'