升级Micronaut至4.1.6时collectReachabilityMetadata任务创建失败
Micronaut 4.1.6升级报错:无法创建collectReachabilityMetadata任务
问题背景
基于Java 17 + Gradle 8.2.1的Web应用,从Micronaut 3.8.4升级到4.1.6时触发如下错误:
无法创建任务':collectReachabilityMetadata'。无法使用类型为org.graalvm.buildtools.gradle.internal.GraalVMReachabilityMetadataService的提供者设置任务':collectReachabilityMetadata'的'metadataService'属性(该属性类型同样为org.graalvm.buildtools.gradle.internal.GraalVMReachabilityMetadataService)。
项目Gradle配置如下:
plugins { id 'project-report' id("com.github.johnrengelman.shadow") version "8.1.1" id("io.micronaut.application") version "4.2.0" id("org.owasp.dependencycheck") version "7.1.1" id("org.sonarqube") version "5.0.0.4638" id("org.liquibase.gradle") version "2.2.2" id('jacoco') } version = "1.1.1" repositories { mavenCentral() maven { url "https://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts" } } micronaut { version '4.1.6' runtime("netty") testRuntime("junit5") processing { incremental(true) annotations("my.class.main.*") annotations("my.class.test.*") } } jacocoTestReport { reports { xml.required = true csv.required = false html.outputLocation = layout.buildDirectory.dir('reports/tests/coverageReport') } } dependencyCheck { formats = ["JSON", "HTML"] suppressionFiles = ["${projectDir}/config/dependencyCheck/suppressions.xml"] } sonarqube { properties { property 'sonar.host.url', "${sonar_host_url}" property 'sonar.login', "${sonar_login}" property "sonar.dependencyCheck.jsonReportPath", "$buildDir/reports/dependency-check-report.json" property "sonar.dependencyCheck.htmlReportPath", "$buildDir/reports/dependency-check-report.html" } } test { finalizedBy jacocoTestReport // report is always generated after tests run } dependencies { //DEPENDENCIA DE MFTCore implementation("MFTCore:lib:3.1.1") //DEPENDENCIAS MINIMAS DE MICRONAUT annotationProcessor("io.micronaut:micronaut-http-validation") implementation("io.micronaut.validation:micronaut-validation") implementation("io.micronaut.liquibase:micronaut-liquibase") implementation 'com.google.zxing:javase:3.5.0' implementation 'com.google.zxing:core:3.5.0' implementation("com.sun.mail:jakarta.mail:2.0.0") annotationProcessor("io.micronaut:micronaut-management:3.2.0") implementation("io.micronaut:micronaut-http-client") implementation("io.micronaut.data:micronaut-data-hibernate-jpa") implementation("io.micronaut.security:micronaut-security-jwt") //SWAGGER annotationProcessor("io.micronaut.openapi:micronaut-openapi") implementation("io.swagger.core.v3:swagger-annotations") implementation("io.micronaut.openapi:micronaut-openapi:4.5.2") implementation 'org.bouncycastle:bcprov-jdk18on:1.72' implementation 'org.bouncycastle:bcpkix-jdk18on:1.72' implementation 'javax.xml.bind:jaxb-api' implementation "org.glassfish.jaxb:jaxb-runtime:${jaxWsVersion}" //Liquibase liquibaseRuntime("org.liquibase:liquibase-core:3.8.1") liquibaseRuntime("org.liquibase:liquibase-groovy-dsl:2.1.1") liquibaseRuntime("org.postgresql:postgresql") liquibaseRuntime("org.liquibase.ext:liquibase-hibernate5:4.3.5") liquibaseRuntime("org.yaml:snakeyaml:1.8") liquibaseRuntime('org.codehaus.groovy:groovy-all:3.0.12') implementation('com.github.spullara.mustache.java:compiler:0.9.10') implementation('net.sf.jasperreports:jasperreports:6.20.0') implementation('net.sf.jasperreports:jasperreports-functions:6.20.0') implementation('net.sf.jasperreports:jasperreports-fonts:6.20.0') liquibaseRuntime files(sourceSets.getByName("main").compileClasspath) liquibaseRuntime files(sourceSets.getByName("main").runtimeClasspath) liquibaseRuntime files(sourceSets.getByName("main").output) //Test testImplementation('org.mockito:mockito-core:4.10.0') testImplementation('org.junit.jupiter:junit-jupiter:5.8.1') testImplementation('org.testcontainers:testcontainers:1.17.6') testImplementation('org.testcontainers:junit-jupiter:1.17.6') testRuntimeOnly("org.testcontainers:postgresql") runtimeOnly("io.micronaut.sql:micronaut-jdbc-hikari") implementation("io.micronaut.sql:micronaut-jdbc-hikari") testImplementation 'com.github.rweisleder:jfairy-junit-extension:0.2.0' //Cache implementation('io.micronaut.cache:micronaut-cache-caffeine') implementation('io.micronaut.cache:micronaut-cache-management') //ELK implementation("org.codehaus.janino:janino:3.1.9") runtimeOnly("net.logstash.logback:logstash-logback-encoder:7.2") runtimeOnly('ch.qos.logback:logback-classic:1.2.11') runtimeOnly('ch.qos.logback:logback-access:1.2.11') runtimeOnly 'org.fusesource.jansi:jansi:2.4.0' // dependencies to call AFIP WS implementation(project(':afip-connector')) implementation(project(':ap-connector')) implementation(project(':ai-connector')) implementation(project(':taco-connector')) compileOnly "jakarta.xml.ws:jakarta.xml.ws-api:3.0.1" implementation 'com.sun.xml.ws:rt:4.0.1' runtimeOnly("org.yaml:snakeyaml") } apply plugin: "org.liquibase.gradle" application { mainClass.set("my.class.main.Application") } java { sourceCompatibility = JavaVersion.toVersion("17") targetCompatibility = JavaVersion.toVersion("17") } // ultima version de MFTCore configurations.all { resolutionStrategy.cacheDynamicVersionsFor(1, "minutes") } shadowJar { zip64 true } tasks.withType(Test).configureEach { if (JavaVersion.current().majorVersion.toInteger() >= 17) { // This is required for JFairy mock person data generation it.jvmArgs += ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] } }
解决方案
1. 对齐Micronaut插件与框架版本
当前框架用的是4.1.6,但io.micronaut.application插件版本是4.2.0,版本不一致会导致依赖冲突。将插件版本修改为与框架一致:
id("io.micronaut.application") version "4.1.6"
2. 修复Micronaut Management依赖版本
依赖中micronaut-management还是3.2.0,与Micronaut 4.x不兼容,升级到对应版本:
annotationProcessor("io.micronaut:micronaut-management:4.1.6")
3. 清理Gradle缓存并重建
缓存的旧依赖可能引发冲突,执行以下命令清理缓存后重新构建:
./gradlew clean build --refresh-dependencies
4. 强制指定兼容的GraalVM Build Tools版本(若上述步骤无效)
如果问题仍存在,手动指定与Gradle 8.2.1兼容的GraalVM插件版本:
buildscript { dependencies { classpath("io.micronaut.gradle:micronaut-gradle-plugin:4.1.6") { exclude group: "org.graalvm.buildtools", module: "native-gradle-plugin" } classpath("org.graalvm.buildtools:native-gradle-plugin:0.9.28") } }
内容的提问来源于stack exchange,提问作者Andres Benavides
相关产品推荐
相关产品推荐

