当我尝试使用Gradle构建具有switch表达式的Java代码时,它会抛出以下错误:
error: switch expressions are a preview feature and are disabled by default.
我尝试运行./gradlew build --enable-preview
,但也没有成功。
我正在使用Gradle 5.3.1。
您需要配置JavaCompile
任务,以便在编译时Gradle将此选项传递给Java编译器。
像这样的内容应该可以工作:
tasks.withType(JavaCompile).each {
it.options.compilerArgs.add('--enable-preview')
}
运行应用程序/测试需要添加 jvmArgs
。test {
jvmArgs(['--enable-preview'])
}
目前似乎没有一个单一的地方来定义它。您应该为所有任务类型(编译、测试运行时或Java执行相关任务)都进行定义。我发现自己完全掌握了:
tasks.withType(JavaCompile) {
options.compilerArgs += "--enable-preview"
}
tasks.withType(Test) {
jvmArgs += "--enable-preview"
}
tasks.withType(JavaExec) {
jvmArgs += '--enable-preview'
}
bootRun
来说非常有用,但在使用简单的 application
插件时也很实用。 - Aleksander Lech下面是另一种使用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")
}
test { jvmArgs(['--enable-preview']) } run { jvmArgs(['--enable-preview']) }
- Murali KrishnaapplicationDefaultJvmArgs += ["--enable-preview"]
而不是test {jvmArgs(['--enable-preview'])}
。 - Matthias Braun