Maven概述
有借鉴其他大神编写文档,如有不妥请及时告知!
1.Maven概述
①为什么要使用Maven?
让开发人员从繁琐的构建操作中解脱出来,将更多的精力投入到业务逻辑的实现上。
②什么是Maven?
一款自动构建工具。
Make→Ant→Maven→Gradle(groovy)→...
③什么是构建?
指应用程序从清理、编译、测试、报告、打包、部署等全过程。
④Maven三个主要功能
[1]自动化构建
[2]依赖管理
(1)依赖:进行Spring的开发,就需要依赖Spring相关的JAR包。
(2)依赖的复杂性
[3]生成项目信息:根据当前项目的信息,生成一个静态网页的站点。
2.Maven核心概念
①项目对象模型:POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承和聚合
3.Maven的安装
①检查当前系统的运行环境:确认当前系统中是否提供了JAVA_HOME的环境变量
②将Maven安装包解压到非中文无空格目录
③配置path环境变量
④建议配置MAVEN_HOME环境变量
⑤检测:在命令行输入mvn -v
4.Maven联网
①Maven的核心程序并不包含任何具体的功能,只起一个统筹调度的作用,具体的工作需要由Maven的很多具体的插件来完成。
②Maven会首先到本地仓库中查找插件对应的JAR包
③默认的本地仓库的目录:~\.m2\repository
④修改默认的本地仓库目录
[1]找到Maven解压目录下/conf/settings.xml
[2]设置
<localRepository>D:\DevRep\MavenRepository</localRepository> |
5.项目对象模型
①POM:Project Object Model
②将Maven工程封装为对象,抽取其中的共性定义为一个模型
③POM的信息主要是体现在Maven工程的pom.xml文件中
6.坐标
①在数学中,使用X和Y两个坐标可以在平面上唯一的定位一个点。
②在Maven中,使用每个工程自己的坐标就可以唯一的定位到一个Maven工程
③Maven坐标的三个向量
公司组织ID:<groupId>cn.com.xxx.maven</groupId>
模块ID:<artifactId>Hello</artifactId>
版本号:<version>1.0</version>
7.依赖管理
①依赖方式
[1]在Maven工程中是通过dependency元素中定义的目标工程的坐标来指定依赖
[2]当指定了当前工程依赖的其他工程之后,Maven会首先到本地仓库中查找目标工程
[3]查找某个Maven工程的规则:公司ID构成的目录结构+模块名目录+版本号目录
[4]一个Maven工程必须执行“安装”操作后才能够进入本地仓库
②解决依赖冲突的问题
[1]路径最短者优先
[2]路径相同时先声明者优先
③依赖的范围
[1]compile:默认范围,对当前工程中的所有类都有效
[2]test:只对测试代码有效
[3]provided:对当前工程中的所有类都有效,但不会被打包到最终的包里面,原因是项目运行时所作的环境会提供相关的JAR包。
[4]runtime:对当前工程中的所有类都有效,但具体使用的JAR包会在运行时决定,例如JDBC驱动。
8.仓库管理
①仓库分类
[1]本地仓库:就在当前电脑本地,可以为本机上的所有Maven工程提供依赖服务和插件管理。
[2]远程仓库
●私服:当前局域网环境内的Maven服务器,可以为当前局域网内的所有Maven工程服务。
○当某个Maven工程需要一个第三方JAR包时,可以首先到本地仓库查找,如果没有就到私服上找,如果私服上还没有,则私服负责从远程中央仓库下载,并保存到私服上,如果以后再有其他Maven工程需要这个JAR包,则可以从私服上获取,不必连远程中央仓库了。
○当局域网内的某个开发人员将自己的Maven提交到私服上,则同一个局域网的其他开发人员就都可以引用这个Maven工程了。
●中央仓库:为全世界所有Java开发人员提供Maven构建的下载服务。
●镜像仓库:中央仓库的镜像,分担中央仓库的访问压力。
②仓库的内容
[1]开发人员自己的Maven工程安装以后就会进入仓库
[2]Maven自身的插件
[3]第三方JAR包
9.生命周期
①Maven将各个构建过程定义为一组生命周期阶段
②Maven在执行任何一个Maven命令时,不是单独的执行命令本身,而是从当前生命周期开始执行已经定义好的每一个过程,直到完成Maven命令。
③三个主要的生命周期
[1]清理生命周期
[2]默认生命周期
[3]站点生命周期
10.插件和目标
①Maven中所有的具体功能都是由Maven插件完成的。
②每一个Maven插件都包含一个或多个目标,每一个目标都和生命周期中的某一个阶段对应。