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>
相关推荐
玉衡子34 分钟前
MySQL基础架构全面解析
数据库·后端
快乐肚皮35 分钟前
fencing token机制
java·fencing token
梦中的天之酒壶36 分钟前
Redis Stack扩展功能
数据库·redis·bootstrap
GreatSQL43 分钟前
GreatSQL分页查询优化案例实战
数据库
叶落阁主44 分钟前
Neovim 插件 i18n.nvim 介绍
java·vue.js·vim
渣哥1 小时前
让集合线程安全的几种靠谱方法
java
dylan_QAQ1 小时前
Java转Go全过程06-工程管理
java·后端·go
Leo.yuan1 小时前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark
麦兜*1 小时前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
chat2tomorrow1 小时前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl