• Gradle 笔记


    Groovy 的闭包 (关键语法)

    • 定义: 类似于 lambda 表达式, 传递时使用匿名内部类对象的方式

    • 特点: 可以先声明,然后设置代理来执行

    Closure closure = {
        sayHello()
    }
    // 测试准备
    class Foo {
        void sayHello() {
            println("Hello!!!")
        }
    }
    def foo = new Foo()
    // 开始测试, 可以看出 delegate 是一个成员变量, 而且类型是匿名的接口
    closure.delegate = foo
    closure()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 调用特性:
      • 可以外置 (闭包对象在最后一个参数时)
      • 可以外置 + 省略括号 (仅有一个参数且为闭包时)
    def running(Closure closure) {
      println("start~")
      closure()
      println("end.")
    }
    
    running({ println("running...") })
    // 闭包可以后置
    running() {println("running...")}
    
    def caculate(Closure closure) {
    	def num1 = 10
      def num2 = 15
      closure(num1, num2)
    }
    
    caculate() {k,v -> println("$k + $v = ${k+v}")}
    // 括号可以省略, 也就是最熟悉的 Gradle 方式
    caculate {k,v -> println("$k + $v = ${k+v}") }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    Gradle 的构建流程

    1. 生成一个 Settings 对象,执行 settings.gradle 对这个对象进行配置
    2. 使用 Settings 对象生成工程结构,创建 Project 对象
    3. 对所有 Project 执行对应的 build.gradle 进行配置

    脚本文件 build.gradle 的执行方式

    总结一下,build.gradle 就是一个 Groovy 格式的脚本文件, 构建的时候会顺序执行, 但是打开 build.gradle 可能还是一头雾水, 一个个字符和大括号?以最长使用的 dependencies 举例

    dependencies {
        // This dependency is found on compile classpath of this component and consumers.
        implementation 'com.google.guava:guava:26.0-jre'
    
        // Use JUnit test framework
        testImplementation 'junit:junit:4.12'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    同时 implementation 也可以这样写

    implementation('com.google.guava:guava:26.0-jre')
    
    • 1

    implementation 其实就是函数. Groovy 中函数调用可以使用空格加参数的形式调用

    void foo(String params1, int param2) {
        println("param1 = $params1, param2 = $param2")
    }
    
    foo "hello", 996
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Gradle 和 Groovy 的关系

    Gradle 支持 Kotlin 或 Groovy 两种语言编写, 两者的关系为实现关系. Groovy 是 Gradle 的一种 DSL ( Domain Specific Language i.e., 领域专用语言)

    Gradle 的 DSL 专门用于配置项目的构建不能用于其他工作. 语法还是 Groovy 自身的语法, 但调用只能依靠 Gradle 规定的 API 方式或者特定的一套规范. 强调一个 Specific 专用 (约定)

    与 DSL (HTML、Makefile、LaTeX、AWK) 相对应的是可以做任何工作的通用语言 (Java 、C/C++)

  • 相关阅读:
    LeetCode902最大为 N 的数字组合(相关话题:数位DP问题,递归遍历和减枝)
    大型DOM结构是如何影响交互性的
    jxTMS+职教:SaaS模式的低门槛开发实训
    使用GPA和夜神模拟器实现K帧
    对公司严抓考勤的重新深度认知分享-考勤对传统型公司的重要性
    “双节”出游,VR智慧景区让你的旅游更具“心价比”
    GIS 分析常用的 7 个地理处理工具
    端粒/端粒酶生信切入点,6+端粒酶+泛癌+甲基化+实验。
    序章 调度系统架构设计总述
    Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理
  • 原文地址:https://blog.csdn.net/howeres/article/details/125568318