第一章 Maven 基础
网页地址
视频地址:黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven_哔哩哔哩_bilibili依赖查询:https://mvnrepository.com/ Maven :Maven – Available Plugins
Nexus :Download
有道云笔记:https://note.youdao.com/s/avkgonCe
Maven 标签
- 视频地址:黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven_哔哩哔哩_bilibili依赖查询:https://mvnrepository.com/
Maven :Maven – Available Plugins
Nexus :Download
有道云笔记:https://note.youdao.com/s/avkgonCe
Maven 标签
resources: 资源文件配置信息
resource: 资源文件配置信息
testResources: test 资源文件配置信息
testResource: test 资源文件配置信息
以下内容属于 dependencies
groupId: 【组织 ID】定义当前 Maven 项目隶属组织名称(通常是域名反写,例如 org.mybaits)
artifactId: 【项目 ID】定义当前 Maven 项目名称(通常是模块名称,例如 CRM、SMS)
version: 【版本号】定义当前项目的版本号
packaging: 【jar/war】定义该项目的打包方式
optional: 是否对上级隐藏 true / false
exclusions: 排除掉某些
exclusion: 具体排除掉哪一个 ()
注意:不写版本 见代码片段 1.2
scope: 范围
在主程序范围能不能用 【compile 文件夹范围内 】在测试范围能不能用【 test 】是否参与打包【 package 】
dependencyManagement:【依赖管理】 在 父pom 中做依赖管理
build
build 构建plugins 插件(们)plugin 插件
代码片段 1.1
…… ………… generate-test-resources
表 1.1 scope 范围
| scope 参数 | 主程序 | 测试程序 | 参与打包 | 典型 |
| compile | ♀️ | ♀️ | ♀️ | log4j |
| test | ♀️ | junit | ||
| provided | ♀️ | ♀️ | servlet-api | |
| runtime | ♀️ | jdbc |
表 1.2 scope 以来传递中的范围问题
| 项目 2 项目 1 | compile | test | provided | runtime |
| compile | compile | test | provided | runtime |
| test | ||||
| provided | ||||
| runtime | runtime | test | provided | runtime |
代码 1.2 排除下级依赖
父类 组名 (定义之后可以删除) 父类 artifactId 父类 版本 (定义之后可以删除) a 的 groupId a 的 artifactId
依赖传递
若 b 项目引用 a 项目作为依赖,那么 a 项目引用的依赖 b 也引用直接依赖:直接引用的依赖间接依赖:通过引用其他项目获取其他项目的依赖
依赖冲突问题
深度优先原则:层级越浅优先级越高(直接依赖>间接以依赖)声明优先原则:两个间接以来全都是 2 层,那么看引用他们依赖的 a 与 b ,谁在前面使用谁的后者覆盖原则:当同一个 pom 文件中出现了同一个依赖的不同版本,后者覆盖前者对上级隐藏 :true排除下级依赖:
- Maven 生命周期与插件
全部过程
第二章 Maven 高级
分模块开发思路
将 controller 层、service 层等都单独划分为一个单独的 Maven 模块,通过接口进行连接
配置管理 | (插件同理)
配置一个新的 pom 文件用于管理所有的 pom
packaging:
聚合 pom后端 jarweb war
pom 各层级文件的名称 ../ssm_pojo ../ssm_dao ../ssm_service ../ssm_controller ……
继承
在 父 pom 文件中定义所有的依赖
父 pom:
也可以写自己的项目,没两样 …… …………
子 pom : dependency 中不用写 version
…… ………… ../ssm/pom.xml …… ……
同理插件也可以继承,同样删除 version
继承与聚合
作用
聚合用于快速构建项目继承用于快速配置相同点
聚合与继承的 pom.xml 文件打包方式均为 pom,可以将两种关系只做到同一个 pom 文件中聚合与集成均属于设计型模块,并无实际的模块内容。不同点
聚合是在当前模块中的配置关系,聚合可以感知到参与聚合的模块有哪些继承是在子模块中配置关系,父模块无法感知哪些模块集成了自己
第三章 自定义变量
1.2.3
${spring.version}
${version}
${settings.localRepository}
${user.home}
第四章 版本管理
工程版本
工程版本
SNAPSHOT(快照版本)
项目开发过程中,为方便团队成员合作,解决模块间互相依赖和实时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫做快照版本(测试阶段版本)快照版本会随着开发的进站不断更新RELEASE(发布版本)
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本对应的构建文件是稳定的,几遍进行功能的后续开发,也不会改变当前发布版本的内容,这种版本成为发布版本
功能版本号约定
约定规范
...主版本:表示项目重大架构的变更,如 Spring5 相较于 Spring4次版本:表示有较大的的功能增加和变化,或者全面系统的修复漏洞增量版本:表示有重大漏洞修复里程碑版本:表示一个版本的里程碑(版本内部》。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试范例
5.1.9.RELEASE
第五章 多环境
配置资源文件对应信息
在 pom 文件中设定配置文件路径开启加载 pom 属性过滤功能使用 ${属性名} 格式引用 pom 属性
…… ../ssm_dao/src/main/resources ${project.basedir}/src/main/resources true
jdbc.username=${jdbc.username}
定义 生产/开发 环境
pro_env
url1
true
dev_env
url2
使用
maven 中加入一个新的生命周期指令为:install -P dev_env
第六章 跳过测试
使用场景
整体模块功能未开发模块中某个功能未开发完毕单个功能更新调试导致其他功能失败快速打包……
使用方法
插件:maven helper
- 方案 1:直接使用 IDEA 进行屏蔽方案 2:选中 pom 文件,右键 run以下命令:install -D skipTests方案 3:build 中设置跳过测试
maven-surefire-plugin 2.22.1 true **/Demotest.java **/User*Test.java
第七章 Nexus 私服搭建与使用
Nexus私服
地址:Download
启动:进入 bin 文件夹 nexus run访问:localhost:8081
仓库分类
宿主仓库 hosted
保存无法从中央仓库获取的资源
自主研发第三方非开源项目
代理仓库 proxy
代理远程仓库,通过 nexus 访问其他公共仓库,例如中央仓库
仓库组 group
将若干个仓库组成一个群组,简化配置仓库组不能保存资源,属于设计型仓库
Idea 与 Nexus 私服
- 保存无法从中央仓库获取的资源
- 自主研发第三方非开源项目
- 代理远程仓库,通过 nexus 访问其他公共仓库,例如中央仓库
- 将若干个仓库组成一个群组,简化配置仓库组不能保存资源,属于设计型仓库
Maven settings.xml 文件中的配置
jim-release admin admin jim-snapshots admin admin jim * 去 Nexus 私服仓库复制
发布 【 maven deploy 】
第八章 其他
settings.xml
Maven 生命周期全过程
validate 校验initialize 初始化generate-sources 生成源代码process-sources 处理源代码generate-resources 生成资源文件process-resources 处理资源文件compile 编译process-classes 处理类文件generate-test-sources 处理测试源代码process-test-sources 生成测试源代码generate-test-resources 生成测试资源文件process-test-resources 处理测试资源文件test-compile 编译测试源码process-test-classes 处理测试类文件test 测试prepare-package 准备打包package 打包pre-integration-test 集成测试前integration-test 集成测试post-integration-test 集成测试后verify 验证install 安装deploy 部署



