web-dev-qa-db-ja.com

既存のgroovy build.gradleファイルをkotlinベースのbuild.gradle.ktsに変換します

私のプロジェクトには、groovy構文で記述された2つの異なるbuild.gradleファイルがあります。このGroovyで記述されたGradleファイルを、Kotlin Syntax(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
}

インターネットで見つけた「方法」をいくつか試しましたが、何もうまくいきませんでした。明らかにソリューションではないファイルの名前を変更しても効果がありませんでした。ルートプロジェクトに新しいbuild.gradle.ktsファイルを作成しましたが、ファイルがプロジェクトに表示されません。また、gradleは新しいファイルを認識しませんでした。

だから私の質問は:どうすれば私のgroovy build.gradleファイルをkotlin build.gradle.ktsに変換し、この新しいファイルを既存のプロジェクトに追加できますか?

ご協力いただきありがとうございます。

18
Exitare

もちろん、名前を変更しても役に立ちません。 Kotlin DSLを使用して書き直す必要があります。 Groovyに似ていますが、いくつかの違いがあります。 ドキュメントを読む をご覧ください。

あなたの場合、問題は次のとおりです。

  1. ext.kotlin_versionは有効なKotlin構文ではありません。 角かっこ を使用してください
  2. すべて Kotlin文字列 二重引用符を使用
  3. ほとんどの関数呼び出し のパラメーターの前後に中括弧が必要です(- infix functions のような例外があります)
  4. 少し異なるタスク管理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)
}
20
madhead

Build.gradleの名前をbuild.gradle.ktsに変更しました。その後、Groovy構文をKotlinに置き換え始めました。

    buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath ("com.Android.tools.build:gradle:3.6.2")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61")

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

tasks.register("clean", Delete::class) {
    delete(rootProject.buildDir)
}
0