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

发布了7 篇原创文章 · 获赞 0 · 访问量 136

猜你喜欢

转载自blog.csdn.net/weixin_35937808/article/details/103288685