maven
介绍
Maven是一个项目管理工具,它的作用就是管理项目,主要体现在两个方面:
依赖管理和一键构建。
- 依赖管理:对jar包的管理方式,maven会将所有需要的jar包放在本地仓库,每个项目通过配置文件文件引入自己所需要的
- 一键构建:一个命令就可以完成一个项目构建过程
依赖管理

jar包在maven本地仓库中是按照什么结构存放的?

我们的项目应该怎么获取对应的jar包

本地仓库没有jar包从哪里下载

一键构建
项目构建:一个项目从源代码完成的那一刻起后面的流程(清理 编译 测试 打包 安装 部署)就称为项目的构建过程
一键构建:上面的所有过程都对应着一个命令
安装
下载软件
3.3.9 版本的下载地址: http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/

安装
将压缩包解压到一个==没有中文,没有空格==的目录

目录结构介绍

配置maven
① 配置本地仓库的目录位置

② 配置阿里云镜像
默认情况下,当本地没有需要的依赖的时候,maven会从apache的中央仓库下载,速度非常慢,在这里配置成阿里云的仓库地址
| |

复制资料中的本地仓库

配置环境变量
==注意:添加的位置一定是按照自己软件的安装位置写,不要照抄我的, 而且要到bin一级目录==

测试
启动cmd, 在电脑的任意位置使用
mvn -version进行测试

标准结构
| |
常见命令
maven的项目构建过程是基于命令的,下面来看一些常见的命令
clean
清理命令,执行clean会删除target目录, 即清理掉上一次项目构建产生的文件

compile
编译命令,作用是将src/main/java下的文件(正式的java文件)编译为class文件输出到target目录下

test
测试命令,作用是执行 src/test/java 下的测试类,并编译为class文件输出到target目录下

package
打包命令,打的是所有的正式代码(src/main) 对于java工程执行package打成jar包,对于web工程打成war包

install
安装命令,将打好jar包或者war包安装到本地maven仓库

deploy
部署命令,将打好的jar包或war包部署到私服中
总结:
- clean:删除target目录
- compile:将正式的java代码进行编译(不包括test),生成class文件放到target目录中
- test:将test代码进行编译(不包括java),生成class文件放到target目录中
- package:将正式的java代码打包成jar包或war包
- install:将打好jar包或者war包安装到本地maven仓库
- deploy:将打好jar包或者war包安装到私服中
搭建maven工程( 重点 )
本章节介绍如何在idea中配置使用maven软件
配置环境
maven全局配置
在主界面配置之后,其他项目再也不用配置了

创建工程
创建maven工程

编写项目标识


编写项目名字


工程使用
编写主类

导入依赖

编写测试类

依赖范围
| |

maven回顾
| |
分模块开发
拆分与聚合的思想
拆分 将原来的一个项目拆分成一个个小的模块, 每个模块都有自己的坐标, 当其它项目需要本模块的功能时, 只需要按照坐标引入本模块就可以了
聚合 通过坐标的形式,将各个模块组装在一起,完成一个项目的功能

父子工程搭建
创建父工程

创建dao模块

创建service模块

创建web模块

建立依赖关系

两套关系梳理
在上面的工程中, 存在两套关系
- 父子工程之间: 继承关系, 子工程可以使用父工程中的jar包
- 模块工程之间: 默认是没有任何关系的,但是可以通过依赖建立两者之间的关系,而且这个依赖关系是可以传递的
| |
依赖冲突
在依赖的传递过程中,很容易出现同一jar包的版本冲突问题,这个就称为依赖冲突

第一声明优先原则
在pom文件定义依赖,先声明的依赖为准。

路径近者优先原则
从依赖程序开始算起,到被依赖的程序,以路径短的为准。

依赖排除
依赖排除就是在依赖引入的过程中,通过exclusions标签排掉指定的跟随依赖

版本锁定
面对众多的依赖,有一种方法不用考虑依赖路径、声明优先等因素,可以采用直接锁定版本的方法确定依赖构件的版本
版本锁定后,系统会以锁定的版本的为准添加到工程中,此方法在企业开发中常用。
优化:提取版本信息
