打好基础
7 组 · 35 篇Maven 基础概念
5 篇Maven 简介与安装配置
Maven 是 Java 项目构建管理工具,统一管理依赖、编译、测试、打包等流程,是 Java 开发的标准工具。
约定优于配置原则
Maven 采用约定优于配置原则,定义标准目录结构,减少项目配置工作。
Maven 核心概念
Maven 五大核心概念(POM、坐标、依赖、插件、生命周期)相互关联,构成 Maven 构建体系基础。
坐标与版本管理
Maven 坐标(GAV)唯一标识构件,版本分为 SNAPSHOT 开发版和 RELEASE 正式版。
Maven 与 Ant/Gradle 对比
对比 Maven、Ant、Gradle 三种 Java 构建工具的设计理念、配置方式与适用场景。
POM 配置详解
5 篇pom.xml 基础结构
pom.xml 是 Maven 项目核心配置文件,定义项目坐标、依赖、构建配置,所有 Maven 构建都基于 POM 配置执行。
项目信息配置
pom.xml 可配置项目名称、描述、开发者、许可证等元数据,用于生成项目站点文档。
构建配置基础
Maven 构建配置包括目录设置、资源过滤、插件配置等,定制项目构建行为。
继承与聚合
Maven 继承实现配置复用,聚合实现多模块统一构建,两者常配合使用。
属性与变量替换
Maven properties 定义属性,支持在 POM 和资源文件中使用 ${property} 变量替换。
依赖管理基础
5 篇依赖声明与坐标引用
Maven 通过坐标(GAV)声明依赖,自动从仓库下载并管理第三方库,是 Maven 最核心的功能之一。
依赖范围详解
Maven 依赖范围(scope)控制依赖在不同阶段的可见性,正确选择 scope 能避免打包臃肿、版本冲突等问题。
传递性依赖机制
Maven 自动解析传递性依赖,A依赖B则自动依赖B的所有依赖,极大简化依赖管理,但也可能带来版本冲突问题。
依赖排除与排除策略
exclusions 元素排除传递依赖,避免冲突依赖进入项目 classpath。
依赖版本冲突解决
Maven 使用最短路径优先、声明顺序优先策略解决依赖版本冲突,dependency:tree 用于诊断。
生命周期与插件
5 篇三大生命周期
Maven 定义 clean、default、site 三大生命周期,每个生命周期包含多个阶段,执行阶段自动触发前置阶段。
生命周期阶段绑定
Maven 插件目标绑定到生命周期阶段,阶段触发时自动执行对应的插件目标。
常用内置插件
Maven 内置插件包括 compiler、jar、surefire、war 等,完成编译、打包、测试核心任务。
插件配置基础
Maven 插件在 build/plugins 中配置,包括版本、执行目标、参数配置。
插件命令执行
mvn plugin:goal 格式直接执行插件目标,可绕过生命周期阶段直接调用。
仓库管理
5 篇本地仓库与缓存机制
Maven 本地仓库存储下载的依赖构件,默认位于 ~/.m2/repository,缓存机制避免重复下载。
中央仓库与镜像配置
Maven 中央仓库提供公开依赖下载,镜像配置可加速国内下载速度。
远程仓库声明
pom.xml 中 repositories 元素声明远程仓库,扩展依赖下载来源。
快照仓库行为
SNAPSHOT 版本依赖具有特殊更新行为,默认每日检查更新,可配置 updatePolicy 控制。
仓库认证与安全
私服仓库需要认证,settings.xml servers 元素配置用户名密码,保护敏感凭据。
常用命令与操作
6 篇mvn compile 与 clean
mvn compile 编译项目源码,mvn clean 清理构建产物,理解增量编译与全量编译差异。
mvn package 与 install
mvn package 打包项目为 jar/war,mvn install 安装到本地仓库供其他模块引用。
mvn deploy 发布流程
mvn deploy 将构建产物发布到远程仓库,需配置 distributionManagement 和仓库认证。
mvn test 与调试
mvn test 执行单元测试,-Dtest 参数指定运行特定测试类,surefire 插件配置测试行为。
mvn archetype:generate
mvn archetype:generate 使用原型快速生成项目骨架,简化项目初始化。
常用命令行参数
Maven 命令行参数 -D、-P、-o、-U 等控制构建行为,实现灵活定制构建流程。
核心能力
9 组 · 44 篇多模块项目管理
5 篇多模块项目结构设计
将大型项目拆分为多个模块,通过父 POM 统一管理依赖版本和构建配置,提高代码复用性和维护效率。
模块间依赖关系管理
配置模块间依赖声明顺序,处理循环依赖与依赖版本对齐问题,确保多模块项目稳定构建。
反应堆构建与顺序控制
理解 Maven 反应堆构建顺序计算算法,使用 -pl 和 -am 控制构建范围,优化多模块构建效率。
父 POM 继承与依赖管理
使用 dependencyManagement 统一版本管理,避免子模块版本冲突,简化依赖声明。
多模块构建优化策略
使用 -T 参数实现并行构建,配置线程数提升大型项目构建性能,缩短构建时间。
依赖高级特性
5 篇BOM 依赖管理
使用 Bill of Materials 统一管理多依赖版本,导入 Spring Boot 等 BOM 简化版本配置。
可选依赖与依赖管理
使用 optional 标记可选依赖,控制依赖传递边界减少不必要依赖传播。
动态版本与版本范围
使用版本范围语法声明依赖版本约束,理解 LATEST/RELEASE/SNAPSHOT 语义,谨慎使用动态版本。
依赖分类器使用
使用 classifier 区分同构件不同变体,引用源码包、javadoc 或平台特定包。
系统范围依赖处理
使用 systemPath 引用本地 JAR,理解系统依赖在可重复构建中的风险,谨慎使用。
插件开发与配置
4 篇构建优化与配置
5 篇资源过滤与变量替换
配置 resources 目录启用过滤,使用 @property@ 语法替换 POM 属性值。
编译配置与 Java 版本
配置 maven-compiler-plugin 指定源码与目标字节码版本,启用注解处理器。
测试配置与分组执行
使用 surefire 插件配置测试包含排除规则,按测试分组选择性执行测试。
构建性能分析与调优
使用 -X 调试构建过程,分析插件执行耗时,优化依赖解析与编译策略。
增量编译与缓存策略
理解 Maven 增量编译机制,配置构建缓存复用减少重复编译开销。
Profile 与环境管理
5 篇Profile 基础与激活方式
Profile 定义环境特定配置,支持命令行、属性、JDK版本、操作系统、文件存在等多种激活方式。
环境差异化配置
使用 Profile 区分 dev/test/prod 环境配置,实现环境特定构建参数。
Profile 条件激活机制
根据 JDK 版本、操作系统、文件存在性等条件自动激活对应 Profile。
多 Profile 组合与优先级
理解 Profile 激活优先级顺序,处理多 Profile 同时激活时的配置覆盖。
Profile 外部化配置管理
将环境配置提取到外部配置文件,通过 Profile 动态加载不同环境配置。
测试集成
5 篇CICD集成
5 篇Jenkins 流水线集成
在 Jenkinsfile 中配置 Maven 构建阶段,实现自动化构建与部署。
GitHub Actions 配置
编写 GitHub Actions 工作流文件,配置 Maven 构建与测试执行。
GitLab CI 集成
配置 .gitlab-ci.yml 定义 Maven 构建阶段,集成代码质量检查。
构建产物发布自动化
配置 CI/CD 流水线自动发布到 Nexus/Artifactory,实现持续交付。
构建缓存与加速策略
在 CI/CD 环境中配置依赖缓存,使用本地仓库加速重复构建。
常见问题排查
5 篇依赖冲突诊断与解决
使用 dependency:tree 和 dependency:analyze 诊断冲突,理解 Maven 依赖调解规则,制定正确的解决策略。
插件版本锁定与兼容性
使用 pluginManagement 统一插件版本,解决插件版本不兼容问题。
构建失败调试方法
使用 -e 打印堆栈跟踪,-X 启用调试日志,定位构建失败根本原因。
内存溢出与堆大小调整
配置 MAVEN_OPTS 调整 JVM 堆大小,解决大型项目构建内存溢出。
网络问题与代理配置
配置 settings.xml 代理服务器,解决企业网络环境下依赖下载失败。