3dayboy

技術備忘録

Gradle + Java のプロジェクトに Kotlin を混ぜて相互運用する

Gradle + Java で作ったアプリケーションを段階的に Kotlin でリプレイスしようと思ったので、相互運用する方法をメモ。

結論

build.gradle を kotlin プロジェクト仕様に置き換えれば ok。

build.gradle (Before; "$ gradle init --type java-application" で自動生成されるもの) :

plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.0-jre'
    testImplementation 'junit:junit:4.12'
}

application {
    mainClassName = 'abcdefg.App'
}

build.gradle (After; "$ gradle init --type kotlin-application" で自動生成されるもの) :

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.41'
    id 'application'
}

repositories {
    jcenter()
}

dependencies {
    implementation platform('org.jetbrains.kotlin:kotlin-bom')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testImplementation "org.jetbrains.kotlin:kotlin-test"
    testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
}

application {
    mainClassName = 'Main'
}

Kotlinソースファイルの設置場所

"src/main/java" に混在させるか、"src/main/kotlin" ディレクトリを作成してその中に入れる。 それ以外のディレクトリで管理したい場合は、以下の例のように build.gradle の sourceSet で指定する。

sourceSets {
    main.kotlin.srcDirs += 'src/main/myKotlin' //for kotlin file
    main.java.srcDirs += 'src/main/myJava' //for javafile
}

参考