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

maven核心功能——依赖和构建管理

南星沐 2026-06-08 12:01:04
简介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

插件配置

插件版本不满足时,可以手动配置

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。