目次
Kotlin 1.1.61 + Spring で Web Application を作る (3 of 4) の続きです。
Gradle を Kotlin で書く
build.gradle を Kotlin で書く
build.gradle
も Kotlin で書けます。 build.gradle
と同じ階層に build.gradle.kts
を作り、 下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import org.gradle.api.* import org.gradle.kotlin.dsl.* import org.gradle.plugin.* import org.gradle.script.lang.kotlin.* import org.jetbrains.kotlin.gradle.tasks.KotlinCompile group = "com.task" version = "1.0-SNAPSHOT" buildscript { val kotlinVersion = "1.1.61" extra["kotlin_version"] = kotlinVersion repositories { mavenCentral() } dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") } } plugins { id("org.springframework.boot") version "1.5.8.RELEASE" } apply { plugin("kotlin") } repositories { mavenCentral() jcenter() } dependencies { val kotlinVersion = extra["kotlin_version"] as String "compile"("org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlinVersion") compile("org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE") compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("org.postgresql:postgresql:42.1.4") val kotlinxHtmlVersion = "0.6.6" compile("org.jetbrains.kotlinx:kotlinx-html-jvm:$kotlinxHtmlVersion") } tasks.withType<KotlinCompile>(KotlinCompile::class.java).all { kotlinOptions { jvmTarget = "1.8" } } |
そして、 build.gradle を削除します。 ./gradlew clean && ./gradlew bootrun をやって正常にサーバが起動すれば成功です。
Gradle 4.0 より前のバージョンを使っている場合は settings.gradle の最後に1行書き加えます。 Kotlin DSL v0.9.0 から rootProject.buildFileName
の設定をしなくても、 build.gradle.kts が使えるようになり。 Gradle 4.0 に取り込まれました。
1 2 3 |
rootProject.name = 'myapp' // 追加 rootProject.buildFileName = 'build.gradle.kts' |
settings.gradle も Kotlin で書く
Kotlin DSL v0.13.1 から settings.gradle.kts
が使えるようになりました。 Gradle 4.4 RC1 から取り込まれています。 Intellij IDEA では、 Kotlin のプラグイン 1.1.60-eap-43 からサポートされています。
そこで、Gradle のバージョンをアップグレードします。
1 |
./gradlew wrapper --gradle-version=4.4-rc-1 |
バージョン 4.4 RC 1 以前の Gradle でもビルドはできます。 しかし、 settings.gradle.kts が有効に使われません。
次に、 settings.gradle
を settings.gradle.kts
へ名前変更します。 2つ注意点があります。 1つ目は文字列の扱いです。 settings.gradle
では シングルクオートでも、ダブルクオートでも文字列を記述することができましたが、 Kotlin ではダブルクオートで文字列を表します。そこで rootProject.name
の記述を変更します。
変更前 | rootProject.name = 'myapp' |
---|---|
変更後 | rootProject.name = "myapp" |
2つ目は rootProject
の型です。 このままでも問題なく動くのですが、 Intellij IDEA 上の表示では rootProject
が Project インターフェース として認識されるため、赤波線が表示されます。 Project インターフェース には setName
メソッド がありません。
そこで rootProject を ProjectDescriptor にキャストします。
変更後 | (rootProject as ProjectDescriptor).name = "myapp" |
---|
settings.gradle
を Kotlin で書くために いくつか変更を行いましたが、 これは後のアップグレードされた Gradle では不要となります。