版本管理

返回构建工具


版本号规范

推荐遵循 语义化版本(SemVer):

主版本.次版本.修订版本[-预发布标识]
例:1.2.3 / 2.0.0-RC1 / 3.1.0-SNAPSHOT
变更类型升级位
不兼容的 API 变更主版本(MAJOR)
向后兼容的新功能次版本(MINOR)
向后兼容的 bug 修复修订版本(PATCH)

SNAPSHOT 与 RELEASE

类型说明可重复部署
1.0.0-SNAPSHOT开发中的快照版本是(每次都拉取最新)
1.0.0正式发布版本否(不可变)

快照版本仅用于开发阶段,发布前必须去掉 -SNAPSHOT


Maven 版本管理

查看 Maven 详细文档

dependencyManagement — 在父 pom 中集中声明版本,子模块引用时无需重复指定:

<!-- 父 pom -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.2.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
 
<!-- 子模块,无需写 version -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

属性统一管理版本号

<properties>
    <java.version>17</java.version>
    <spring-boot.version>3.2.0</spring-boot.version>
</properties>

Versions Maven Plugin

mvn versions:display-dependency-updates   # 检查可升级的依赖
mvn versions:display-plugin-updates       # 检查可升级的插件

Gradle 版本管理

查看 Gradle 详细文档

Version Catalog(推荐,Gradle 7.4+)— 统一在 gradle/libs.versions.toml 中管理:

[versions]
spring-boot = "3.2.0"
 
[libraries]
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" }
 
[plugins]
spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }
// build.gradle.kts
dependencies {
    implementation(libs.spring.boot.starter.web)
}

Dependency Locking — 锁定精确版本,保证构建可重现:

./gradlew dependencies --write-locks   # 生成 gradle.lockfile

BOM(Bill of Materials)

查看依赖管理

一个只含 <dependencyManagement> 的特殊 pom,统一管理一组相关依赖的版本。

常见 BOM:spring-boot-dependencies / spring-cloud-dependencies / jackson-bom