Maven(五)如何只打包项目某个模块及其依赖模块?

目录

一、背景

在 SpringCloud 微服务框架下,会存在多个模块。当我们需要对其中某一个服务打包的时候,需要将该服务依赖的模块一起打包更新,如果项目比较小的话我们可以直接将项目中的所有模块进行 clean install 即可。

但是当项目运行一段时间后,项目中的代码量会变得很多,每个模块的打包时间也会越来越长,将所有模块进行打包的方法已经不再可取,那么 如何才能在打包的时候只将所需的模块及其依赖的模块进行打包呢?


二、解决方案

我们使用 mvn 命令搭配 -pl 和 -am 这两个参数即可解决上面的问题:

  • -pl 参数:或 --projects,指定了要构建的模块列表,Maven 将仅对这些指定的模块进行构建(多个用英文逗号分隔);
  • -am 参数:或 --also-make,表示如果目标模块依赖于其他模块,那么在构建目标模块之前,Maven 会先构建所有直接依赖于目标模块的子模块。

注意: -am 并不会递归地构建所有简介依赖的模块,之构建直接依赖于目标模块的子模块。

命令示例:

shell 复制代码
mvn clean package -am -pl com.demo:springboot-demo

三、补充

3.1 提出疑问

看完上面这种方式,可能会有这样一个疑问:Maven 打包的时候不应该是先从本地仓库拉取么?我这里使用 mvn package 而不是 mvn install,通过 -am 打包好的直接依赖会打到新的目标模块包中吗?

3.2 解答

通过 -am 打包好的直接依赖会自动打到新的目标模块包中的。

因为,当所有的直接依赖模块都成功构建完成后,Maven 会对目标模块执行打包操作(如 jar、war 等),并 将直接依赖模块的输出结果作为当前模块的依赖库进行引用和打包。

整理完毕,完结撒花~ 🌻

相关推荐
夜之眷属2 分钟前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
weixin199701080162 分钟前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存
波加曼大王4 分钟前
# vLLM不要迷信PagedAttention神话,聊聊线上藏着的内部碎片陷阱
java·架构
SL_staff9 分钟前
目标健康度自检清单:开发者视角下的目标-计划-任务链路断点诊断
java·开源·github
for_ever_love__12 分钟前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
神仙别闹14 分钟前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
ACP广源盛1392462567316 分钟前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
布吉岛的石头23 分钟前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer
niucloud-admin32 分钟前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言
alexlifexyz1 小时前
写了个 Claude Code 插件:AI 写的 Java 违反阿里规约,就写不进文件
java