如何告诉quarkus使用java 17?

问题描述 投票:0回答:1

我不断收到构建错误,表示我正在使用预览功能(切换表达式):

Service.java:28: error: patterns in switch statements are a preview feature and are disabled by default.
      case CalssA sr -> sr.getMeterReadings();
           ^
  (use --enable-preview to enable patterns in switch statements)

我在build.gradle中明确表示我想使用Java 17。Switch表达式在Java 14中发布了

这是我的

gradle.properties
settings.gradle
build.gradle

quarkusPluginVersion=3.0.1.Final
quarkusPlatformArtifactId=quarkus-bom
quarkusPluginId=io.quarkus
quarkusPlatformGroupId=io.quarkus.platform
quarkusPlatformVersion=3.0.1.Final
pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
        mavenLocal()
    }
    plugins {
        id "${quarkusPluginId}" version "${quarkusPluginVersion}"
    }
}
rootProject.name='upc'
buildscript {
    repositories {
        mavenCentral()
        gradlePluginPortal()
        mavenLocal()
    }
    dependencies {
        classpath 'com.h2database:h2:1.4.197'
    }
}


plugins {
    id 'java'
    id 'io.quarkus'
    id 'org.flywaydb.flyway' version '9.8.1'
}

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    def lombok_version = '1.18.26'
    def map_struct_version = '1.5.5.Final'

    implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
    implementation 'io.quarkus:quarkus-resteasy-reactive-qute'
    implementation 'io.quarkus:quarkus-resteasy-reactive'
    implementation 'io.quarkus:quarkus-resteasy-reactive-jackson'
    implementation 'io.quarkus:quarkus-arc'
    implementation 'io.quarkus:quarkus-flyway'
    implementation 'io.quarkus:quarkus-hibernate-validator'
    implementation 'io.quarkiverse.jdbc:quarkus-jdbc-sqlite:3.0.5'
    implementation 'io.quarkiverse.mybatis:quarkus-mybatis:2.0.0'
    implementation 'org.jboss.logging:jboss-logging'
    implementation "org.mapstruct:mapstruct:${map_struct_version}"
    implementation 'com.google.guava:guava:31.1-jre'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-guava:2.14.2'


    compileOnly "org.projectlombok:lombok:${lombok_version}"
    annotationProcessor "org.projectlombok:lombok:${lombok_version}"
    annotationProcessor "org.mapstruct:mapstruct-processor:${map_struct_version}"

    testCompileOnly "org.projectlombok:lombok:${lombok_version}"
    testAnnotationProcessor "org.projectlombok:lombok:${lombok_version}"
    testAnnotationProcessor "org.mapstruct:mapstruct-processor:${map_struct_version}"

    testImplementation 'io.quarkus:quarkus-junit5'
    testImplementation 'io.rest-assured:rest-assured'
}

group 'org.acanthite'
version '0.1'

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

test {
    systemProperty 'java.util.logging.manager', 'org.jboss.logmanager.LogManager'
}



compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs += [
            '-parameters',
            '-Amapstruct.defaultComponentModel=cdi',
            '-Amapstruct.defaultInjectionStrategy=constructor'
    ]
}

compileTestJava {
    options.encoding = 'UTF-8'
    options.compilerArgs += [
            '-parameters',
            '-Amapstruct.defaultComponentModel=cdi',
            '-Amapstruct.defaultInjectionStrategy=constructor'
    ]
}

以下是项目的 IDEA 设置: enter image description here enter image description here

我做错了什么?还有其他地方需要指定Java版本吗?

gradle quarkus java-17 switch-expression
1个回答
1
投票

我已经知道出了什么问题了。

Gradle 和 quarkus 都很好并且工作完美。

问题是我没有使用

switch expressions
而是使用
switch pattern matching
,它看起来很相似,但却是完全不同的东西。这是 Java 17 中的预览功能。不过,有一个编译器标志
--enable-preview
可以在某种程度上适用于非测试构建,但在运行测试时会失败。请参阅此问题:https://github.com/quarkusio/quarkus/issues/10472

© www.soinside.com 2019 - 2024. All rights reserved.