You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行bazel run @maven//:pin报FileNotFoundException,需生成maven_install.json

问题解决:Bazel rules_jvm_external pin命令找不到maven_install.json

错误原因

你在MODULE.bazel中指定了lock_file = "//backend:maven_install.json",但该文件尚未生成。Bzlmod模式下,rules_jvm_external的maven模块扩展在加载时会尝试读取这个锁文件,因此触发了文件不存在的错误。

解决方案

不需要预先创建maven_install.json文件,只需调整配置和命令步骤即可自动生成:

  1. 临时注释lock_file配置
    修改你的MODULE.bazel,暂时注释掉lock_file行,让Bazel能正常加载扩展:

    maven.install(
        artifacts = [
            "io.grpc:grpc-netty:1.38.0",
            "org.springframework.boot:spring-boot-starter:2.5.2",
            "org.springframework.boot:spring-boot-starter-web:2.5.2",
        ],
        fetch_sources = True,
        # lock_file = "//backend:maven_install.json",
    )
    
  2. 执行pin命令并指定输出路径
    运行pin命令时通过--output参数指定生成的锁文件位置为backend目录:

    bazel run @maven//:pin -- --output=backend/maven_install.json
    
  3. 恢复lock_file配置
    重新打开MODULE.bazel的lock_file注释:

    maven.install(
        artifacts = [
            "io.grpc:grpc-netty:1.38.0",
            "org.springframework.boot:spring-boot-starter:2.5.2",
            "org.springframework.boot:spring-boot-starter-web:2.5.2",
        ],
        fetch_sources = True,
        lock_file = "//backend:maven_install.json",
    )
    
  4. 同步依赖
    执行同步命令让Bazel识别新的锁文件:

    bazel sync
    

关键说明

Bzlmod模式下的rules_jvm_external与传统WORKSPACE模式的行为不同:加载模块扩展时会校验lock_file的存在性,因此不能先配置不存在的锁文件路径,必须先生成文件再关联配置。pin命令的--output参数可以灵活指定锁文件的生成位置,匹配你想要放在backend目录的需求。

内容的提问来源于stack exchange,提问作者Prasanth Kommini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:55:13