Maven定义
Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven的经典作用
1.依赖管理
maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需jar包的坐标,这样就很好地避免了jar直接引入进来,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml文件中的坐标,到一个专门用于”存放jar包的仓库”(maven仓库)中根据坐标从而找到这些jar包,再把这些jar包拿去运行。
2.一键构建
我们的项目,往往都要经历编译、测试、运行、打包、安装 、部署等一系列过程。
项目从编译、测试、运行、打包、安装 ,部署整个过程都交给maven进行管理,这个过程称为构建。
一键构建,指的是整个构建过程,使用maven一个命令可以轻松完成整个工作。
一 、Maven的安装
1. 官网下载maven安装包后解压到没有空格及中文的目录中
-
解压后的目录
2. 配置maven环境变量
- 添加系统变量MAVEN_HOME
- 在PATH变量中新建
MAVEN依赖java环境,必须要有JAVA_HOME
3.检测Maven是否安装好
cmd窗口下输入: mvn -v
出现图示则已安装好
二、Maven仓库分类及设置
Maven仓库分三类:本地仓库、远程仓库(公司使用的私服)、中央仓库
-
本地仓库:你要的依赖jar包,不可能每次都要从互联网去下载,特别是有的公司或项目根本就没有外网的情况,多费劲,所以本地仓库就是相当于加了一层jar包缓存,先到这里来查。如果这里查不到,那么就去私服上找,如果私服也找不到,那么去中央仓库去找,找到jar后,会把jar的信息同步到私服和本地仓库中。
-
私服: 就是公司内局域网的一台服务器而已,当你的工程Project-A依赖别人的Project-B的接口,怎么做呢?没有Maven的时候,当然是copy Project-B jar到你的本地lib中引入,那么Maven的方式,很显然需要其他人把Project-B deploy到私服仓库中供你使用。因此私服中存储了本公司的内部专用的jar,不仅如此,私服还充当了中央仓库的镜像,说白了就是一个仓库代理!
-
中央仓库:该仓库位于互联网上,由Maven团队来维护,地址是http://repo1.maven.org/maven2/。此外,阿里也对外提供了中央仓库,地址是http://maven.aliyun.com/nexus/content/groups/public,下载速度比Maven的还快,推荐使用。
- 本地仓库的默认位置在系统盘中
Default: ${user.home}/.m2/repository
- 自定义本地仓库,修改Maven配置文件,指定本地仓库的目录,例如我在E盘下创建了本地仓库maven_repository,并且放入了常用的jar包(项目就可以直接运行,而不用从中央仓库下载jar包),
在配置文件中加入代码
三、Maven标准目录结构
1.一个完成的项目打包时要包含的内容
- 核心代码部分
- 配置文件部分
- 测试代码部分
- 测试配置文件部分
传统的项目目录为src,使得上面4个部分合在一起,结构混乱
2.maven项目标准结构目录
3.maven常用命令
- mvn clean
删除target目录,接手别人的工程时会存在已经编译好的文件,这些文件因为配置环境的问题与本地不兼容,因此需要clean - mvn compile
将src/main/java目录下的核心代码部分编译在新的target目录下 - mvn test
- 编译src/mian/java下代码
- 编译src/test/java下代码
- mvn package
- 编译src/main/java下代码
- 编译src/test/java下代码
- 打包工程,在target目录下生成.war文件
- mvn install
package的功能以及将打包好的war文件安装到本地仓库中
四、Maven的生命周期
maven有三个生命周期:清理生命周期、默认生命周期、站点生命周期(开发中很少用到)
五、Maven的概念模型
maven的概念模型包括:项目对象模型(POM)、依赖管理模型(Dependency)
pom.xml中包含3部分的信息:
- 项目自身信息
- 项目运行所依赖的jar包信息(独立出来为依赖管理模型)
- 项目运行环境信息,比如:jdk、tomcat信息