Maven基础精讲:第一篇(从概念到生命周期)

Maven基础精讲:第一篇(从概念到生命周期)

1、什么是 Maven?

Maven 主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。
Maven 项目对象模型(POM)可以通过一小段描述信息来管理项目的构建、报告和文档。
它包含了:

  • 项目对象模型(POM)
  • 一组标准集合
  • 项目生命周期
  • 依赖管理系统
  • 插件执行机制

当使用 Maven 时,你用一个明确定义的 POM 描述项目,Maven 可以应用共享插件提供的逻辑来完成编译、打包、发布等工作。


2、Maven 能为我们解决什么问题?

  1. 统一管理第三方 Jar 包
    以前我们要手动复制 jar 到 WEB-INF/lib,每个项目一份,浪费空间。
    Maven 用本地仓库集中管理,只要用坐标引用即可。

  2. 解决 Jar 包依赖关系
    Jar 之间往往存在依赖,手动导入麻烦且易出错。
    Maven 自动下载主依赖和其传递依赖。

  3. 自动获取第三方 Jar
    不用手动去官网找,Maven 会从中央仓库下载,并处理依赖。

  4. 支持多模块项目
    便于拆分大型项目,协同开发。


3、Maven 的优缺点

优点:

  • 简化项目依赖管理
  • 易于上手,常用命令简单
  • 便于与 CI 工具(如 Jenkins)集成
  • 便于项目升级和依赖升级
  • 插件丰富,可扩展性强(自动发布版本、生成站点等)

缺点:

  • 体系大,深入学习有一定门槛
  • 出错时调试较复杂
  • 网络环境差时,仓库下载速度慢、可能超时

4、Maven 的坐标

Maven 通过坐标唯一标识一个构件,包括:

  • groupId:组织或公司名
  • artifactId:项目名
  • version:版本号

这样其他项目就能用坐标依赖你的构件。


5、Maven 的生命周期

Maven 生命周期定义了从清理到部署整个构建过程。主要包括:

  • clean:清理编译生成的文件
  • validate:验证项目是否正确
  • compile:编译源码
  • test:执行测试
  • package:打包(jar/war)
  • verify:运行集成测试
  • install:安装到本地仓库
  • deploy:部署到远程仓库

6、常用 Maven 命令

  • mvn clean 清理 target
  • mvn compile 编译源码
  • mvn test 执行测试
  • mvn package 打包
  • mvn install 安装到本地仓库
  • mvn deploy 部署到远程仓库
  • mvn dependency:tree 分析依赖树,排查冲突

7、解决依赖传递的版本冲突

  • 最短路径优先:依赖路径短的版本优先
  • 申明顺序优先:同路径长度,先声明的优先
  • 覆写原则:当前 POM 直接声明的依赖优先

8、依赖解析机制

  1. system 范围:直接从本地文件系统加载
  2. 根据坐标从本地仓库查找,如果存在则使用
  3. 如果不存在,从远程仓库下载到本地后使用
  4. 对于 RELEASELATEST,合并本地和远程元数据,解析最新版本
  5. 对于 SNAPSHOT,根据更新策略获取最新快照

9、插件解析机制

插件也有自己的坐标,Maven 会先查本地仓库,没有再去插件远程仓库下载。
注意:插件和普通依赖的远程仓库是分开的,需要专门配置。


10、Maven 仓库分类(补充)

  • 本地仓库:保存在本机 ~/.m2/repository
  • 私服仓库:公司内网 Nexus/Artifactory,缓存依赖、发布内部包
  • 中央仓库:Maven 官方仓库,默认下载来源

11、Maven 依赖范围(scope)(补充)

Scope编译测试运行说明
compile默认范围
provided运行时由容器提供
runtime只运行时需要
test仅测试
system路径写死,不推荐
import---导入依赖管理用

12、常用插件(补充)

  • maven-compiler-plugin:控制 Java 版本
  • maven-surefire-plugin:执行单元测试
  • maven-jar-plugin:打 jar 包
  • maven-war-plugin:打 war 包
  • maven-dependency-plugin:分析依赖、复制依赖
  • maven-site-plugin:生成站点文档

13、多模块项目结构(补充)

父工程:

<packaging>pom</packaging>
<modules>
  <module>module-a</module>
  <module>module-b</module>
</modules>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值