Bazel构建报错:找不到@com_google_javascript_closure_library相关包
核心原因
Closure Library的新版本已将Soy(Closure Templates)拆分至独立仓库,若你的WORKSPACE配置拉取的是新版Closure Library,closure/goog/soy目录会不存在;或你拉取的Closure Library版本本身不包含该目录。
排查与修复步骤
检查Closure Library依赖版本:
打开项目根目录的WORKSPACE文件,确认@com_google_javascript_closure_library的拉取版本。若版本较新(如2021年后的版本),Soy已迁移至com_google_closure_templates独立仓库,需添加该依赖:http_archive( name = "com_google_closure_templates", urls = ["https://github.com/google/closure-templates/archive/refs/tags/v20240402.tar.gz"], strip_prefix = "closure-templates-20240402", )同时将BUILD文件中原本指向
@com_google_javascript_closure_library//closure/goog/soy的依赖,替换为@com_google_closure_templates//soy下对应目标(例如@com_google_closure_templates//soy:soyparse)。验证外部仓库内容:
执行命令拉取依赖并检查目录:bazel fetch @com_google_javascript_closure_library//... # 进入外部依赖目录查看 cd bazel-<你的工作区名称>/external/com_google_javascript_closure_library/closure/goog/ ls -l若不存在
soy目录,说明当前依赖版本不包含该模块,需切换到仍包含Soy的旧版Closure Library(如v20200517),或改用独立的Closure Templates仓库。确认依赖加载配置正确性:
若你已改用Git方式加载依赖,确保WORKSPACE中的git_repository配置正确,分支/标签指向包含closure/goog/soy的版本:git_repository( name = "com_google_javascript_closure_library", remote = "https://github.com/google/closure-library.git", tag = "v20200517", # 该版本仍包含soy目录 )
内容的提问来源于stack exchange,提问作者Lemito

