给予一个对于Maven的大概的认识
- 第一章 Maven概述
- 1.1 介绍
- 1.2 maven优势举例
- 1.3 项目一键构建
- 1.4 仓库的种类和彼此关系
- 1.5 Maven标准目录结构
- 第二章 Maven常用命令
- 2.1 clean
- 2.2 compile
- 2.3 test
- 2.4 package
- 2.5 install
- 2.6 deploy
- 第三章 Maven核心
- 3.1 Maven生命周期
- 3.2 Maven概念模型图
第一章 Maven概述
1.1 介绍
定义: maven是一个项目管理工具,它包含了一个项目对象模型,一组标准集合,一个项目的生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段(phase)中插件(plugin)目标的逻辑
能解决什么问题?
- 我们在开发的时候,需要引入各种jar包,但是就是十分的麻烦,经常会遇到jar包冲突和版本冲突等情况,但是,maven可以帮助我们解决这个问题
- 能及时编译
.java
文件 - 提供单元测试
- 后端写完之后也要打包,但是要手动打包我们的代码.maven可以用一个命名完成这些事情
1.2 maven优势举例
- jar包放在了项目之外的地方管理,不用放在工程目录中,放在了他独有的jar包仓库中,项目通过jar包的坐标引用jar包仓库中的文件,因此,打包之后的文件的大小十分的小
- 同时,这个jar包的架构还可以复用,而不用复制粘贴进别的项目目录,因此很节省磁盘空间
1.3 项目一键构建
我们的项目,往往都要经历编译,测试,运行,打包,安装,部署等一系列过程.
maven可以替我们完成这些事情,这就是构建
Maven规范化构建流程如下:
什么叫做一件构建? 意思就是你通过一个命令就可以把上面的所有事情都做完
1.4 仓库的种类和彼此关系
仓库分三类: 本地仓库, 远程仓库【私服】,中央仓库。
- 本地仓库: 保存项目jar包的地方,在conf的
setting.xml
文件里面我们可以看到,本地仓库的默认位置是${user.home}/.m2/repository
,在我的电脑上面路径就是C:\Users\CUMT_CJY\.m2\repository
- 当然,我们可以修改,在那个配置文件的下面添加上
<localRepository>路径</localRepository>
,就行了
- 远程仓库: 可以理解为企业的自己的jar包仓库,程序员可以从这个仓库里面拉取需要的jar包进自己的仓库
- 中央仓库: 就是一个官方提供的仓库,这里面存放了几乎所有的开源的jar包,联网下我们就能够从这里下载这些东西
当启动一个MAVEN项目的时候,三者的关系:
- 首先系统会寻找本地仓库中是否有运行该项目需要的jar包
- 如果本地没有,那么就去远程仓库查找并下载
- 如果远程仓库没有,远程仓库就会去中央仓库寻找并下载是否有这个jar包
注意:
- 如果没有远程仓库,那么本地仓库就会直接去中央仓库下载需要的jar包
- 本地仓库也可以上传jar包到远程仓库
关系如下图
1.5 Maven标准目录结构
首先,一个完整的项目要有几个部分?
- 核心代码部分
- 配置文件部分
- 测试代码部分
- 测试配置文件
我们来看看,传统项目的项目目录结构
- 项目名
- src
- config(resources)
没了,显然这是不合理的,尽管会有配置文件专门放置的目录,但是这个目录的名称是没有规范的,容易不被人理解,所以我们需要一个项目结构的标准
我们再来看看,maven项目标准目录结构
- 项目名
- src
- main
- java : 核心代码部分
- resources: 配置文件部分
- webapp(是web项目才有): 页面资源,js,css,图片等
- test
- java: 测试配置文件
- resources: 测试的配置文件
第二章 Maven常用命令
2.1 clean
作用 : **删除项目编译信息,**就是删除target
文件夹
为什么需要它?
- 我们在接手项目的时候,我们得到的别人的target的文件我们不一定能运行(因为每个人的电脑的配置环境有差别),所以我们要删掉他的,我们自己重新编译
2.2 compile
作用: 编译main/java
里面的代码,同时将其保存在target/classes
文件夹下面
2.3 test
作用: 将测试下的java文件编译成为class文件,放在target/test-classes
文件夹中,并在控制台返回测试结果
注意: 同时也会编译main/java下的代码,相当于执行了compile
2.4 package
作用: 打包项目,在target
目录下生成.war
的项目文件
注意: 他还会做compile和test
注意
- 之所以打包成为
.war
文件,是因为在pom.xml
配置文件中,packaging标签
里面默认就是打包成为war
2.5 install
作用: 将项目的war包保存在了本地仓库
注意: 同时做了,编译,测试,打包项目这些事情
注意
- 保存的路径和你
main/java
后面的目录名有关
2.6 deploy
作用: 部署项目
前提: 我们需要首先进行一些配置
第三章 Maven核心
3.1 Maven生命周期
我们不难发现,其实这些命令就是一些生命周期
同时,在默认生命周期里面,当后面的某个命令执行的时候,他的前面的所有命令都要执行
例如: 我执行install, 那么compile,test,package
都要执行过才行
3.2 Maven概念模型图