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

(三)Gradle 依赖版本控制

请添加图片描述

Gradle 支持固定版本动态版本版本范围三种常见的依赖版本管理方式,不同方式适用于不同场景,但需注意各自的优缺点。

一、固定版本

引入依赖时明确指定具体的版本号(如 5.3.20),版本迭代时,需手动更新版本(无法自动获取安全补丁或功能更新):

dependencies {// 固定版本:Spring Core 5.3.20(精确匹配)implementation("org.springframework:spring-core:5.3.20")
}

二、动态版本

依赖声明时不指定具体版本,通过通配符(+)或关键字(latest.release、release)自动匹配版本,构建时自动获取最新版本(无需手动更新版本号),适用于开发阶段快速试用最新版本的依赖:

  • 通配符 +:匹配指定前缀的最新版本(如 5.3.+ 匹配 5.3.x 系列最新版)
  • 关键字:latest.release(最新正式版)、latest.integration(最新快照版,含未正式发布版本)
dependencies {// 匹配 5.3.x 系列最新版本(如 5.3.21、5.3.22 等)implementation("org.springframework:spring-core:5.3.+")// 匹配 FastJSON 的最新正式版implementation("com.alibaba:fastjson:latest.release")// 匹配 Guava 的最新快照版(含测试版,谨慎使用)implementation("com.google.guava:guava:latest.integration")
}

⚠️注意:动态版本会导致构建结果不确定(不同时间构建可能使用不同版本),严禁在生产环境使用

三、版本范围

通过区间表达式限定版本上下限,允许版本在一定范围内更新,避免超出预期范围。

常用区间符号

  • [x, y]:闭区间(包含 x 和 y,即版本 ≥x 且 ≤y)
  • (x, y):开区间(不包含 x 和 y,即版本 >x 且 <y)
  • [x, y):左闭右开(包含 x,不包含 y,即版本 ≥x 且 <y)
  • (x, y]:左开右闭(不包含 x,包含 y,即版本 >x 且 ≤y)
  • x+:等价于 [x, ∞)(≥x 的所有版本)
dependencies {// 版本 ≥5.3.0 且 <5.4.0(允许小版本更新,如 5.3.1、5.3.20)implementation 'org.springframework:spring-core:[5.3.0,5.4.0)'// 版本 >5.3.0 且 ≤5.4.0(排除 5.3.0 本身,允许到 5.4.0)implementation 'com.google.guava:guava:(5.3.0,5.4.0]'// 版本 ≥2.0.0 的所有版本(大版本固定,小版本任意更新)implementation 'org.slf4j:slf4j-api:2.0.0+'
}

四、Rich Versions

除了基础的精确版本或范围声明,Gradle 提供了Rich Version 机制,通过 strictlyrequirepreferreject 四个核心关键字,实现更精细、灵活的版本控制。

4.1 强制版本(strictly)

strictly用于强制指定依赖必须使用某个版本,不允许任何更高或更低的版本。若存在版本冲突(如传递依赖要求其他版本),Gradle 会直接抛错。

例如,强制要求 slf4j-api 必须使用 2.0.7 版本:

dependencies {// 强制要求 slf4j-api 必须使用 2.0.7 版本,不接受其他版本implementation("org.slf4j:slf4j-api") {version {strictly("2.0.7")}because("强制要求 slf4j-api:2.0.7 版本") // 可选,指定版本的原因}implementation("org.springframework.boot:spring-boot-starter-web:3.2.0")
}

在这里插入图片描述

strictly 可以缩写为 !! 简化配置:

dependencies {// 强制要求 slf4j-api 必须使用 2.0.7 版本,不接受其他版本implementation("org.slf4j:slf4j-api:2.0.7!!")
}

4.2 限定范围(require)

require 用于限定依赖版本必须在指定范围内(如1.2+[1.0, 2.0)),例如要求 slf4j-api 版本不低于 5.3.+

dependencies {// 限制 slf4j-api 版本不低于 5.3.+implementation('org.slf4j:slf4j-api') {version {require("5.3.+")}}
}

等价于默认的直接依赖声明

dependencies {// 限制 slf4j-api 版本不低于 5.3.+implementation("org.slf4j:slf4j-api:5.3.+")
}

Gradle 会自动选择范围内的合适版本(默认优先最高版本),如果版本超出范围,会被自动调整到范围内的合适版本;若范围内无可用版本,Gradle 会直接抛错。

在这里插入图片描述

4.3 推荐版本(prefer)

prefer 表示 “推荐版本”,不强制版本,若存在更高版本依赖,优先选择更高版本。仅在没有 strictlyrequire 约束时生效。

不支持动态版本(如 prefer latest.release 无效);

例如推荐 slf4j-api 使用 2.0.7+ 版本:

// slf4j-api 推荐选择 1.7.25;若有其他依赖要求 1.7.30,则使用 1.7.30
dependencies {implementation("org.slf4j:slf4j-api") {version {prefer("2.0.7")}}implementation("org.springframework.boot:spring-boot-starter-web:3.2.0")
}

在这里插入图片描述

4.4 禁止版本(reject)

reject独立的版本排除规则,用于明确拒绝某些有问题的版本(如含 bug、不兼容的版本),若依赖解析时选中 reject 的版本,会直接抛出解析失败。

例如禁止使用 slf4j-api2.0.9 版本:

dependencies {constraints {implementation("org.slf4j:slf4j-api"){version {reject("2.0.9")}because("禁止使用 2.0.9 版本")}}implementation("org.springframework.boot:spring-boot-starter-web:3.2.0")
}

在这里插入图片描述

http://www.dtcms.com/a/530013.html

相关文章:

  • 汕头网站建设工作做一个电子商务网站建设策划书
  • 【Java 反射机制】
  • 2016年网站设计风格山西seo网站设计
  • 局域网建设网站视频教程网站制作都包括什么
  • 网站建设工作推进会上的讲话在电商网站上做推广的技巧
  • 公司做网络推广哪个网站好网络推广专员好做吗
  • 最优传输理论学习(1)+PINN文献阅读
  • 网站关键词几个好wordpress 徽标
  • 培训网站项目ppt怎么做东莞网站优化案例
  • 如何建团购网站网站建设推广襄樊
  • C++数据结构【顺序表和Vector】
  • mujoco 仿真导纳控制律
  • 做引流去那些网站好网站挖掘工具
  • 西安免费自助建站模板淄博seo排名
  • 在线商城的程序源代码
  • 网站图片大小大连事件最新消息
  • 网站 设计 语言注册资金1000万实际需要多少钱
  • 做网站的市场网站建设预算明细
  • 学生管理系统升级
  • 网站解析密码宁波led网站建设
  • 襄阳住房和城乡建设局网站秦皇岛市房价
  • 建站如何收费wordpress博客价格
  • 电商网站开发技术上海网站建设高端定制
  • 大规模TSP问题规划方案中的避坑事项
  • 什么是代理隧道?代理隧道用来做什么?
  • FMC-DETR:面向航拍视角目标检测的频域解耦多域协同方法
  • 秦皇岛公司做网站工装公司是做什么的
  • 周浦网站建设公司网站开发支付功能怎么做
  • 猎头做单都有什么网站易点科技网站建设
  • 建网站软件最新网站建设项目可行性研究报告