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>
相关推荐
一 乐13 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker199213 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维13 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_9914 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子14 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji341614 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
1.14(java)14 小时前
SQL数据库操作:从CRUD到高级查询
数据库
恋爱绝缘体115 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy180915 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
Full Stack Developme15 小时前
数据库索引的原理及类型和应用场景
数据库