Gradle で Java プレビュー言語機能を有効にする

blog1.mammb.com


Java プレビュー言語機能

Java でプレビュー言語機能を使用するには、コンパイラとランタイム・システムで明示的にプレビュー言語機能を有効化する必要があります。

JDK リリース n のプレビュー機能を使用するソース・コードをコンパイルするには、--enable-preview オプションを --release n または -source n オプションと組み合せて javac を実行します。

たとえば、MyApp.java という名前のアプリケーションで、JDK 20 のプレビュー言語機能を使用する場合は以下のようにコンパイルします。

$ javac --enable-preview --release 20 MyApp.java

実行時には以下のように指定します。

$ java --enable-preview MyApp

プレビュー機能の役割とライフサイクルについてはJEP 12を参照してください。


Gradle Kotlin DSL でプレビュー機能を有効化する

コンパイル、テスト実行、実行、およびJavaDoc時にプレビュー機能を有効にするには、build.gradle.kts で以下のスニペットを使用できます。

tasks.withType<JavaCompile>().configureEach {
    options.compilerArgs.add("--enable-preview")
}

tasks.withType<Test>().configureEach {
    jvmArgs("--enable-preview")
}

tasks.withType<JavaExec>().configureEach {
    jvmArgs("--enable-preview")
}

tasks.withType<Javadoc>().configureEach {
    options {
        this as StandardJavadocDocletOptions
        addBooleanOption("-enable-preview", true)
        addStringOption("-release", "20")
    }
}

コンパイル時には、 --release または -source を指定する必要はありません(Gradle側で指定されます)。


アプリケーションプラグインを利用している場合は、applicationDefaultJvmArgs に設定します。

application {
    applicationDefaultJvmArgs = listOf("--enable-preview")
}

applicationDefaultJvmArgs の引数は、実行用の shell スクリプトに反映されます。


Gradle Groovy DSL でプレビュー機能を有効化する

コンパイル、テスト実行、実行、およびJavaDoc時にプレビュー機能を有効にするには、build.gradle で以下のスニペットを使用できます。

tasks.withType(JavaCompile).configureEach {
    options.compilerArgs += "--enable-preview"
}

tasks.withType(Test).configureEach {
    jvmArgs += "--enable-preview"
}

tasks.withType(JavaExec).configureEach {
    jvmArgs += "--enable-preview"
}

tasks.withType(Javadoc).configureEach {
    options.addBooleanOption("-enable-preview", true)
    options.addStringOption("-release", "20")
}