maven部分构建参数讲解

以下为例: -Dmaven.test.skip=true clean package -P ENV -pl PROJ -am -U

1. -Dmaven.test.skip=true

  • 作用 :跳过单元测试的编译 和执行。

  • 细节 :不仅不运行测试,连测试代码(src/test/java)都不会编译。

  • 对比:

    • -DskipTests=true:只跳过测试运行,但会编译测试代码。

    • -Dmaven.test.skip=true:更彻底,跳过全部测试相关工作。


2. clean

  • 作用 :执行 Maven 的 clean 生命周期。

  • 细节 :删除项目目录下的 target/ 文件夹,清理之前构建生成的所有文件(如 .class、JAR/WAR 包等),确保构建从干净状态开始,避免残留文件带来的问题。


3. package

  • 作用 :执行 Maven 的 package 生命周期。

  • 细节 :将编译后的代码打包成 JAR、WAR 等可分发格式,输出到 target/ 目录。

  • 注意 :clean package 组合起来就是"先清理,再打包"。


4. -P $ENV

  • 作用:激活指定的 Maven Profile(配置文件)。

  • 细节 :$ENV 是一个环境变量 ,通常在 CI/CD 中动态传入(如 dev、test、prod)。

  • 用途 :根据不同的环境加载不同的配置(如数据库连接、日志级别、打包资源等),在 pom.xml 中通过 <profiles> 标签定义。


5. -pl $PROJ

  • 作用 :指定要构建的子模块 (--project-list 的简写)。

  • 细节 :$PROJ 是模块的 artifactId(或者用 groupId:artifactId 格式),多个模块用逗号分隔。

  • 示例 :-pl module-a,module-b 表示只构建这两个子模块。


6. -am

  • 作用 :同时构建依赖的项目 (--also-make 的简写)。

  • 细节 :如果 $PROJ 依赖了其他模块,Maven 会先将这些被依赖的模块也构建出来,然后再构建目标模块。

  • 场景:在多模块项目中非常常用,避免因依赖缺失而导致构建失败。


7. -U

  • 作用 :强制更新快照(SNAPSHOT)依赖 (--update-snapshots 的简写)。

  • 细节:让 Maven 强制检查远程仓库中 SNAPSHOT 版本是否有更新,并重新下载,而不是使用本地缓存的旧版本。

  • 适用:开发阶段,依赖的 SNAPSHOT 版本频繁变动时使用。


完整命令执行流程

text

复制代码
1. 清理所有目标模块的 target/ 目录(clean)
2. 根据 $ENV 激活对应环境的 Profile(-P)
3. 确定要构建的模块及依赖链(-pl + -am)
4. 强制更新 SNAPSHOT 依赖(-U)
5. 跳过测试编译与执行(-Dmaven.test.skip=true)
6. 执行打包操作(package)
相关推荐
Dovis(誓平步青云)4 分钟前
总用电下降了,为什么家庭能源看板仍然提示异常
java·开发语言·数据库·人工智能·算法·电脑·能源
程序猿乐锅4 分钟前
【从0-1学习Python | 第四篇】Python 字符串和元组
java·开发语言·笔记·后端·python·学习
开开心心就好8 分钟前
Windows视频播放器推荐,精简版体积更小
java·服务器·开发语言·eclipse·pdf·ocr·音视频
Rain的Java大神之路30 分钟前
10 万人抢 2000 个座位,电影票选座系统怎么防超卖?一文讲透大厂高频场景题
java·后端·面试
砚底藏山河36 分钟前
量化新手误区:因子计算与行情数据的工程化解耦
java·数据库·python·金融
威哥爱编程38 分钟前
【AI全栈12-07】Spring Boot 用 Agent 自动完成多步运营任务
java·spring boot·后端
未秃头的程序猿42 分钟前
我用 Spring AI + MCP 把公司内部系统接给了 AI,过程没想象中顺利
java·后端
m0_587383001 小时前
碰碰好评卡功能落地实战 从需求梳理到上线部署全流程实操指南
java·linux·服务器·前端·javascript·vue.js·人工智能
诚心呈意共享外卖配送系统1 小时前
多平台订单聚合系统的技术架构:接 API 只是开始
java·开发语言·架构·系统架构·创业创新
Java爱好狂.1 小时前
Java小白如何三天速通redis?
java·数据库·redis·架构师·分布式锁·java面试·java程序员