如何使用Gradle启用Java 12预览功能?

时间:2019-03-30 17:19:29

标签: java gradle groovy build.gradle java-12

当我尝试使用具有开关表达式的gradle构建Java代码时,会引发此错误。

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

我尝试运行./gradlew build --enable-preview,该方法也不起作用。

我正在使用Gradle 5.3.1

3 个答案:

答案 0 :(得分:6)

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

类似的事情应该起作用:

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

要运行应用/测试,我们需要添加jvmArgs 示例:

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

答案 1 :(得分:1)

这里是使用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")
}

答案 2 :(得分:0)

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

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

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

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