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

多模块Maven构建下多个Quarkus应用如何使用quarkus:dev开发模式并实时加载共享库代码

解决方案:多模块Maven下启动指定Quarkus应用并实时加载共享库变更

你完全不用合并共享库,通过Maven的参数组合和Quarkus的原生支持就能实现需求,下面是具体的可行方案:

方法一:用-pl+-am参数直接启动目标应用

Maven的-pl(指定要操作的模块)和-am(自动构建目标模块的所有依赖)参数组合,刚好能解决你从根目录启动指定应用、同时关联共享库的问题:

  1. 在项目根目录执行以下命令(以启动Quarkus应用1为例):

    mvn quarkus:dev -pl quarkus-app1 -am
    
    • -pl quarkus-app1:明确告诉Maven只针对这个应用模块执行dev命令
    • -am:自动触发共享库模块的构建,确保Quarkus能拿到最新的共享代码
  2. 验证实时加载效果:

    • 修改共享库的代码并保存,Maven会自动重新编译共享库的类文件
    • Quarkus的dev模式会立刻检测到类文件变化,自动重新加载相关代码,完全不需要重启应用

关键注意事项

  • 绝对不要提前执行mvn install:如果先把共享库安装到本地Maven仓库,Quarkus会优先调用仓库里的旧版本,而非本地源码的最新变更。保持共享库为项目内模块依赖(默认的<scope>compile</scope>即可)就好。
  • 确认共享库是应用的直接依赖:在Quarkus应用的pom.xml中,共享库的依赖必须指向项目内模块,比如:
    <dependency>
        <groupId>你的项目groupId</groupId>
        <artifactId>共享库的artifactId</artifactId>
        <version>项目统一版本号</version>
    </dependency>
    

方法二:用Maven Profiles简化启动命令(可选)

如果觉得每次输入长命令麻烦,可以在根pom.xml里定义Profiles,把启动逻辑封装起来:

  1. 在根pom的<profiles>节点中添加:

    <profile>
        <id>dev-app1</id>
        <modules>
            <module>共享库</module>
            <module>quarkus-app1</module>
        </modules>
        <build>
            <plugins>
                <plugin>
                    <groupId>io.quarkus</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>dev</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>dev-app2</id>
        <modules>
            <module>共享库</module>
            <module>quarkus-app2</module>
        </modules>
        <build>
            <plugins>
                <plugin>
                    <groupId>io.quarkus</groupId>
                    <artifactId>quarkus-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>dev</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    
  2. 启动应用时只需执行:

    mvn -P dev-app1
    

    这样会自动构建共享库和目标应用,同时启动dev模式,同样支持实时加载共享库的代码变更。

这两种方案都能完美解决你的问题,不需要合并共享库模块,两个Quarkus应用都能独立启动并实时感知共享代码的变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:42:43