Gradle Kotlin DSL迁移指南

栏目: IOS · Android · 发布时间: 5年前

内容简介:Gradle是一款基于JVM的新一代构建工具,使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。目前,Gradle 官方也提供了基于 Kotlin 的构建脚本语言:虽然都是基于Jvm的语言,但两者还是有着比较大的差异,但各自都有自己的优势groovy是动态类型脚本语言,可以直接当做脚本跑。语言也比较灵活。Kotlin语言比Groovy语言更加严格,并且具有内置的空安全性。

Gradle是一款基于JVM的新一代构建工具,使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。目前,Gradle 官方也提供了基于 Kotlin 的构建脚本语言: Gradle Kotlin DSL , 提供了类 groovy 的代码风格。Gradle官网上也有从Groovy迁移到Kotlin的指南: Migrating build logic from Groovy to Kotlin

Gradle Kotlin DSL迁移指南

Groovy or Kotlin

虽然都是基于Jvm的语言,但两者还是有着比较大的差异,但各自都有自己的优势

语法差异

groovy是动态类型脚本语言,可以直接当做脚本跑。语言也比较灵活。Kotlin语言比Groovy语言更加严格,并且具有内置的空安全性。

IDE支持

Android Studio都对两者有很好地支持。不过毕竟Kotlin是亲儿子,不排除会对其推出些特殊的支持。还有一点差别Kotlin DSL脚本改动后,studio会自动同步改动,而不是像原来一样会出现一个按钮来手动触发。这点上我更喜欢原来的方式。

脚本文件的命名

*.gradle
*.gradle.kts

所以要使用Kotlin DSL编写Gradle编译脚本,只需要将 build.gradle 改为 build.gradle.kts 即可,同理 settings.gradle 文件也可以被重命名为 settings.gradle.kts

另外Groovy DSL脚本文件和Kotlin DSL脚本文件可以共存,可以不用全部替换。

构建速度

官网上介绍说采用Kotlin DSL,全量构建的时候会慢一些,不过实际编译时差距不明显,在可接受范围内。

语法介绍

Groovy字符串可以用单引号引用 '字符串' 或双引号 “字符串” ,而Kotlin只能使用双引号 “字符串”

Groovy中函数调用的时候,如果只有一个参数,还可以不加括号;

转换前:

implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
复制代码

转换后:

implementation("androidx.appcompat:appcompat:1.1.0-alpha01")
复制代码

转换前:

applicationId "org.renny.test"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
复制代码

转换后:

applicationId = "org.renny.test"
        minSdkVersion(15)
        targetSdkVersion(28)
        versionCode = 1
        versionName = "1.0"
        testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
复制代码
apply(plugin = "com.android.application")
apply(plugin = "kotlin-android")
apply(plugin = "kotlin-android-extensions")
复制代码
plugins {
    id("com.android.application")
    kotlin("android")
    kotlin("android.extensions")
}
复制代码

使用插件

//groovy
buildscript {
    repositories {
        gradlePluginPortal()
    }
    dependencies {
        classpath('org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE')
    }
}

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'org.springframework.boot'
复制代码
//kotlin
buildscript {
    repositories {
        gradlePluginPortal()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")
    }
}

apply(plugin = "java")
apply(plugin = "jacoco")
apply(plugin = "org.springframework.boot")
复制代码

不过官方强烈推荐采用 plugins {} 的方式引入插件

plugins {
    id 'com.android.application'
}
复制代码
plugins {
    id("com.android.application")
    kotlin("android")
    kotlin("android.extensions")
}
复制代码

上面的kotlin()是kotlin DSL定义的扩展属性:

fun PluginDependenciesSpec.kotlin(module: String): PluginDependencySpec =
    id("org.jetbrains.kotlin.$module")
复制代码

创建Gradle Task

task greeting {
    doLast { println 'Hello, World!' }
}
复制代码
task("greeting") {
    doLast { println("Hello, World!") }
}
复制代码

小结

本文介绍并比较了Gradle’的Groovy DSL 和 Kotlin DSL 的一些语法差异,并且为迁移到 Kotlin DSL 提供了一些基础介绍。总体来说,两者并没有太大的优劣差异,如果你对Kotlin情有独钟或者感兴趣,可以尝试使用下 Kotlin DSL


以上所述就是小编给大家介绍的《Gradle Kotlin DSL迁移指南》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

集体智慧编程

集体智慧编程

Toby Segaran / 莫映、王开福 / 电子工业出版社 / 2015-3 / 79.00元

《集体智慧编程》以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web 上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来从Web 网站获取、收集并分析用户的数据和反馈信息,以便创造新的用户价值和商业价值。全书内容翔实,包括协作过滤技术(实现关联产品推荐功能)、集群数据分析(在大规模数据集中发掘相似的数据子集)、搜索引擎核心技术(爬虫、索引、查......一起来看看 《集体智慧编程》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具