【后端开发】07-Maven管理工具

Maven管理工具

1. 简介

Maven是一款Java项目管理工具,可以实现自动化构建、测试、打包和发布项目

主要功能

  • 依赖管理:自动下载依赖库且保证版本没有冲突、依赖版本管理等
  • 构建管理:将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库

1.1. 目录结构

project
  ├── pom.xml					--项目管理文件
  ├── src
  │   ├── main					--项目主要代码
  │   │   ├── java				--存放Java源码
  │   │   ├── resources			--存放配置文件
  │   │   └── webapp			--存放WEB资源
  │   │       └── WEB-INF
  │   │           └── web.xml
  │   └── test					--项目测试代码
  │       └── java
  └── target					--项目构建目录
      └── classes

1.2. GAVP属性

GAVP是指GroupIdArtifactIdVersion、Packaging的缩写,用于唯一标识一个项目

  • GroupID格式(必须):com.{公司/BU }.业务线.[子业务线],最多 4 级
  • ArtifactID格式(必须):产品线名-模块名,语义不重复不遗漏
  • Version格式(必须):主版本号.次版本号.修订号
    • 主版本号:不兼容的API修改或新增改变产品方向的功能
    • 次版本号:向下兼容的功能性新增
    • 修订号:修复BUG、没有修改方法签名的功能加强,保持API兼容性
  • Packaging规则:指示将项目打包文件的类型
    • jar(默认值):普通Java工程,打包成.jar文件
    • war:Web工程,打包成.war文件
    • pom:用于被继承的父工程

2. 功能介绍

2.1. 依赖管理

2.1.1. 基本配置
<dependencies>
    <dependency>
        <groupId>groupId</groupId>
        <artifactId>artifactId</artifactId>
        <version>version</version>
    </dependency>
    ...
</dependencies>

格式说明

  • dependencies标签用于配置项目的所有依赖,是根标签project的子标签
  • dependency标签用于配置具体的依赖,其子标签指定依赖的GAV属性(从官方仓库查找)
  • 在properties标签的自定义子标签(推荐名package.version)中配置版本号并通过${} + 标签名引用

作用范围

scope标签用于指定依赖的生效范围,具体说明如下

范围maintest打包运行
compile(默认)
provided
test
runtime
2.1.2. 依赖传递/冲突

依赖传递

  • 当模块 A 依赖于模块 B且模块 B 又依赖于模块C时,那么模块A 间接依赖于模块 C

解决方案

构建工具能够自动解析并加载所有直接或间接依赖,并保证版本正确

依赖冲突

  • 依赖冲突是指直接或间接依赖出现相同模块时,依赖之间可能存在依赖冲突

解决方案

构建工具能够自动选择重复的依赖并终止依赖传递来解决冲突问题,选择原则为

  • 短路径优先原则(第一原则),即选择路径短的依赖
  • 先声明优先原则(第二原则),即选择先声明的依赖

2.2. 构建管理

2.2.1. 构建命令

命令语法

mvn command

说明

  • mvn后可使用多个命令,命令之间用 space隔开
  • 执行命令时需要进入到项目路径即pom.xml文件所在的路径

常用命令

命令说明
clean清理编译或打包后的项目结构,删除target
compile编译项目,生成target
test执行测试源码 (测试)
site生成一个项目依赖信息的展示页面
package打包项目,生成war/jar文件
install打包后上传到maven本地仓库(本地部署)
deploy打包后上传到maven私服仓库(私服部署)
2.2.2. 生命周期

image-20240315163957964

构建生命周期是一组固定构建命令的有序集合,触发周期中的某个命令会自动触发其前面的命令

  • 清理周期:对项目编译生成文件进行清理,包含的命令依次为clean
  • 默认周期:构建的所有步骤,包含的命令依次为compile、test、package、install/deploy
  • 报告周期:包含的命令依次为site

推荐方案

  • 打包:mvn clean package
  • 重新编译:mvn clean compile
  • 本地部署:mvn clean install

3. 继承/聚合

3.1. 继承

继承是指Maven工程中一个项目从另一个项目中继承配置信息的机制,用于在父工程中统一管理依赖

3.1.1. 语法结构

父工程

  • 配置打包方式packaging为pom

子工程

  • 在根标签中添加parent标签
  • 在parent标签中通过GAV属性指定父工程
3.1.2. 依赖管理

父工程

  • 声明依赖:在根标签project的子标签中dependencyManagement统一配置依赖

子工程

  • 导入依赖:设置GA属性使用父工程中声明的依赖
  • 若需要指定GAV属性,则导入子工程配置的依赖

3.2. 聚合

聚合是指将多个工程组织到一个父工程中,通过触发父工程的构建来按顺序触发子工程的构建,用于统一管理子工程的构建

3.2.1. 聚合语法
  • 在父工程的根标签中添加modules标签
  • 在modules标签中通过module配置子工程

参考资料

  1. 尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发
  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值