如何将Maven的versions:use-latest-versions配置迁移至Gradle
实现方案
1. 引入版本管理插件
Gradle生态中可使用com.github.ben-manes.versions插件实现依赖版本检查能力,该插件支持自定义版本过滤规则,完全可匹配你原Maven配置的需求。
在build.gradle中引入插件:
plugins { id "com.github.ben-manes.versions" version "0.51.0" }
2. 配置版本过滤规则
添加如下配置实现仅替换版本限定符、不修改主/次/增量版本号的效果:
// 匹配x.y.z-xxx格式的版本号,提取前三位数字版本段 def versionSegmentPattern = ~/^(\d+)\.(\d+)\.(\d+)(?:-.+)?$/ tasks.named("dependencyUpdates").configure { rejectVersionIf { def currentMatch = versionSegmentPattern.matcher(currentVersion) def candidateMatch = versionSegmentPattern.matcher(candidate.version) // 版本格式不匹配、或者前三位版本号不一致的候选版本直接拒绝 if (!currentMatch.matches() || !candidateMatch.matches()) { return true } def (_, currMajor, currMinor, currIncremental) = currentMatch[0] def (_, candMajor, candMinor, candIncremental) = candidateMatch[0] return currMajor != candMajor || currMinor != candMinor || currIncremental != candIncremental } // 禁止使用快照版本,和原Maven配置allowSnapshots=false效果一致 rejectSnapshots = true }
3. 执行版本更新
执行命令./gradlew dependencyUpdates即可生成符合规则的可升级依赖列表,仅会列出前三位版本号完全一致、仅限定符更新的候选版本。
如果需要自动替换build.gradle中的版本号,可搭配gradle-use-latest-versions-plugin使用,上述版本过滤规则会自动生效,不会出现跨版本升级的问题。
内容的提问来源于stack exchange,提问作者kolobok_ua
相关产品推荐
相关产品推荐

