Maven的依赖管理

maven相关依赖的官网:https://mvnrepository.com/

pom.xml是项目依赖的配置文件

maven首先会去本地仓库下载相关依赖,如果没有,则会去中央仓库或镜像下载。

自定义properties,可使用${}将属性作为变量引入

xml 复制代码
<properties>
	<junit.version>5.10.2</junit.version>
</properties>
<dependencies>
	<dependency>
		<groupId>org.junit.jupiter</groupId>
		<artifactId>junit-jupiter-api</artifactId>
		<version>${junit.version}</version>
		<scope>test</scope>
	</dependency>
</dependencies>

依赖范围scope

依赖范围 说明
compile 编译依赖范围。默认值,在编译、测试、运行环境下都可使用。依赖关系中可以进行传递
test 测试依赖范围。只有在测试环境下可用,比如:junit
provided 已提供依赖范围。在编译、测试环境下可用,比如:servlet-api(在服务器端已提供此jar包,不需要在运行时再次引入)
runtime 运行时依赖范围。在测试、运行环境下可用,比如:jdbc
system 系统依赖范围。在编译、测试环境下可用,需指定本地依赖路径,可移植性变差,不推荐使用
import 导入依赖范围。

依赖传递原则

  1. 只有当依赖是compile时,才可向上传递
  2. 强制中止依赖传递:<optional>true</optional>

依赖冲突原则

  1. 路径最短优先原则
    当A依赖B,B依赖Druid-1.2.7,A依赖Druid-1.2.8,则优先使用Druid-1.2.8

  2. 当路径长度相同,先声明优先原则
    当A依赖B,B依赖Druid-1.2.7,A依赖C,C依赖Druid-1.2.8,则按照B、C在dependencies中的顺序决定

  3. 手动依赖排除,exclusions
    手动排除的依赖,不会向上传递

    xml 复制代码
    <dependency>
    	<groupId>com.wyt.maven</groupId>
        <artifactId>maven_c</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
       		<exclusion>
          		<groupId>com.alibaba</groupId>
           		<artifactId>druid</artifactId>
         	</exclusion>
        </exclusions>
    </dependency>
相关推荐
.痞老板.42 分钟前
mysql初阶--数据库基础
数据库·mysql
nice_lcj5202 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
城北徐宫2 小时前
MySQL约束条件一览
数据库·mysql
码农小河662 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
SL_staff3 小时前
从配置失效到逻辑复用:JVS-Logic 如何构建可治理的业务编排中枢
java·spring·产品
特立独行的猫A3 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python
文丑颜不良啊4 小时前
LeetCode1961~1980题目解析
java·leetcode
ClouGence4 小时前
数据库变更审批困局,被这个开源工具解决了
数据库·开源
文丑颜不良啊4 小时前
LeetCode2001~2020题目解析
java·leetcode
用户3721574261354 小时前
Java 批量提取 Word 文档中的图片并保存到本地
java