当前位置: 首页 > news >正文

六、Maven依赖管理、依赖传递和依赖冲突

1.Maven依赖管理

Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。

我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题。

重点: 编写pom.xml文件!

(1)maven项目信息属性配置和读取:

<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0.0</version><!--打包方式默认:jarjar指的是普通的java项目打包方式! 项目打成jar包!war指的是web项目打包方式!项目打成war包!pom不会讲项目打包!这个项目作为父工程,被其他工程聚合或者继承!后面会讲解两个概念
-->
<packaging>jar/pom/war</packaging>

(2)依赖管理和添加:

<!-- 通过编写依赖jar包的gav必要属性,引入第三方依赖!scope属性是可选的,可以指定依赖生效范围!依赖信息查询方式:1. maven仓库信息官网 https://mvnrepository.com/2. mavensearch插件搜索-->
<dependencies><!-- 引入具体的依赖包 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version><!--生效范围- compile :main目录 test目录  打包打包 [默认]- provided:main目录 test目录  Servlet- runtime: 打包运行           MySQL- test:    test目录           junit--><scope>runtime</scope></dependency></dependencies>

(3)依赖版本提取和维护:

<!--声明版本-->
<properties><!--命名随便,内部制定版本号即可!--><junit.version>4.11</junit.version><!-- 也可以通过 maven规定的固定的key,配置maven的参数!如下配置编码格式!--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><!--引用properties声明版本 --><version>${junit.version}</version></dependency>
</dependencies>

2.Maven依赖传递

eg:

3.Maven依赖冲突:最短路径;最短声明;手动排除(非自动);

(3).手动排除,一样的时候,想使用非最短路径,非最先声明时的依赖:(不推荐,自作多情)

即你带来的我不要了。

然后需要将项目关闭之后,再打开,才可以将其导入。


http://www.mrgr.cn/news/21838.html

相关文章:

  • 漫谈设计模式 [1]:简单工厂模式
  • 机械学习—零基础学习日志(概率论总笔记5)
  • Java 中的数组是如何声明和初始化的?
  • 解决面板安装Node.js和npm后无法使用的问题
  • 【详解 Java 注解】
  • java8 Stream流详解
  • STM32G474内部温度传感器的使用
  • linux高级学习10
  • Hive和Hbase的区别
  • 最新SMS测压SMS源码 全新版本
  • 彻底解决win10系统Tomcat10控制台输出中文乱码
  • 漫谈设计模式 [15]:观察者模式
  • 架构全景视图
  • RocketMQ之发送消息源码分析
  • 漫谈设计模式 [5]:建造者模式
  • 脏页写入磁盘的过程详解
  • 理解C++全局对象析构顺序与 IPC 资源管理:避免 coredump
  • windows10 卸载网络驱动以及重新安装
  • 前端工程化1:从0到1配置eslint (所有人一看就懂)
  • 数据集 CrowdPose 多人姿态估计 深度学习 >> DataBall