<
Build.gradle.kts 脚本 全局属性,及与 groovy 脚本 build.gradle 的对比
>
上一篇

Kotlin 多平台 expect actual
下一篇

自定义 lint 规则及其三种使用方式

新版 Android Studio 新建项目中 默认使用 kotlin 脚本 build.gradle.kts,设置 全局变量 与传统的 groovy 的 build.gradle 也有一些区别

1. Gradle 的 extraproperties

kotlin 的 build.gradle.kts

// 设置属性
// project 的 build.gradle.kts
buildscript {
    extra["kotlinVersion"] = "1.9.+"
}

// 获取
println(properties["kotlinVersion"]) // properties.get
println(project.extra["kotlinVersion"]) // 在模块中使用需要 `project.extra["key"]`

groovy 的 build.gradle

// 设置属性
// project 的 build.gradle
buildscript {
    ext.kotlin_version = "1.9.+"
}

// 获取
// 可直接作为变量使用
println(kotlin_version)

2. Java 的系统属性: System.setPropertySystem.getProperty

3. Gradle gradle.properties 中设置的属性

在 properties 设置属性

# gradle.properties
systemProp.kotlinVersion=1.9.+
simpleKey=123

在 kotlin 脚本 build.gradle.kts 读取

println("====== 系统属性读取, 读取 systemProp 后的 key ======")
println(System.getProperty("kotlinVersion")) // 获取指定系统属性
println(System.getProperties().getProperty("kotlinVersion")) // 获取所有系统属性的 map 再 get 指定属性

println("====== 普通属性读取, 读取完整的 key ======")
println(property("systemProp.kotlinVersion")) // 获取指定属性
println(properties["systemProp.kotlinVersion"]) // 获取所有属性的 map 再 get 指定属性。properties 和 extra 在 kts 的 plugins 代码块里报红但可正常执行
println(project.extra["systemProp.kotlinVersion"]) // 在模块中使用需要 `project.extra["key"]`

在 groovy 脚本 build.gradle 读取

println("====== 系统属性读取, 读取 systemProp 后的 key ======")
println(System.getProperty('kotlinVersion')) // 获取指定系统属性
println(System.properties['kotlinVersion']) // 获取所有系统属性的 map 再 get 指定属性

println("====== 普通属性读取, 读取完整的 key ======")
println(property("systemProp.kotlinVersion")) // 获取指定属性
println(getProperty('systemProp.kotlinVersion')) // 获取指定属性
println(project.ext["systemProp.kotlinVersion"]) // 在模块中使用需要 `project.ext["key"]`

println(simpleKey) // 简单的 key 可直接作为变量使用
Top
Foot