web-dev-qa-db-fra.com

Comment activer Java 12 fonctionnalités de prévisualisation avec Gradle?

Quand j'ai essayé de construire mon Java qui a expressions de commutateur en utilisant Gradle, il renvoie cette erreur:

error: switch expressions are a preview feature and are disabled by default.

J'ai essayé d'exécuter ./gradlew build --enable-preview qui n'a pas fonctionné non plus.

J'utilise Gradle 5.3.1.

14
Murali Krishna

Vous devez configurer les tâches JavaCompile, afin que Gradle passe cette option au compilateur Java lors de la compilation).

Quelque chose comme ça devrait fonctionner:

tasks.withType(JavaCompile).each {
    it.options.compilerArgs.add('--enable-preview')
}

Pour exécuter l'application/les tests, nous devons ajouter jvmArgs.

Exemple:

test {
    jvmArgs(['--enable-preview'])
}
18
JB Nizet

Voici une autre version utilisant le Gradle Kotlin DSL pour une utilisation dans build.gradle.kts:

plugins {
    `Java-library`
}

repositories {
    mavenCentral()
}

Java {
    sourceCompatibility = JavaVersion.VERSION_12
}

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

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.2")
    testImplementation("org.junit.jupiter:junit-jupiter-engine:5.4.2")
}

5
bentolor

Actuellement, il ne semble pas y avoir un seul endroit pour définir cela. Vous devriez le faire pour tous les types de tâches (compilation, test d'exécution ou Java exec). Je me suis retrouvé entièrement couvert par:

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

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

tasks.withType(JavaExec) {
    jvmArgs += '--enable-preview'
}
1
Aleksander Lech