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

多模块Maven项目中Quarkus自定义扩展mvn打包失败求助

问题解决方案

核心原因

问题出在Maven reactor的模块构建范围未覆盖extension-a的deployment/runtime子模块,同时Quarkus扩展的编译时依赖特性要求deployment模块必须存在于本地仓库或reactor构建流程中。根目录执行mvn clean package时,Maven未构建extension-a的deployment模块,导致module-a打包时尝试从中央仓库下载不存在的该依赖。

具体解决步骤

  1. 补全extensions-bundle的子模块配置
    打开extensions-bundle/pom.xml,确保<modules>节点包含extension-a:

    <modules>
        <module>extension-a</module>
    </modules>
    
  2. 补全extension-a的子模块配置
    打开extensions-bundle/extension-a/pom.xml,确保<modules>节点包含deployment和runtime:

    <modules>
        <module>runtime</module>
        <module>deployment</module>
    </modules>
    

    这一步能让Maven reactor在构建extensions-bundle时,自动递归构建extension-a的两个子模块。

  3. 调整根模块的构建顺序(可选但推荐)
    虽然Maven会自动根据依赖关系调整构建顺序,但显式调整根pom的<modules>顺序可避免潜在问题:

    <modules>
        <module>lib-module</module>
        <module>extensions-bundle</module>
        <module>module-a</module>
    </modules>
    

    先构建被依赖的lib-module,再构建extensions相关模块,最后构建依赖它们的module-a。

  4. 确认module-a的依赖配置正确性
    确保module-a对extension-a-runtime的依赖使用项目统一版本(避免硬编码版本导致不一致):

    <dependency>
        <groupId>你的项目groupId</groupId>
        <artifactId>extension-a-runtime</artifactId>
        <version>${project.version}</version>
    </dependency>
    
  5. 执行全量构建验证
    在根目录执行以下命令,先安装所有模块到本地仓库,再执行打包:

    mvn clean install -DskipTests
    mvn clean package
    

为什么单独运行module-a的quarkus:dev正常?

Quarkus的quarkus:dev目标会自动检测并构建本地依赖的模块(即使它们不在当前reactor中),且开发模式下可能跳过部分严格的依赖检查;但mvn clean package是标准Maven生命周期,必须严格遵循reactor的模块构建范围,未被纳入构建的模块不会被自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:01:11