我学习maven的地址在 https://www.bilibili.com/video/BV1TW411g7hP?p=1 相信我,学习的过程中你一定会直呼:妙啊!!!老师是真的细啊~~~~
一、为什么学习Maven(maven有哪些极其强悍的优势)?
1、将一个庞大的项目拆分成多个互相联系的工程
比如:每个菜单都对应一个工程,所有工程联系在一起成为一个项目。
思考:maven如何将这些拆分的工程联系起来的?
2、通过对maven仓库中jar的接口的引用,代替直接将jar复制到项目中的方式,大大地节约了空间(多个项目共享)
3、maven能以规范的方式下载jar,因此下载的jar也是规范的(不用CSDN的积分啦,也不下载到木马程序啦~~~哈哈哈)
4、jar往往需要依赖其他的jar,maven会自动将依赖的jar添加进来
比如,我pom中加入Junit的依赖(Junit依赖于hamcrest-core-x.x.jar),所以maven会自动加入hamcrest-core-x.x.jar的依赖接口
二、maven是什么?
1、maven是一款服务于Java平台的自动化构建工具
Make--->Ant--->Maven--->Gradle
2、构建:(我们开发工具看到的项目结构,一般和工作空间目录结构相同,但是我们运行实际结构是需要构建的,一般是将:webapp下内容放到项目名称下,src下编译放到classes,并放于WEB-INF下)
构建就是将我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面图片等静态资源文件作为“原材料”,生产出一个可以运行的项目的过程。
Tips:运行时环境
3、构建的环节
-
- 清除:将以前编译得到的class字节码文件删除,为下一次编译做准备
- 编译:将Java源文件编译成字节码文件
- 测试:自动测试,自动调用Junit程序
- 报告:测试程序执行的结果
- 打包:动态web工程打包成war,Java工程打包成jar
- 安装:Maven特定的概念---将打包的文件复制到“仓库”指定的位置
- 部署:将动态web工程的war复制到servlet容器指定目录下(Tomcat是webapp目录),使其可以运行
三、maven的核心概念
1、约定的目录结构
2、POM
3、坐标
4、依赖
5、仓库
6、生命周期、插件、目标
7、继承
8、聚合
四、约定的目录结构
约定>配置>编码
五、常用Maven命令
1、注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在目录(eclipse中右键点击pom.xml)
2、常用命令:
mvn clean:清理
mvn compile:编译主程序
mvn test-compile:编译测试程序
mvn test:执行测试
mvn package:打包
mvn install:安装
mvn site :生成站点
六、POM
1、project object model 项目对象模型 DOM document object model 文档对象模型
2、pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件中配置,重要程度相当于web.xml对于动态Web工程
七、坐标(GAV)
1、坐标含义
groupid:公司或组织域名倒序+项目名
artifactid:模块名
version:版本
2、Maven工程的坐标与仓库中路径的对应关系
八、仓库
1、仓库的分类
本地仓库 远程仓库(私服:局域网;中央仓库镜像:各大洲分担中央仓库流量;中央仓库:Internet 最终boss)
中央仓库地址:https://repo.maven.apache.org/maven2/
下载流程
2、仓库中保存的内容
Maven自身所需要的插件
第三方框架或工具的jar包
我们自己开发的maven工程
九、依赖
1、下载依赖(本地>私服>中央仓库镜像>中央仓库)
安装依赖:自己开发的maven工程,使用mvn install 安装进入仓库
2、依赖的范围
compile(默认) :对主程序和测试程序有效,参与打包和部署(全程有效):比如spring-core
test:仅对测试程序有效,对主程序无效,不参与打包和部署(开发阶段测试有效):比如Junit
provided:对主程序和测试程序有效,不参与打包和部署(开发阶段有效):比如servlet-api.jar
3、依赖的传递性
compile范围的依赖可以传递。引入依赖也会引入该依赖所需要的依赖
4、依赖的排除
5、依赖的原则
就近原则 先声明者优先(路径长度相同时)
6、统一管理依赖版本
十、生命周期
1、maven核心程序为了是实现自动化构建,不论现在要执行生命周期的哪一个阶段,都是从生命周期的初始位置开始执行
十一、继承
1、创建一个Maven工程作为父工程。注意:打包方式pom
2、子工程中声明对父工程的引用
3、将子工程的坐标中与父工程坐标中重复的内容删除(建议)
4、再父工程中统一管理依赖
5、子工程中删除依赖的版本号部分
注意:配置继承后,执行安装命令后要先安装父工程
十二、聚合
1、作用:一键安装各个模块工程
2、配置方式: