Maven 版本管理是如何工作的?如何管理依赖版本?
Maven 版本管理遵循语义化版本规范(Semantic Versioning),使用三段式版本号格式:MAJOR.MINOR.PATCH。理解 Maven 版本管理对于依赖管理和项目发布至关重要。版本号格式:MAJOR(主版本号):不兼容的 API 修改MINOR(次版本号):向下兼容的功能性新增PATCH(修订号):向下兼容的问题修正版本号示例:1.0.0:第一个稳定版本1.2.3:主版本 1,次版本 2,修订号 32.0.0:不兼容的主版本升级版本范围限定符:精确版本:1.0.0,只使用指定版本范围版本:[1.0,2.0):大于等于 1.0 且小于 2.0(1.0,2.0]:大于 1.0 且小于等于 2.0[1.0,]:大于等于 1.0[,1.0]:小于等于 1.0通配符版本:1.0.* 或 1.0:1.0.x 的任意版本1.* 或 1:1.x 的任意版本最新版本:LATEST:最新发布版本RELEASE:最新稳定版本快照版本:1.0-SNAPSHOT,开发中的版本SNAPSHOT 版本:SNAPSHOT 是 Maven 特有的版本标识,表示开发中的版本每次构建时,Maven 会检查远程仓库是否有更新的 SNAPSHOT 版本SNAPSHOT 版本不应该在生产环境中使用发布时应该将 SNAPSHOT 替换为正式版本号版本管理最佳实践:使用 dependencyManagement 统一管理版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.20</version> </dependency> </dependencies></dependencyManagement>使用 BOM(Bill of Materials)管理版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>使用属性定义版本号:<properties> <spring.version>5.3.20</spring.version> <mybatis.version>3.5.9</mybatis.version></properties>版本冲突解决:最短路径优先:选择依赖路径最短的版本声明顺序优先:选择在 pom.xml 中先声明的版本强制指定版本:直接声明需要的版本覆盖传递依赖版本发布流程:开发阶段使用 SNAPSHOT 版本测试通过后,移除 SNAPSHOT 标识使用 mvn release:prepare 准备发布使用 mvn release:perform 执行发布发布到仓库供其他项目使用版本检查命令:mvn versions:display-dependency-updates:查看可更新的依赖mvn versions:display-plugin-updates:查看可更新的插件mvn versions:display-property-updates:查看可更新的属性mvn versions:use-latest-releases:更新到最新稳定版本注意事项:避免使用 LATEST 和 RELEASE,可能导致构建不稳定生产环境不使用 SNAPSHOT 版本定期更新依赖版本,修复安全漏洞使用版本范围时要谨慎,避免引入不兼容的更新在 CI/CD 流程中锁定依赖版本,确保构建可重现合理的版本管理能够提高项目的稳定性和可维护性。