Maven是什么?
Maven是管理和构建java项目的工具。
Maven的作用
依赖管理
不需要再下载还导入jar包,只需在pom.xml文件中导入即可
依赖配置
maven官网Maven Repository: Search/Browse/Explore (mvnrepository.com)
依赖传递
直接依赖(蓝),间接依赖(黄)
依赖范围
生命周期
统一项目结构
项目构建
有跨平台的特点。
Maven项目的创建
Maven坐标
GroupId
当前maven项目隶属的组织名称,例com.suave.
ArtifactId
当前maven项目名
Version
项目的版本号
导入Maven项目
分模块开发与设计
分模块开发的意义
将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享
依赖传递
依赖的传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖冲突
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性
排除依赖
排除依赖是隐藏当前资源对应的依赖关系
聚合
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
作用:
使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
开发步骤
创建Maven模块,设置打包类型为pom
设置当前聚合工程所包含的子模块名称
继承
概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:
简化配置
减少版本冲突
开发步骤
创建Maven模块,设置打包类型为pom
在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)
配置子工程中可选的依赖关系
在子工程中配置当前工程所继承的父工程
在子工程中配置使用父工程中可选依赖的坐标(不要写版本号)
继承与聚合
作用:
聚合用于快速构建项目
继承用于快速配置
相同点:
聚合与继承的pom.xm1文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
属性配置与使用
开发步骤
定义属性
引用属性
配置文件加载属性
定义属性
配置文件中引用属性
开启资源文件目录加载属性的过滤器
配置maven打war包时,忽略web,xml检查
版本管理
工程版本:
SNAPSHOT(快照版本):
项目开发过程中临时输出的版本,称为快照版本
快照版本会随着开发的进展不断更新
RELEASE(发布版本):
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
发布版本:
alpha版
beta版
纯数字版
多环境配置与应用
多环境开发
maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境
开发步骤
定义多环境
使用多环境(构建过程)
跳过测试
应用场景:
功能更新中并且没有开发完毕
快速打包
使用
在maven插件里面
私服
简介
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
Nexus:Sonatype公司的一款maven私服产品,下载地址:https://help.sonatype.com/repomanager3/download
使用
启动服务器(命令行启动)
nexus.exe run nexus
访问服务器(默认端口:8081)
http://localhost:8081
修改基础配置信息:安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如默认访问端口
修改服务器运行配置信息:安装路径下bin目录中nexus.vmoptions文件保存Nexus服务器启动对应的配置信息,例如默认占用内存空间
私服分类
本地仓库访问私服的配置
在本地maven文件夹/conf/settings.xml文件中修改
在<servers></servers>中配置
在<mirrors></mirrors>中配置
工程pom文件中配置
发布命令(也可以直接点击maven生命周期中的deploy)
私服访问中央服务器设置
配置位置(nexus服务器页面设置)