Maven 项目管理
对于使用Mave进行项目构建的学习 是学习SpringBoot时的补充学习内容 主要是关于一些理论的补充 实际使用还是会继续学习使用SpringBoot
1 简介
Maven 项目管理工具 将项目开发和管理过程抽象成一个项目对象模型(POM)
作用:1.项目构建:提供标准的,跨平台的的自动化项目构建方式
2.依赖管理:方便快捷的构建项目依赖的资源(jar包)避免资源间版本冲突问题
3.统一开发结构:提供统一 标准的项目开发结构
2 基本概念
2.1 仓库
用于存储各种资源 包含各种jar包
配置:可以修改本地仓库的位置
2.2 坐标
坐标:用于描述资源在仓库中的位置 唯一定位资源的位置
查询坐标的网站:Maven Repository: Search/Browse/Explore
坐标组成:
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
3 项目构建
3.1 手工构建
使用手工创建文件夹或者使用插件进行模板生成
目录结构:
与src同层有放置xml配置文件
构建命令:
使用MVN开头 后面加功能参数 可以一次执行多行命令 使用空格分割
3.2 IDEA创建
idea 可以自动创建Maven控制项目 或者空项目自行配置
常规文件包会使用不同颜色区分
可以自己配置运行命令和调试
4 依赖管理
4.1 依赖配置
当前项目运行所需要的资源 配置格式
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<! -- 设置具体的依赖项 -->
<groupId>junit</groupId>
<!-- 依赖所属群组ID-->
<artifactId>junit</artifactId>
<!-- 依赖项目ID-->
<version>4.12</version>
<!-- 依赖版本号-->
<scope>test</scope>
</dependency>
4.2 依赖传递
当同级配置相同的资源的时 后配置的会覆盖先配置的
4.3 可选依赖
4.4 排除依赖
4.5 依赖范围
5 生命周期和插件
生命周期:
5.1 clean生命周期
5.2 defult生命周期
5.3 site生命周期
插件:
6 分模块开发与设计*
一个工程拆分为诸多个模块 各个模块合作完成项目
6.1 模块拆分
每个功能都独立成一个模块 放置相关的代码和配置文件 模块之间通过接口进行通信
dao模块拆分 (模块之间存在依赖关系)
service模块拆分
controller模块拆分
6.2 模块聚合
多模块构建维护 由一个模块控制所有模块的下载与更新
模块的最终执行顺序与模块间的依赖关系有关 与配置顺序无关
<!-- 定义该工程用于构建管理 -->
<packaging>pom</packaging>
<!-- 管理工程列表 -->
<modules>
<!-- 具体工程名称 -->
<module>../dao</module>
<module>../service</module>
<module>../controller</module>
</modules>
<!-- 进行依赖管理 -->
<distributionManagement>
<snapshotRepository>
</snapshotRepository>
</distributionManagement>
6.3 模块继承
<!-- 定义工程的父工程 -->
<parent>
<groupId> </groupId>
<artifactId> </artifactId>
<version> </version>
<relativePath/> <!-- 相对路径 -->
</parent>
6.4 版本管理
属性:
属性类别 | 介绍 | 调用格式 |
内置属性 | maven内置属性 快速配置 | ${version} |
Settings属性 | maven配置文件setting.xml中的标签属性 用于动态配置 | ${setting.localRepository} |
java系统属性 | java的系统属性 | ${user.name} |
环境变量属性 | maven配置文件setting.xml中的标签属性 用于动态配置 | ${env.JAVA.HOME} |
<!-- 定义自定义属性 -->
<properties>
<spring.version>5.19</spring.version>
</properties>
<!-- 使用 ${} 进行属性值的调用 -->
工程版本:
版本号约定:
6.5 资源配置
配置一些资源时 可以先定义自定义属性 然后在属性文件中使用 ${} 解析 达到在一个文件配置信息
例如:<jdbc.url> jdbc:mysql://127.0.0.1:db</jdbc.url>
<!-- 配置资源文件的对应信息 -->
<resources>
<resource>
<directory>${project.basedir}}/src/main/resources</directory> <!-- 项目基础路径 通配符-->
<includes>
<include>**/*.xml</include>
<filtering></filtering>
</includes>
</resource>
</resources>
6.6 多环境配置
区分配置开发和生产环境 使用不同的属性
<!-- 配置多环境 -->
<profiles>
<!-- 定义具体的环境:生产环境 -->
<profile>
<!-- 定义环境对用的唯一ID -->
<id>dev</id>
<!-- 定义环境中专用的属性值 -->
<properties>
<!-- 配置数据源 -->
<spring.datasource.url>jdbc:mysql://localhost:3306/test</spring.datasource.url>
</properties>
<activation>
<!-- 配置默认环境条件 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 定义具体的环境:开发环境 -->
<profile>
<id>prod</id>
</profile>
</profiles>
学习时间 2024.01.18 笔记部分内容和图片来自黑马程序员