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

本文介绍了Gradle中如何声明版本及其范围,涉及版本排序规则、简单版本声明的语义差异,以及推荐使用无版本依赖和依赖关系约束来管理大型项目的版本控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BigDataMLApplication

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

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

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

打赏作者

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

抵扣说明:

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

余额充值