文章目录
概叙
- Maven是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。是 Apache 下的一个纯 Java 开发的开源项目,可以对 Java 项目进行构建、依赖管理,提供标准的、统一的项目结构。
安装与环境变量配置
- 访问https://maven.apache.org/download.cgi官网
- 选择Windows或Linux版本安装
- 右键计算机–>属性–>高级系统设置–>环境变量–>新建系统变量
- 变量名为MAVEN_HOME
- 变量值为Maven的安装地址
-
编辑系统变量Path,添加变量值[%MAVEN_HOME%\bin]
-
检验:Win+R,输入cmd,在窗口输入mvn,若出现如图指令出现,即已成功配置
基础概念
仓库
-
储存资源,包含各种jar包
-
本地仓库:本机上存储资源的仓库
-
远程仓库:非本机的仓库,为本机仓库提供资源
- 中央仓库:存储所有资源
- 私服:从中央库获取资源
坐标
-
用于描述仓库中资源的位置
-
组成:1、groupld:定义当前Maven项目隶属组织名称
2、artifactld:定义当前Maven项目名称
3、version:定义项目版本号
-
查询:
Maven项目
基本结构
利用idea模板创建maven项目
- File–>New–>Module–>Gengrators选择Maven–>Archetype选择org.apache.maven.archetypes:maven-archetype-quickstart–>完成创建
- 右键文件夹利用Mark Directory as完成类型标记
利用idea模板创建web项目
-
流程同上,只是Archetype选择org.apache.cocoon:cocoon-22-archetype-webapp
-
Tomcat的配置
-
在https://mvnrepository.com搜索Tomcat maven
-
找到[org.apache.tomcat.maven]点击
-
3. 选择版本后将栏框中的代码复制
4.在pom.xml文件中写构建代码,并将刚才复制的代码粘贴至插件配置中间
5.随后就能在plugins中看到tomcat了(刚开始爆红是插件还没下载好,稍等几 秒,在右侧Maven刷新即可
依赖管理
-
指当前项目运行的jar包,一个项目可以设置多个依赖
-
在< dependencies >中插入< dependency >,并在< groupId >,< artifactId >,< version >中插入相应的代码
-
依赖传递:若project01要用到project02,将project02的坐标复制到project01的< dependency >即可
-
依赖传递冲突问题:
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
-
可选依赖:对外隐藏当前所依赖的资源
- 在< version >下一行添加< optional >false</ optional >
-
依赖范围:
< scope > </ scope >
生命周期
- clean:清理工作
- preclean:执行一些clean之前需要完成的工作
- clean:移除所有上一次构建生成的文件
- post-clean:执行一些clean之后需要完成的工作
- default:核心工作(编译、测试、打包等)
- compile(编译)
- test-compile(编译测试源码)
- test(测试)
- package(打包)
- install(安装)……
- site:产生报告,发布站点
- pre-site:执行一些site之前需要完成的工作
- site:生成项目的站点文档
- post-site:执行一些site之前需要完成的工作
- site-deploy:将生成的站点文档部署到特定的服务器上
进阶操作
分模块开发与设计
依赖传递
-
传递性
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
-
可选依赖:对外隐藏当前所依赖的资源
-
排除依赖:主动断开依赖的资源,被排除的资源无需指定版本
聚合
-
将多个模块组合成一个整体,同时进行项目的构建的过程
-
当工程中某个模块发生更新时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
构建步骤:
1.创建Maven模块,设置打包类型为pom
pom
2.设置当前聚合工程所包含的子模块名称
继承
-
描述的是两个工程间的关系,子工程可以继承父工程的配置信息,常见于依赖关系的继承,可以简化配置,减少版本冲突
构建步骤:
1.创建Maven模块,设置打包类型为pom
pom
2.在父工程的pom文件中配置依赖关系
3.配置子工程中可选的依赖关系
4.在子工程中配置当前工程所继承的父工程
5.在子工程中配置使用父工程中可选依赖的坐标
属性
构建步骤:
1.定义属性
2.引用属性
资源文件引用属性:
1.定义属性
2.配置文件中引用属性
3.开启资源文件目录加载属性的过滤器
- 版本管理:
- 工程版本
- SNAPSHOT(快照版本)
- 项目开发过程中临时输出的版本
- 随着开发的进程不断更新
- RELEASE(发布版本)
- 向团队外部发布较为稳定的版本
- SNAPSHOT(快照版本)
- 发布版本
- alpha
- beta
- 纯数字
- 工程版本
多环境配置与应用
- 多环境开发:maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境
1.定义多环境
2.使用多环境
跳过测试
- 应用场景:
- 功能更新中并且没有开发完毕
- 快速打包
- 方法:
1.点击右侧闪电符号
2.mvn指令:-D skipTests
3.细颗粒度跳过测试
私服
- 私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
流程分析:
-
私服仓库分类:
- 宿主仓库(hosted):保存自主研发+第三方资源
- 代理仓库(proxy):代理连接中央仓库
- 仓库组(group):为仓库编组简化下载操作
-
资源的上传于下载:
配置位置:(setting.xml)
工程pom文件中:
发布指令:mvn deploy
学习中遇到的问题及解决
- 本地仓库默认在c盘,随着使用时间增长,占用空间会变大,如何更改储存路径?
- 在非c盘的磁盘新建maven文件夹,在里面再建一个repository文件夹,并记录此路径
- 打开:apache-maven文件夹–>conf–>settings.xml
- 找到settings下面的<!-- localRepository一行
- 将[< localRepository>/path/to/local/repo< /localRepository>]一行复制并粘贴在–>的下一行
- 将中间的[/path/to/local/repo]改为刚才新建的路径
- 随后存储路径就会变为如图所示
- 国外中央仓库下载速度较慢,在setting文件中配置阿里云镜像仓库
- 仍然是settings.xml文件,将mirror中间的部分复制在下面,并进行修改,如图所示