25

当我尝试使用 Gradle构建具有switch 表达式的 Java 代码时,它会引发此错误:

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

我试过跑步./gradlew build --enable-preview,但也没有用。

我正在使用 Gradle 5.3.1。

4

3 回答 3

28

您需要配置JavaCompile任务,以便 Gradle 在编译时将此选项传递给 Java 编译器。

像这样的东西应该工作:

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

要运行应用程序/测试,我们需要添加jvmArgs.

例子:

test {
    jvmArgs(['--enable-preview'])
}
于 2019-03-30T17:27:54.823 回答
21

目前似乎没有一个地方可以定义它。您应该为所有任务类型(编译、测试运行时或 java exec 相关任务)执行此操作。我发现自己完全被:

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

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

tasks.withType(JavaExec) {
    jvmArgs += '--enable-preview'
}
于 2019-10-21T09:32:35.683 回答
9

这是另一个使用 Gradle Kotlin DSL 的版本,用于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")
}

于 2019-06-06T17:49:30.190 回答