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.
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'])
}
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")
}
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'
}