将现有的groovy build.gradle文件转换为基于kotlin的build.gradle.kts

Exi*_*are 17 groovy kotlin gradle-kotlin-dsl

我的项目有两个不同的build.gradle文件,用groovy语法编写.我想将这个groovy写入的gradle文件更改为用Kotlin语法(build.gradle.kts)编写的gradle文件.

我将向您展示根项目build.gradle文件.

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    //ext.kotlin_version = '1.2-M2'
    ext.kotlin_version = '1.1.51'
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0-alpha01'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

我尝试了几种在互联网上找到的"方式",但没有任何效果.重命名文件,显然不是解决方案,没有帮助.我在我的根项目中创建了一个新的build.gradle.kts文件,但该文件没有显示在我的项目中.gradle也没有识别出新文件.

所以我的问题是:如何将我的groovy build.gradle文件转换为kotlin build.gradle.kts并将此新文件添加到我现有的项目中?

谢谢你的帮助.

mad*_*ead 19

当然重命名也无济于事.您需要使用Kotlin DSL重新编写它.它与Groovy类似,但有一些差异.阅读他们的文档,看看这些例子.

在您的情况下,问题是:

  1. ext.kotlin_version是无效的Kotlin语法,使用方括号
  2. 所有Kotlin字符串都使用双引号
  3. 大多数函数调用的参数都需要大括号(有中断函数等异常)
  4. Slighlty不同的任务管理API.有不同的风格.您可以tasks块中的所有任务声明为字符串,或使用单个类型的函数,如下例所示.

看看转换后的顶级build.gradle.kts:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext["kotlin_version"] = "1.1.51"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ("com.android.tools.build:gradle:3.1.0-alpha01")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:${ext["kotlin_version"]}")
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task<Delete>("clean") {
    delete(rootProject.buildDir)
}
Run Code Online (Sandbox Code Playgroud)