Java学习路线:Maven(二)scope、optional和exclusions

news/2024/12/29 5:43:10/

目录

scope

optional

exclusions


我们知道,一般来说一个依赖由三个基本的属性作为定位坐标,即groupId、artifactId和version

除了这三个基本属性以外,依赖还可以添加其他的属性,例如scope、optional和exclusions等

这篇文章将对这几种属性进行介绍

scope

scope决定了依赖作用的范围,就和注解中的Retention相似

scope有以下几种值:

  • compile:默认值,表示依赖在编译、运行、测试时均有效
  • provided:在编译、测试时有效,运行时无效
  • runtime:在运行、测试时有效,编译时无效
  • test:只在测试时有效

以上四种值都针对于在远程仓库中下载的依赖

那如果我们使用的依赖没有上传远程仓库,只是一个本地的jar包应该怎么办呢?

这种情况可以使用第五种作用域:

  • system:和provided作用域一样,但是不是从远程仓库获取,而是直接导入本地jar包

如果使用system,需要增加一个属性systemPath来找到本地jar包的地址

<dependency><groupId>org.junit.xxx</groupId><artifactId>xxx</artifactId><version>5.11.3</version><scope>system</scope><systemPath>C://user/test.jar</systemPath>
</dependency>

optional

当某个依赖的 optional 设置为true时,Maven 不会自动将该依赖传递给依赖于当前项目的其他项目

<optional>true</optional>

optional主要应用于传递依赖,例如,你的项目 A 依赖于 B,B 又依赖于 C,那么 A 也会自动依赖于 C,但是当C被设置为optional后,在A项目中导入B时,C不会被自动导入

exclusions

exclusions 用于排除传递性依赖,即阻止特定的依赖自动传递到项目中。

例如,假设项目依赖 spring-core,而 spring-core 默认依赖 commons-logging。如果想排除 commons-logging,可以这样配置:

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.2.0.RELEASE</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>
</dependencies>

可以这样理解optional和exclusions:

  • optional:由发送方(依赖方)声明这个依赖是“可选的”,告诉 Maven 不要自动传递这个依赖给下游项目
  • exclusions:由接收方(依赖的使用方)声明不想要某些传递性依赖,从而“拒绝”这些依赖被引入项目中


http://www.ppmy.cn/news/1545053.html

相关文章

轻量级Nacos来了!占用资源极低,性能炸裂!

Nacos作为一款非常流行的微服务注册中心&#xff0c;我们在构建微服务项目时往往会使用到它。最近发现一款轻量级的Nacos项目r-nacos&#xff0c;占用内存极低&#xff0c;性能也很强大&#xff0c;分享给大家。本文就以我的mall-swarm微服务电商实战项目为例&#xff0c;来聊聊…

Docker篇(registry私服)

目录 一、私有仓库搭建与配置 1. 拉取私有仓库镜像&#xff08;此步省略&#xff09; 2. 启动私有仓库容器 3. 打开浏览器访问 4. 修改daemon.json 5. 重启docker 服务 二、镜像上传至私有仓库 1. 标记此镜像为私有仓库的镜像 2. 再次启动私服容器 3. 上传标记的镜像 …

必应国内广告开户代理商,推广怎么收费?

2024年&#xff0c;必应国内广告凭借其独特的优势&#xff0c;已经成为众多企业拓展市场、提升品牌影响力的重要渠道。 一、必应国内广告费用说明 1、必应开户费用&#xff1a;通常情况下&#xff0c;必应国内广告推广需要媒体预充值5000元&#xff0c;开户服务费用为 2000 元…

微信小程序 基于协同过滤算法的的校园音乐推荐系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 校园音乐推荐系统设计的目的在于帮助学校的管理者能够更加高效轻松地进行日常的管理工作&#xff0c;所以作为一个工具&…

第一章 Linux安装 -- 安装Debian 12操作系统(四)

文章目录 2.3.4 安装Debian 12操作系统 2.3.4 安装Debian 12操作系统 虚拟机的创建参照前面2.3.1.3节里的步骤创建&#xff0c;这里不再详述。 下面就开始安装Debian 12系统了&#xff0c;单击“开启此虚拟机”&#xff0c;如图1-161虚拟机主界面。 图1-161 虚拟机主界面 弹…

微服务架构面试内容整理-Hystrix

Hystrix 是由 Netflix 开发的一个用于处理分布式系统中的延迟和故障的库,主要用于实现熔断器模式。它帮助开发者确保系统的稳定性和可用性,防止单个服务的故障影响整个系统。以下是 Hystrix 的主要特点、工作原理和使用场景: 主要特点 1. 熔断器模式: 通过监控服务调用的成…

产品经理笔记

1.3 合格的产品经理 P3 - 00:40 产品基础&#xff1a; 产品共性&#xff1a;解决问题区别&#xff1a;有形与无形产品经理定义&#xff1a; 想设计、做开发、卖推广想清楚产品怎么做的人合格的产品经理&#xff1a; 问题&#xff1a;谁 什么情况下 什么事用户 场景 …

高并发分布式是什么,包含哪些核心技术

何为高并发分布式 高并发分布式技术是指在面对大量用户访问和数据处理的情况下系统能够保持高性能、高可用性和可扩展性的一系列技术和方法。 其核心技术包含&#xff1a; 负载均衡分布式缓存分布式数据库消息队列分布式文件系统并发控制 负载均衡 负载均衡是指将用户的请…