您现在的位置是:首页 >学无止境 >maven核心功能——依赖和构建管理网站首页学无止境
maven核心功能——依赖和构建管理
依赖管理和配置

依赖信息查询方式
1/官网查询:https://mvnrepository.com/
2/插件查询



选择copy of maven ,dependency 信息已经在粘贴板中

版本号也可提取成公共变量,放在 properties 中


scope的用法

因为test注解使用的junit依赖,限制了只能在main中使用,所以在test中无法使用@Test注解

依赖传递和冲突
依赖传递
项目中,需要导入jackson相关的依赖,通过之前导入经验,jackson需要导入三个依赖,分别为:

通过查看网站介绍的依赖传递特性:data-bind中,依赖其他两个依赖

最佳导入:直接可以导入data-bind,自动依赖传递需要的依赖

依赖冲突
maven发现已经存在依赖会终止依赖传递,避免循环依赖和重复依赖的问题
依赖冲突发生的场景:
A 依赖 B 1.0 版本
C 依赖 B 2.0 版本
那maven引入的B依赖到底是哪个版本的呢
解决依赖冲突(如何选择重复依赖)方式:
1. 自动选择原则
- 短路优先原则(第一原则)
A—>B—>C—>D—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则A依赖于X(version 0.0.2)。
- 依赖路径长度相同情况下,则“先声明优先”(第二原则)
A—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
在<depencies></depencies>中,先声明的,路径相同,会优先选择!
小思考:
前提: A 1.1 -> B 1.1 -> C 1.1 F 2.2 -> B 2.2 pom声明了: F 2.2 A 1.1 B 2.2
那么maven引入的依赖有哪些?
F 2.2 A 1.1 B 2.2。没有C 1.1,因为在B 1.1依赖冲突时,后续的依赖传递全部终止
依赖导入失败场景和解决方案
1/网络故障或仓库宕机
2/依赖名称或版本号问题
3/本地maven仓库或缓存被污染,导致 Maven 无法正确地使用现有的依赖项,并且也无法重新下载!——解决方式:删除污染文件,位置就是groupId中显示的位置,发现内部包含.lastupdated结尾的文件删除即可

bat脚本使用:
maven_clean.bat
使用记事本打开
set REPOSITORY_PATH=D:
epository 改成你本地仓库地址即可!
点击运行脚本,即可自动清理本地错误缓存文件!!
构建管理和插件配置
构建概念
项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程,在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。

主动触发场景
重新编译 : 编译不充分, 部分文件没有被编译!
打包 : 独立部署到外部服务器软件,打包部署
部署本地或者私服仓库 : maven工程加入到本地或者私服仓库,供其他工程使用
构建方式
命令方式构建:
| 命令 | 描述 |
|---|---|
| mvn clean | 清理编译或打包后的项目结构,删除target文件夹 |
| mvn compile | 编译项目,生成target文件 |
| mvn test | 执行测试源码 (测试) |
| mvn site | 生成一个项目依赖信息的展示页面 |
| mvn package | 打包项目,生成war / jar 文件 |
| mvn install | 打包后上传到maven本地仓库(本地部署) |
| mvn deploy | 只打包,上传到maven私服仓库(私服部署) |
可视化方式构建:

构建命令周期
简化触发构建命令,可以分为三个周期:
清理周期:clean
构建周期:compile test package install/deploy
报告周期:site
eg:正常情况下需要打包时,要先进行compile test package,但是maven可以直接package,而不需要compile test package。
最佳使用方案:
打包: mvn clean package 重新编译: mvn clean compile 本地部署: mvn clean install
插件配置
插件版本不满足时,可以手动配置







QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结