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 }