根据akka-grpc docs 的建议,我能够弄清楚如何正确外部化 protobuf 文件。
问题是我没有添加sbt-akka-grpc
sbt 所需的插件来识别.proto
文件并将它们包含在打包的 jar 中。如果没有这个插件.proto
,打包的 jar 中将不会有任何文件可用。
addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "1.1.0")
确保organization
在您的中添加设置以build.sbt
正确准备 jar。
organization := "com.iamsmkr"
此外,如果您希望将此 jar 交叉编译为多个版本,请在您的 中添加以下条目build.sbt
:
scalaVersion := "2.13.3"
crossScalaVersions := Seq(scalaVersion.value, "2.12.14")
然后发布:
$ sbt +publishLocal
发布适当的 jars 后,您现在可以将它们作为依赖项添加到客户端和服务器项目中,如下所示:
libraryDependencies +=
"com.iamsmkr" %% "prime-protobuf" % protobufSourceVersion % "protobuf-src"
你可以查看我正在开发的这个项目,看看它的实际效果。
替代方式
我想的另一种方法是,您可以将.proto
文件保存在root
目录中,然后在客户端和服务器中引用它们,build.sbt
如下所示:
PB.protoSources.in(Compile) := Seq(sourceDirectory.value / ".." / ".." / "proto")
签出此项目以查看它的实际效果。