【问题标题】:Add Multiple scalapb Source Directories to Multi-Project SBT Build将多个 scalapb 源目录添加到多项目 SBT 构建
【发布时间】:2016-08-07 13:28:36
【问题描述】:

我在理解 scalapb 的语法时遇到了一些困难,特别是我正在尝试为多项目 SBT 构建添加多个 .proto 源目录。

我的项目结构如下:

/build.sbt
/main/src/protobuf
/common/main/src/protobuf
/client/main/src/protobuf

我的 build.sbt 如下:

name := "myApp"

import Dependencies._

import com.trueaccord.scalapb.{ScalaPbPlugin => PB}

val protoDirectories = Seq(
  file("common/src/main/protobuf"),
  file("client/src/main/protobuf")
)

sourceDirectories in PB.protobufConfig ++= protoDirectories

PB.protobufSettings ++ Seq(
  flatPackage := false
)

lazy val common = (project in file("common")).
  settings(Commons.settings: _*).
  settings(libraryDependencies ++= commonDependencies)

lazy val client = (project in file("client")).
  settings(Commons.settings: _*).
  settings(libraryDependencies ++= clientDependencies).
  dependsOn(common)

当我运行sbt compile 时,我收到以下错误消息:

[error] Reference to undefined setting: 
[error] 
[error]   sphere/*:sourceDirectories from myApp/*:sourceDirectories (<path_to_project_dir>\build.sbt:11)
[error]      Did you mean myApp/protobuf:sourceDirectories ?

有人可以指出我正确的方向吗?我在这里无法理解一些基本概念......

编辑

好的,所以我指向了 protoDirectories 的错误顺序。我已经修改了 build.sbt 以反映新的变化。我仍然有一个问题,我的 .proto 文件没有在子项目中编译。如果我将我的 .proto 文件移动到根目录 /main/src/protobuf,它们编译得很好。

【问题讨论】:

    标签: scala sbt scalapb


    【解决方案1】:

    如果两个项目都包含src/main/protobuf 中的文件,您需要分别为这两个项目启用 ScalaPB 插件。此示例还显示了如何设置导入搜索路径。一个完整的例子是https://github.com/thesamet/scalapb-test/tree/multiproject

    import com.trueaccord.scalapb.{ScalaPbPlugin => PB}
    
    version in PB.protobufConfig := "3.0.0-beta-2"
    
    lazy val common = (project in file("common")).
      settings(PB.protobufSettings)
    
    lazy val client = (project in file("client")).
      settings(PB.protobufSettings ++ Seq(
        // If you want proto files in client to import proto files in common.
        PB.includePaths in PB.protobufConfig += file("common/src/main/protobuf")
      )).
      dependsOn(common)
    

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 1970-01-01
      • 2015-05-31
      • 2013-11-02
      • 2015-09-25
      • 2013-05-10
      • 2021-05-28
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多