私のプロジェクトには、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に変換し、この新しいファイルを既存のプロジェクトに追加できますか?
ご協力いただきありがとうございます。
もちろん、名前を変更しても役に立ちません。 Kotlin DSLを使用して書き直す必要があります。 Groovyに似ていますが、いくつかの違いがあります。 ドキュメントを読む 、 例 をご覧ください。
あなたの場合、問題は次のとおりです。
ext.kotlin_version
は有効なKotlin構文ではありません。 角かっこ を使用してください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)
}
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)
}