自定义依赖版本选择:如何列出1.0.0开头的版本并筛选?
如何列出并选择以特定前缀开头的依赖版本
当然有办法解决这个问题!我之前在维护多版本依赖的项目时也碰到过类似场景,给你分享几个实用的方案,分工具场景来说:
Gradle 环境下的方案
1. 用内置任务快速过滤
Gradle的dependencyInsight任务可以帮你查看某个依赖的所有可用版本,再结合命令行过滤就能拿到目标版本:
./gradlew dependencyInsight --dependency 你的依赖坐标(比如com.example:foo) --configuration compileClasspath | grep "^1\.0\.0"
替换成你实际的依赖坐标和配置(比如runtimeClasspath),就能输出所有以1.0.0开头的版本。
2. 自定义Gradle任务批量获取
如果需要更灵活的筛选,可以写个简单的自定义任务来遍历所有可用版本并过滤:
task listMatchingVersions { doLast { // 替换成你的依赖完整坐标 def targetDependency = "com.example:your-artifact" def repoResolver = project.repositories.resolverFactory.createResolver() def dependency = project.dependencies.create(targetDependency) // 获取该依赖的所有可用版本 def allVersions = repoResolver.resolveAll(dependency).collect { it.version } // 过滤出以1.0.0开头的版本 def matchingVersions = allVersions.findAll { it.startsWith("1.0.0") } println "找到以下匹配1.0.0开头的版本:" matchingVersions.each { println "- $it" } } }
执行./gradlew listMatchingVersions就能看到结果,之后你可以直接在resolutionStrategy里指定选中的版本:
configurations.all { resolutionStrategy { force "com.example:your-artifact:1.0.0-dev2" } }
Maven 环境下的方案
如果你用Maven,可以借助versions插件来查看所有可用版本,再过滤目标前缀:
mvn versions:display-dependency-updates | grep "1\.0\.0"
或者直接查依赖的仓库元数据来获取所有版本:
curl https://你的仓库地址/com/example/your-artifact/maven-metadata.xml | grep "<version>" | grep "1\.0\.0"
通用小技巧
不管用什么工具,都可以先拿到所有版本列表,再用文本过滤工具(比如grep、awk)筛选出以1.0.0开头的条目,这样就能快速定位到你需要的版本了。
内容的提问来源于stack exchange,提问作者Pawel M
相关产品推荐
相关产品推荐

