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

Gradle预编译脚本插件执行quarkusDev时找不到Quarkus外部插件依赖

背景

我目前正在开发包含多个Quarkus微服务的Gradle多项目,为了统一封装Quarkus依赖配置,我使用带kotlin-dsl的预编译脚本插件实现配置复用。按当前配置执行quarkusBuild任务可正常运行。

问题

对微服务子项目执行quarkusDev任务时失败,报错信息如下:
Unable to find quarkus-gradle-plugin dependency in project ':microservice'
我尝试排查了很久一直没定位到根因,相关公开issue给出的解决方案对我的场景无效,求帮忙排查。

补充说明

我发现gradle.plugin.io.quarkus:quarkus-gradle-plugin:2.2.3.Final和io.quarkus:gradle-application-plugin:2.2.3.Final可能存在差异,但互换这两个依赖后问题依旧没有解决。

项目配置

以下是可复现问题的最小项目结构:

rootProject
    - buildSrc
          - src/main/kotlin
                quarkus-conventions.gradle.kts
          build.gradle.kts
          settings.gradle.kts
          gradle.properties
    - microservice
          - src/...
          build.gradle.kts
    build.gradle.kts
    settings.gradle.kts
    gradle.properties

rootProject/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts

plugins {
    java
    id("io.quarkus")
}

val quarkusUniverseBomVersion: String by project

dependencies {
    implementation(enforcedPlatform("io.quarkus:quarkus-universe-bom:$quarkusUniverseBomVersion"))
    implementation("io.quarkus:quarkus-kotlin")
    implementation("io.quarkus:quarkus-resteasy-reactive")
    implementation("io.quarkus:quarkus-resteasy-reactive-jackson")
    implementation("io.quarkus:quarkus-hibernate-reactive-panache")
    implementation("io.quarkus:quarkus-reactive-pg-client")
    implementation("io.quarkus:quarkus-smallrye-reactive-messaging-amqp")
    implementation("io.quarkus:quarkus-arc")
    testImplementation("io.quarkus:quarkus-junit5")
}

rootProject/buildSrc/build.gradle.kts

val quarkusPluginVersion: String by project

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
    maven("https://plugins.gradle.org/m2/")
    gradlePluginPortal()
}

dependencies {
    implementation("io.quarkus:gradle-application-plugin:${quarkusPluginVersion}")
}

rootProject/buildSrc/gradle.properties

quarkusPluginVersion=2.3.0.Final

rootProject/microservice/build.gradle.kts

plugins {
    id("quarkus-conventions")
}

rootProject/settings.gradle.kts

include("microservice")

rootProject/build.gradle.kts

plugins {
    idea
}

repositories {
    mavenCentral()
    maven("https://plugins.gradle.org/m2/")
    gradlePluginPortal()
}

allprojects {
    apply(plugin = "idea")

    idea {
        module {
            isDownloadSources = true
            isDownloadJavadoc = true
        }
    }
}

rootProject/gradle.properties

quarkusUniverseBomVersion=2.2.3.Final

解决方案

问题由两个原因共同导致:

  1. Quarkus的quarkusDev任务运行时,需要在应用子项目的构建类路径中找到Quarkus Gradle插件本身,你当前仅将插件依赖放在了buildSrc的构建脚本依赖中,dev模式运行时无法扫描到该依赖。
  2. 你的Quarkus Gradle插件版本(2.3.0.Final)和Quarkus Universe BOM版本(2.2.3.Final)不统一,版本不匹配也会引发未知的兼容性问题。

按以下步骤修复即可正常运行:

  1. 首先统一版本,把buildSrc/gradle.properties里的quarkusPluginVersion改成和根目录gradle.properties里的quarkusUniverseBomVersion一致,都设置为2.2.3.Final(也可以同步升级到同一个更高版本),避免版本兼容问题。
  2. 在quarkus-conventions.gradle.kts的plugins块之后添加如下配置,显式将Quarkus Gradle插件依赖加入子项目的构建类路径:
buildscript {
    val quarkusPluginVersion: String by project
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath("io.quarkus:gradle-application-plugin:${quarkusPluginVersion}")
    }
}

修改完成后清除本地Gradle缓存,重新执行quarkusDev任务即可正常启动。

备选方案(更适合多项目统一维护)

如果不想在约定插件里加buildscript块,可以在根项目的settings.gradle.kts中添加pluginManagement配置统一管理插件版本:

pluginManagement {
    val quarkusPluginVersion: String by settings
    plugins {
        id("io.quarkus") version quarkusPluginVersion
    }
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}

之后把quarkusPluginVersion配置移到根目录的gradle.properties里统一维护即可,后续新增子项目不需要再重复配置版本。


内容的提问来源于stack exchange,提问作者code_name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:39:01