gradle groovy

groovy語法:

一、基本使用

  1. 類型定義

    //可選的類型定義  類型自動推導
    def age = 10
    def name = "城南一霸賈十七"
    assert age == 11  
    println("name is ${name} age is ${age}")
    
  2. assert語句
    asset語句,斷言語句(我暫時理解爲判斷語句) ,可以在任意地方執行
    在這裏插入圖片描述

  3. 括號是可選的
    如在上面打印語句中,println "name is ${name} age is ${age}" 等同於println("name is ${name} age is ${age}")

  4. 字符串的表達形式

    • ''單引號。僅僅表達的是一個字符串
    • ""雙引號。可以插入變量
    • ''' '''三個單引號。可以換行
    def city = 'GanSu'
    def country = "China"
    def address = '''城南一霸賈十七的
    家鄉在
    '''
    println("${address}:${country}.${city}")
    

    輸出:
    在這裏插入圖片描述

  5. 申明一個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}")
    }
    

    輸出結果:
    在這裏插入圖片描述

  6. 申明一個Map集合

    def information = ['name': '城南一霸賈十七', 'job': 'programmer']
    information.address = '中國.甘肅.武山'
    information.entrySet().each {
        println("key:${it.key},value:${it.value}")
    }
    

    在這裏插入圖片描述

  7. 閉包

    閉包,是一個代碼塊,跟方法類似。可以有參數,可以沒參數。可以賦值給一個變量,也作爲參數傳給一個方法。

    def c1 = {
        v -> println("有參數閉包,參數爲:${v}")
    }
    
    def c2 = {
        println("無參數閉包")
    }
    
    def method1(Closure closure) {
        closure('param')
    }
    
    def method2(Closure closure) {
        closure()
    }
    
    method1(c1)
    method2(c2)
    

    在這裏插入圖片描述

構建腳本

  1. 在gradle中,通過 group name version 唯一確定一個依賴包,如:implementation 'androidx.appcompat:appcompat:1.1.0'
    group(類比maven中的 GroupID):androidx.appcompat
    name(類比maven中的ArtifactID):appcompat
    version:1.1.0

  2. 常用方法:apply,dependencies,repositories task
    apply:應用一個插件
    dependencies:項目依賴
    repositories:去哪個倉庫找依賴jar包,然後根據group name version 確定組件
    task:申明項目中有哪些任務

  3. 屬性的其他配置方式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

  1. task:任務對應org.gradle.api.Task。主要包括任務動作和任務依賴。任務動作定義了一個最小的工作單元。gradle將一個個task任務串聯起來完成具體的構建任務。具體查看gradle task

  2. dependsOn申明任務依賴

  3. doFirst doLast<< 分別在任務列表的首尾添加動作任務。

  4. 創建一個任務:

    task projectTask {
        println 'This is project task !'
    }
    

    創建的任務在projcet目錄下,因爲task HelloWorld申明是在projcet目錄下,如在module下申明,那該任務是在module目錄下。
    在這裏插入圖片描述
    分別創建了projectTask和moduleApp兩個task,同步後控制檯輸出:
    在這裏插入圖片描述

參考資料:

Android Gradle學習(一):Gradle基礎入門
慕課網視頻:新一代構建工具gradle

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