You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:45:54