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

如何使用ScalaPB从测试目录的Protobuf文件生成代码?

解决ScalaPB仅从main/protobuf生成代码的问题

你已经配置了Test源集的代码生成目标,但忽略了关键一步——得明确告诉ScalaPB去哪里找Test目录下的Protobuf文件。默认情况下,ScalaPB只会扫描src/main/protobuf和src/test/protobuf,你的文件放在project/test/protobuf,不在默认扫描路径里,所以配置自然不会生效。

这里是完整的修复方案:

  1. 添加Test源集的Protobuf文件路径
    在你的build.sbt里加上这一行,把自定义的proto目录加入Test源集的扫描范围:

    PB.protoSources in Test += (baseDirectory.value / "project" / "test" / "protobuf")
    
  2. 保留你的Test生成目标配置
    你原来的配置是正确的,继续保留它,确保生成的代码输出到Test专属的sourceManaged目录:

    PB.targets in Test := Seq(scalapb.gen() -> (sourceManaged in Test).value)
    
  3. 确认插件依赖正确引入
    检查project/plugins.sbt里是否正确配置了ScalaPB插件:

    addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.6")
    libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf"
    

完成配置后,运行sbt test:compile触发Test源集的编译流程,ScalaPB就会扫描project/test/protobuf下的myproto.proto,并生成对应的Scala代码到Test的sourceManaged目录里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:48