Bazel项目添加Maven依赖执行@maven//:pin失败,maven_install.json为空
问题根因
该报错是Windows平台下rules_jvm_external工具的@maven//:pin目标执行异常导致:pin脚本依赖轻量JSON处理工具jq,但当前环境未正确加载到对应二进制文件,脚本无法完成依赖信息序列化,所以生成的maven_install.json为空。
修复方案
- 方案1:升级rules_jvm_external版本
4.2.0及以上版本的rules_jvm_external已经适配了Windows环境的jq自动拉取逻辑,你可以先更新WORKSPACE文件中rules_jvm_external的依赖版本,之后清理缓存重试即可。 - 方案2:手动安装jq到系统环境
下载Windows版本的jq二进制文件,重命名为jq.exe后放到系统PATH环境变量包含的目录(例如C:\Windows\System32),之后重新执行命令即可。 - 方案3:使用WSL环境执行命令
如果你本地配置了WSL子系统,可以直接在WSL终端中进入项目目录执行bazel run @maven//:pin,Linux环境下rules_jvm_external的依赖适配更完善,不会出现该类二进制缺失问题。
验证步骤
完成上述任意方案的配置后,先执行bazel clean --expunge清理所有旧的Bazel缓存,再重新运行bazel run @maven//:pin,即可正常生成非空的maven_install.json文件。
内容的提问来源于stack exchange,提问作者Mohit Jaiswal
相关产品推荐
相关产品推荐

