groovy語法:
一、基本使用
-
類型定義
//可選的類型定義 類型自動推導 def age = 10 def name = "城南一霸賈十七" assert age == 11 println("name is ${name} age is ${age}")
-
assert語句
asset語句,斷言語句(我暫時理解爲判斷語句) ,可以在任意地方執行
-
括號
是可選的
如在上面打印語句中,println "name is ${name} age is ${age}"
等同於println("name is ${name} age is ${age}")
-
字符串的表達形式
''
單引號。僅僅表達的是一個字符串""
雙引號。可以插入變量''' '''
三個單引號。可以換行
def city = 'GanSu' def country = "China" def address = '''城南一霸賈十七的 家鄉在 ''' println("${address}:${country}.${city}")
輸出:
-
申明一個
list
集合// 申明一個list集合 def list = ['maven', 'ant'] // 給list集合追加一個元素 list << 'gralde' // 判斷是否爲ArrayList assert list.getClass() == ArrayList // 判斷list集合大小是否爲3 assert list.size() == 3 // foreach 打印item list.each { println("item: ${it}") }
輸出結果:
-
申明一個
Map
集合def information = ['name': '城南一霸賈十七', 'job': 'programmer'] information.address = '中國.甘肅.武山' information.entrySet().each { println("key:${it.key},value:${it.value}") }
-
閉包
閉包,是一個代碼塊,跟方法類似。可以有參數,可以沒參數。可以賦值給一個變量,也作爲參數傳給一個方法。
def c1 = { v -> println("有參數閉包,參數爲:${v}") } def c2 = { println("無參數閉包") } def method1(Closure closure) { closure('param') } def method2(Closure closure) { closure() } method1(c1) method2(c2)
構建腳本
-
在gradle中,通過 group name version 唯一確定一個依賴包,如:
implementation 'androidx.appcompat:appcompat:1.1.0'
group(類比maven中的 GroupID):androidx.appcompat
name(類比maven中的ArtifactID):appcompat
version:1.1.0 -
常用方法:
apply,dependencies,repositories task
apply:應用一個插件
dependencies:項目依賴
repositories:去哪個倉庫找依賴jar包,然後根據group name version 確定組件
task:申明項目中有哪些任務 -
屬性的其他配置方式
ext,gradle.properties
-
可以通過
ext
直接定義屬性,然後直接引用。具體參考:gradle使用技巧(def定義變量 rootProject.ext 添加全局變量)
在project的build.gradle
同級目錄下創建config.gradle
,並定義ext屬性:ext { android = [ compileSdkVersion: 29, buildToolsVersion: "29.0.2", applicationId : "com.example.architecturedesigin01", // ... ] }
然後在
project的build.gradle
文件引用該文件config.gradle
,在需要使用到的地方通過以下方式引用,如在module目錄下的build.gradle
文件中:android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion // .... }
-
在
gradle.properties
中通過key,value的方式申明屬性。
-
gradle中的任務task
-
task:任務對應
org.gradle.api.Task
。主要包括任務動作和任務依賴。任務動作定義了一個最小的工作單元。gradle將一個個task任務串聯起來完成具體的構建任務。具體查看gradle task -
dependsOn
申明任務依賴 -
doFirst doLast<<
分別在任務列表的首尾添加動作任務。 -
創建一個任務:
task projectTask { println 'This is project task !' }
創建的任務在projcet目錄下,因爲
task HelloWorld
申明是在projcet目錄下,如在module下申明,那該任務是在module目錄下。
分別創建了projectTask和moduleApp
兩個task,同步後控制檯輸出: