【Gradle声明版本系列1】声明版本和范围

gradle依赖implementation,api,compileOnly,compile及依赖管理 新旧依赖对比 Android studio 版本更新至3.0时,连带着com.android.tools.build:gradle 插件工具也升级到了3.0.0,在插件3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle 的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。依赖关键字也有所改变: Android Studio 3.X Andro 阅读详情

【Gradle声明版本系列】声明版本和范围

版本排序

版本有一个隐式的排序。版本排序用于:

  • 确定特定版本是否包含在范围内。
  • 在执行冲突解决时确定哪个版本是“最新”的(但要注意,冲突解决使用"基础版本")。

版本根据以下规则进行排序:

  • 每个版本被拆分为其组成部分:
    • 字符 [. - _ +] 用于分隔版本的不同"部分"。
    • 包含数字和字母的任何部分都会被拆分为单独的部分:1a1 == 1.a.1
  • 只比较版本的部分,实际的分隔符字符并不重要:1.a.1 == 1-a+1 == 1.a-1 == 1a1(但要注意,在冲突解决的上下文中,此规则有例外)。
  • 比较两个版本的等效部分使用以下规则:
    • 如果两个部分都是数字,则最高的数字值较高:1.1 < 1.2
    • 如果一个部分是数字,则它被认为比非数字部分更高:1.a < 1.1
    • 如果两个部分都是非数字,则按字母顺序进行比较,区分大小写:1.A < 1.B < 1.a < 1.b
  • 版本的额外数值部分被认为比没有的版本更高(即使它是零):1.1 < 1.1.0
  • 版本的额外非数字部分被认为比没有的版本更低:1.1.a < 1.1
  • 某些非数字部分对于排序具有特殊意义:
    • dev 被认为比任何其他非数字部分更低:1.0-dev < 1.0-ALPHA < 1.0-alpha < 1.0-rc。
    • 字符串 rc、snapshot、final、ga、release 和 sp 被认为比任何其他字符串部分更高(按此顺序排序):1.0-zeta < 1.0-rc < 1.0-snapshot < 1.0-final < 1.0-ga < 1.0-release < 1.0-sp < 1.0。
    • 这些特殊值不区分大小写,与常规字符串部分相反,并且它们不依赖于其周围使用的分隔符:1.0-RC-1 == 1.0.rc.1

简单版本声明语义

当您使用简写表示法声明版本时,例如:

dependencies {
    implementation('org.slf4j:slf4j-api:1.7.15')
}

那么该版本被视为必需版本,这意味着它至少应为 1.7.15,但可以由引擎进行升级(乐观升级)。

但是,还有一种用于严格版本的简写表示法,使用 !! 符号:

dependencies {
    // 使用 !! 的简写表示法
    implementation('org.slf4j:slf4j-api:1.7.15!!')
}

严格版本无法升级,并覆盖此依赖项提供的任何源自此依赖项的传递性依赖项。对于严格版本,建议使用范围。

声明无版本的依赖关系

对于较大的项目,推荐的做法是声明没有版本的依赖关系,并使用依赖关系约束进行版本声明。这样可以在一个地方管理所有依赖关系的版本,包括传递性依赖关系。

dependencies {
    implementation 'org.springframework:spring-web'
}

dependencies {
    constraints {
        implementation 'org.springframework:spring-web:5.0.2.RELEASE'
    }
}

以上是关于声明版本和范围的内容。

ork:spring-web:5.0.2.RELEASE’
}
}


以上是关于声明版本和范围的内容。

## [参考链接](https://docs.gradle.org/current/userguide/single_versions.html)
[Gradle中文教程系列]-跟我学Gradle-5.1:依赖的坐标与范围 依赖的坐标  仓库中构件(jar包)的坐标是由groupId、artifactId、version组成的字符串构成的,在仓库中通过以GAV组成的坐标来定位所需的jar包.在gradle中可以通过以下方式来声明依赖:   testCompile group: 'junit', name: 'junit', version: '4.0'   这里前面的testCompile是声明依赖的的方位,如 阅读详情

相关推荐

精细控制:在Gradle中配置项目依赖版本范围

通过本文的详细介绍,你应该已经了解了如何在Gradle中配置项目依赖的版本范围。通过灵活配置依赖版本,可以提高项目的可维护性和稳定性。希望本文能帮助你在实际应用中更好地管理项目依赖。

2401_85702623的博客 968

Gradle版本的统一管理

gradle中版本的统一管理配置

xiaoguangtouqiang的博客 1924

移动开发里Gradle的依赖版本范围管理

在现代移动应用开发中,依赖管理是项目构建的核心环节之一。Gradle作为Android官方推荐的构建工具,其依赖管理系统功能强大但同时也相当复杂。理解Gradle依赖解析的基本原理掌握各种版本范围声明方式的语义差异学习避免和处理依赖冲突的最佳实践了解高级依赖管理技巧本文主要关注Android开发场景,但大部分概念也适用于其他基于Gradle的项目。首先介绍Gradle依赖管理的基本概念深入解析版本范围的各种声明方式探讨依赖解析机制和冲突解决策略通过实际案例展示常见问题的解决方案。

移动开发前沿的博客 859

Gradle 升级到 3.0.0 之后 implementation 与 compile 之间的区别

在 Android studio 升级到 3.0 版本之后,dependencies 中  implementation 替代 compile。 那么新版的 Gradle 中 implementation 和 compile 有什么区别呢? 当项目依赖关系是 app > module 时,在 module 的 build.gradle 下: 1.如果使用 implementation 依赖的库,可以防止外部使用。 2.如果通过 compile 或 api 依赖的库,是可以在外部使用该 mod

u013134722的博客 718

保姆级教程:用杰理701N可视化SDK搞定ANC降噪配置(从工具到代码全流程)

本文提供了一份详细的杰理701N可视化SDK配置ANC降噪功能的教程,涵盖从开发环境搭建到代码集成的全流程。通过图形化工具和代码示例,帮助开发者快速掌握ANC参数配置技巧,优化降噪效果,解决常见问题。

weixin_30616969的博客 451

混合编程实战:C#集成C++ PCL点云处理库,打造跨语言动态链接库

本文详细介绍了C#与C++混合编程实战,重点讲解如何通过动态链接库(DLL)集成C++ PCL点云处理库,实现跨语言协作。内容涵盖环境配置、PCL功能封装、C#调用DLL的完整方案,以及性能优化和错误处理等进阶技巧,帮助开发者高效处理大规模点云数据,提升工业软件开发效率。

weixin_42620913的博客 382

android gradle 3.0.0 中依赖指令implementation、api 的区别

AndroidStudio升级到3.0之后,gradle版本也随之升级到了3.0.0版本。classpath 'com.android.tools.build:gradle:3.0.0'在新建一个Android工程的时候,build.gradle中的依赖默认为implementation,而不是之前的compile。另外,gradle 3.0.0版本以上,还有依赖指令api。本文主要介绍下imple

杨小熊学习笔记 3万+

Homebrew高效升级与国内镜像源配置全攻略

本文详细介绍了如何通过配置国内镜像源(如清华、中科大、阿里云)来高效升级Homebrew,解决国内开发者访问GitHub仓库速度慢的问题。文章提供了从基础配置到永久生效的完整教程,包括常见问题解决和进阶技巧,帮助开发者大幅提升软件包管理效率。

weixin_28835551的博客 416

【Gradle声明版本系列2】声明丰富版本

【Gradle声明版本系列】声明丰富版本

wang2leee的博客 912

【智能车Code review】—曲率计算、最小二乘法拟合

【1】曲率计算函数 选三个点计算曲率 float process_curvity(byte x1, byte y1, byte x2, byte y2, byte x3, byte y3) { float K; int S_of_ABC = ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2; //面积的符号表示方向 byte q1 = (byte)((x2 - x1) * (x2 - x1) + (y2 - y1) *

hanhan的博客 1万+

卸载python弹框报错:Could not set file security for file ‘D:\Config.Msi\abd5.rbf‘. Error: 5. Verify...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 6492

WPS二次开发系列:Gradle版本、AGP插件与Java版本的对应关系

android开发 Gradle配置 AGP和gradle版本对照关系,java对照关系

weixin_43880576的博客 2058

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

AI人人懂 564

gradle版本和插件以及buildToolsVersion之间的对应关系

Gradle Plugin Version: Gradle 插件版本 Gradle Version: Gradle发行版本 Android SDK Build Tools Version:Android SDK 构建工具版本 一 概念 1.Gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置 位置:项目主目录 gradle 文件夹->w.

LJ_GOD的博客 1万+

基于ESP32的智能停车场管理系统开发

智能停车场管理系统通过引入物联网(IoT)技术,实现对停车场内车辆的实时监控、空闲车位的管理、车辆的入场与出场控制等功能,大大提高了停车场的利用率和管理效率。通过集成物联网技术、云平台以及先进的传感器和执行器,系统不仅能实时监控停车场的车位状态,还能提供更好的用户体验。本文将介绍如何基于ESP32开发一个智能停车场管理系统,涵盖系统架构、硬件选择、软件开发以及最新技术的应用,帮助开发者实现高效的智能停车管理。ESP32的代码主要负责处理车位传感器的数据,控制LED指示灯的状态,以及与云平台进行数据交互。

2201_76125393的博客 913

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据

背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。

boss-dog 1330

【Gradle-6】一文搞懂Gradle的依赖管理和版本决议

当有多个相同依赖时,不管是哪里引入的,gradle总会优先选择最高版本;当多个相同依赖没有版本约束条件时,优先选择主模块(app)中的版本,且默认有strictly约束版本;force优先级高于strictly,如果二者同时显式声明,则会报错,推荐使用strictly;同时使用force强制依赖版本时,版本决议的结果跟依赖顺序有关,最早force的版本优先;本文主要介绍了Gradle的依赖管理和版本决议。依赖管理里面需要关注的是依赖方式,不同的依赖方式决定了是否会依赖传递;

yechaoa 4897

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Gradle 版本与 Android Gradle Plugin 版本对应关系

Android Gradle插件与Gradle版本兼容性对照表展示了从3.0.x到8.0.x版本的对应关系,并标注了适配的Flutter版本。随着Gradle版本升级,配置文件逐步从Groovy脚本转向Kotlin DSL,构建脚本结构也发生变化:从传统的buildscript配置到7.x时期的插件管理块,再到8.x时期的plugins{}块和集中式依赖管理。同时,仓库配置从jcenter迁移到mavenCentral,Kotlin支持不断加强,体现了Android构建工具向现代化、标准化发展的趋势。

Goals1989的博客 1897

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Gradle系列【3】如何引入依赖和插件

是指向构建、测试或运行模块添加所需的另一软件的声明。软件项目在大多数情况下都不是孤立存在的,项目依赖于可重用功能的代码库(第三方JAR包),一般整个项目都会分解为很多模块以组成模块化系统。是一种以自动化方式声明、解析和使用项目所需依赖的技术。Gradle 内置了对依赖项管理的支持,下图中所示基本流程,会从互联网的存储库中获取依赖到本地或缓存中,然后给当前程序提供依赖支持:我们在编写代码时,除了JDK,肯定还需要用到开源的依赖项,这些依赖都存放在二进制存储库中,比如(Maven 中央仓库)和存储库。Gradl

记录知识、锤炼自我 8337

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Gradle 统一仓库地址和版本号

Gradle 统一仓库地址和版本号

薛瑄的博客 1601

java和gradle对应版本_Gradle Plugin Version和Gradle Version 对应关系

Project GradleAS建议升级到4.2。Plugin对应AS的版本,Plugin工具也要和Gradle对应上,否则某些语法不支持,如果是非必要的建议不要轻易升级。Gradle DSL method not found: 'exclude()'Gradle DSL method not found: 'run()'Gradle DSL method not found: 'module()...

weixin_36444910的博客 7240

如何管理Gradle Docker插件中的镜像依赖和版本解析

在现代微服务架构中,Docker镜像管理是每个开发团队面临的挑战之一。Gradle Docker插件提供了一套完整的镜像依赖和版本解析方案,让您能够轻松管理复杂的容器化应用依赖关系。本文将深入探讨如何利用这个强大的插件来优化您的Docker工作流。 ## 为什么需要镜像依赖管理? 在传统的Docker开发中,我们经常遇到以下问题: 1. **版本冲突**:不同服务使用相同基础镜像的不同版本

gitblog_00861的博客 696

如何查看、管理和升级 Android Gradle Plugin 版本

Android Gradle Plugin 是 Android 项目构建的重要组件,其版本的选择和管理直接影响开发效率和构建质量。通过掌握版本查看、升级方法和常见问题解决策略,可以在项目中更加高效地使用 AGP,确保开发流程的稳定和高效。同时,规范的版本管理和升级策略能够帮助团队降低潜在风险,提升整体生产力。

weixin_37600397的博客 7748

修改gradle版本android,Android Studio 修改Gradle版本

Android Studio 修改Gradle版本2020年07月24日|萬仟网移动技术 |我要评论Android Studio 修改Gradle版本实际开发中,我们在使用一些demo或者更换电脑之后发现项目突然不能运行了,这个大多的情况是我们的gradle版本导致的问题。或者一直在下载相应的gradle包,但是特别慢,完了还是回报下载失败!而这...

weixin_39638929的博客 6466

【gradle冲突解决1】 降级版本和排除依赖项 &&升级传递依赖项的版本

【gradle冲突解决1】 降级版本和排除依赖项 &&升级传递依赖项的版本

wang2leee的博客 4125

Gradle 如何确保依赖的版本兼容性

【代码】Gradle 如何确保依赖的版本兼容性。

hoiii187的博客 419
上一篇: Java包系列】Java Guava由来场景用法示例
下一篇: 【Gradle声明版本系列2】声明丰富版本
BigDataMLApplication
博客等级 码龄11年 7363粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值