JavaEE-Maven
maven
Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包。
maven简单, ⽅便, 提⾼我们的开发效率, 减少我们的开发Bug。
IDEA本⾝已经集成了Maven, 我们可以直接使⽤, ⽆需安装。
创建maven项目
name是项目名
location是项目路径
在build system选择maven create创建就行。
依赖的添加和管理都在pom文件里
项目构建
当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别⿇烦,, ⽽Maven 给我们提供了⼀套简单的命令来完成项⽬的构建.
在右边m点开就是maven的一些操作。
lifecycle是maven的生命周期,一些命令功能
package是打包
plugins是插件

打包就是把所有的class⽂件, 全部放在⼀起, 打成jar包或者war包
jar包和war包都是⼀种压缩⽂件
jar包就是把开发⼈员已经写好的⼀些代码进⾏打包. 打好的jar包就可以引⼊到其他项⽬中, 也可以直接使⽤这些jar包中的类和属性. 另外也可以打成可执⾏jar包, 这样的包就可以通过java -jar命令来执⾏
war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西, 通常⽤于⽹站.
依赖管理
Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包
获取的jar包, 其实就是依赖.
pom.xml 就是maven 的配置⽂件,⽤以描述项⽬的各种信息
依赖: 指当前项⽬运⾏所需要的jar包.
如果不适用maven,那么就需要手动将jar包引入到项目中,有了maven,只需要添加对应的依赖就可以将jar包自动引入。
每次修改pom文件都需要通过maven刷新


添加依赖后自动引入了对应的jar包,这个jar包是从本地仓库取出来的,如果本地仓库没有,那么就会先从远端仓库下载到本地仓库,在从本地仓库取出来。

依赖传递
⽐如 A 依赖B, B依赖C, 那么 A项⽬引⼊B 的同时, 也需要引⼊C, 如果我们⼿动管理这个依赖, 这个过程就会⽐较⿇烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的
但使⽤maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom⽂件中, 定义直接依赖就可以了, 由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊

如上图, 项⽬A 通过Maven 引⼊ Jar A 时, 会⾃动引⼊ Jar B 和Jar C.
Jar A 和项⽬B就是项⽬A的直接依赖.
Jar B, Jar C是间接依赖.
直接依赖:在当前项⽬中通过依赖配置建⽴的依赖关系间接依赖:被依赖的资源如果依赖其他资源,当前项⽬间接依赖其他资源
依赖排除
当前阶段我们需要依赖的库并不多, 但随着项⽬的越来越复杂, 库之间的依赖关系也会变得越来越复杂.
如上图中, 如果项⽬A不需要Jar B,也可以通过排除依赖的⽅式来实现.
排除依赖:
指主动断开依赖的资源。(被排除的资源⽆需指定版本)

可以看到mysql另外依赖着一个protobuf。
右键点击protobuf使用exclude就可以排除这个依赖。
这就是排除依赖的格式,本来是要自己写这个排除依赖的,这里是下载了一个叫maven help的插件,所以能够通过上面的界面点击exclude来自动生成排除依赖的语句。

插件下载
打开setting进入plugins,marketpiace查找下载插件,installed是已下载插件。
本地仓库
本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包)
当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包,如果有,则在项⽬直接引⽤
如果没有,则去中央仓库中下载对应的jar包到本地仓库

打开setting当中的maven,Local repository是本地仓库的路径
默认选这个,不行再选另一个
本地仓库存储路径修改
打上勾
复制路径,进入到本地仓库
找到.m2文件,复制。
之后在想要作为新本地仓库路径的地址新建一个目录,将.m2复制进去。
修改本地仓库路径
apply设置就可以了。
中央仓库
中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队
这个仓库就是管理着jar包的仓库
维护,全球唯⼀.
仓库地址:中央仓库

可以通过https://mvnrepository.com 这个⽹站来查询依赖并通过maven下载jar包
我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求), 也可以从中央仓库下载Jar包
查找jar包的坐标
首先访问 https://mvnrepository.com/
进⾏查找, ⽐如mysql
选择要添加的jar包
查看jar包的坐标,将坐标复制到pom.xml里面添加依赖就会自动下载
grouid是组织id,通常标识哪个组织,哪个公司开发的
第二个artifactID是项目id,到底是怎样的一个jar包
第三个version是版本。
修改镜像源
默认jar包的下载是去中央仓库下载的,但是下载速度可能会慢一些,所以可以设置国内的镜像源,加快下载的速度。
打上勾,去网上下载镜像源,我这里用的是阿里的,将镜像源下载到本地仓库的.m2文件里
apply就好了。
基本上所有的配置都要修改两次,一个是当前配置,一个是之后所有的项目配置。
一样的再修改一次。
私有服务器
私服: ⼀般由公司团队搭建的私有仓库,不对外开放,只对公司内部进行开放使用。
私服属于某个公司,或者某个部⻔, 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序⼜发⽣了变化

当Maven需要下载资源的时候1. 先从本地仓库获取, 本地仓库存在, 则直接返回
如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了...
如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务