2
我在理解scalapb的语法时遇到了一些困难,特别是我试图为多项目SBT构建添加多个.proto源目录。将多个scalapb源目录添加到多项目SBT构建
我的项目结构如下:
/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文件移动到root/main/src/protobuf,它们编译得很好。