原创

若依微服务版本仅打包某个模块

在若依微服务版本(RuoYi-Cloud)中,仅打包某个模块(如 ruoyi-system或 ruoyi-auth)需要使用 Maven 的 -pl(projects list) 参数。由于微服务模块间存在依赖关系(如业务模块依赖 ruoyi-common),通常需要配合 -am(also make) 参数自动构建依赖项。

核心命令与场景

请确保在 项目根目录(即包含 ruoyi-gateway、ruoyi-modules等文件夹的父目录)下执行以下命令。

场景 命令示例(以打包 ruoyi-system为例) 作用说明
仅打包该模块(不关心依赖是否最新) mvn clean package -pl ruoyi-modules/ruoyi-system 只编译 ruoyi-system本身。如果本地仓库已有依赖的 JAR,速度最快,但若依赖代码有改动,可能报错。
打包该模块及其依赖(推荐,最稳妥) mvn clean package -pl ruoyi-modules/ruoyi-system -am 自动识别 ruoyi-system依赖了 ruoyi-common等模块,并先打包这些依赖,再打包目标模块。
跳过测试(加速打包) mvn clean package -pl ruoyi-modules/ruoyi-system -am -DskipTests 在推荐命令基础上,跳过单元测试执行,大幅减少打包时间。
打包多个指定模块(如网关和认证) mvn clean package -pl ruoyi-gateway,ruoyi-auth -am 同时打包网关和认证中心,并构建它们的公共依赖。

关键操作细节

1. 如何确定模块路径(-pl参数值)

若依微服务版是多级嵌套的 Maven 项目,-pl参数需要的是相对于根目录的路径,而不是简单的 artifactId

你想打包的模块 在 IDEA 中的位置 正确的-pl参数值
系统模块 (System) ruoyi-modules/ruoyi-system ruoyi-modules/ruoyi-system
认证模块 (Auth) ruoyi-auth ruoyi-auth
网关模块 (Gateway) ruoyi-gateway ruoyi-gateway
文件模块 (File) ruoyi-modules/ruoyi-file ruoyi-modules/ruoyi-file
监控模块 (Monitor) ruoyi-visual/ruoyi-monitor ruoyi-visual/ruoyi-monitor

💡 验证方法:打开项目根目录的 pom.xml,查看 标签下的嵌套结构。

2. 为什么必须加 -am

若依的业务模块(如 ruoyi-system)在 pom.xml中声明了依赖:

<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-common</artifactId>
</dependency>

如果只执行 -pl ruoyi-system而不加 -am,Maven 会去本地仓库(~/.m2/repository)找 ruoyi-common-xxx.jar。如果你刚刚修改了 ruoyi-common的代码但没单独 install,打包出来的 system模块就会包含旧的 common代码,导致运行时出现 ClassNotFoundException或逻辑错误。

-am参数的作用:强制 Maven 先检查依赖链,把 ruoyi-common也重新编译打包一遍,确保依赖是最新的。

实战示例:仅打包系统模块并跳过测试

假设你只修改了 ruoyi-system的代码,现在需要快速部署到测试服务器。

1. 打开终端,进入项目根目录。

cd /path/to/RuoYi-Cloud

2. 执行打包命令:

mvn clean package -pl ruoyi-modules/ruoyi-system -am -DskipTests

3. 查看结果:

命令执行成功后,去 ruoyi-modules/ruoyi-system/target/目录下找到 ruoyi-system.jar,这就是你需要的独立部署包。

常见问题(避坑指南)

1. 错误:Could not find artifact ...

○ 原因:你直接进入了子模块目录(如 cd ruoyi-system)执行 mvn package。
○ 解决:必须在根目录执行。子模块的 pom.xml没有父依赖信息,无法单独编译。

2. 打包后 JAR 无法启动(No main manifest attribute)

○ 原因:你可能打包了 ruoyi-common-core这类纯工具类模块。这些模块的 pom.xml中 packaging是 jar,且没有配置 spring-boot-maven-plugin,它们不是可执行的 Spring Boot Jar。
○ 解决:仅打包带有 @SpringBootApplication主类的模块(如 gateway, auth, system)。

3. IDEA 中如何操作?

○ 在 Maven 面板中,右键点击根项目 -> Maven-> Create 'Run Configuration'...。
○ 在 Command line中输入:clean package -pl ruoyi-modules/ruoyi-system -am -DskipTests
○ 保存后,下次点击运行此配置即可。

正文到此结束