如何在Gradle中查找使用动态版本的传递依赖项?
Gradle项目排查动态版本依赖方案
方法1:使用内置dependencies命令附加参数
直接执行以下命令:
gradle dependencies --show-requested
这个命令输出的依赖树会同时展示依赖原始请求版本和最终解析的固定版本,你只需要搜索请求版本中包含+、latest.release、latest.integration、RELEASE这类动态版本标识的条目即可。
如果要针对指定配置排查(比如只查生产编译依赖),可以加上配置过滤:
gradle dependencies --configuration compileClasspath --show-requested
方法2:自定义Gradle任务精准输出所有动态依赖
直接在项目根目录的build.gradle中添加以下任务代码:
tasks.register('findDynamicDependencies') { doLast { def dynamicVersions = [] configurations.each { config -> if (config.canBeResolved) { config.incoming.resolutionResult.allDependencies.each { dep -> if (dep instanceof ResolvedDependencyResult) { def requested = dep.requested if (requested instanceof ModuleComponentSelector) { def version = requested.version // 匹配动态版本特征:带+、latest前缀、版本范围符号 if (version.contains('+') || version.startsWith('latest.') || version.matches(/\[.*\]/) || version.matches(/\(.*\)/)) { dynamicVersions.add("${requested.group}:${requested.module}:${version} -> 解析为: ${dep.selected.id.version} (所属配置: ${config.name})") } } } } } } if (dynamicVersions.empty) { println "未检测到任何动态版本依赖" } else { println "检测到的动态版本依赖列表:" dynamicVersions.unique().each { println "- ${it}" } } } }
添加后执行以下命令即可直接得到所有动态依赖的汇总列表:
gradle findDynamicDependencies
后续依赖锁定操作
如果排查到存在动态版本依赖,可通过Gradle的依赖锁定机制固定版本,操作步骤如下:
- 在
settings.gradle中开启全局依赖锁定:
dependencyLocking { lockAllConfigurations() }
- 执行命令生成锁定文件:
gradle dependencies --write-locks
- 后续构建时Gradle会自动使用锁定文件中的固定版本,无需每次解析动态版本。
内容的提问来源于stack exchange,提问作者fyrkov
相关产品推荐
相关产品推荐

