SBT协议grpc配置

SBT协议grpc配置,sbt,protocol-buffers,grpc,Sbt,Protocol Buffers,Grpc,我是SBT新手,我正在尝试将gradle protobuf/grpc配置转换为SBT 我想知道scala社区在我之前是否做过这件事 我尝试过这个插件,但它没有提供任何配置来启用grpc编译 感谢您的帮助。我不熟悉sbt,但sbt protobuf似乎不支持protoc插件或使用预构建或二进制文件。您将需要手动通过测试 类似这样(未经测试): 您需要更改“路径/到”部分以适应您的系统。我不熟悉sbt,但sbt protobuf似乎不支持protoc插件或使用预构建或二进制文件。您将需要手动通过测试

我是SBT新手,我正在尝试将gradle protobuf/grpc配置转换为SBT

我想知道scala社区在我之前是否做过这件事

我尝试过这个插件,但它没有提供任何配置来启用grpc编译


感谢您的帮助。

我不熟悉sbt,但sbt protobuf似乎不支持protoc插件或使用预构建或二进制文件。您将需要手动通过测试

类似这样(未经测试):


您需要更改“路径/到”部分以适应您的系统。

我不熟悉sbt,但sbt protobuf似乎不支持protoc插件或使用预构建或二进制文件。您将需要手动通过测试

类似这样(未经测试):


您需要更改“路径/到”部分以适应您的系统。

实际上,我自己在尝试从Gradle迁移到SBT时遇到了几个问题

正如您所说,
sbt protobuf
插件没有任何
grpc
特定设置,但这是可能的,这里有两个设置您应该仔细检查:

  • 设置
    协议的路径和版本

    PB.protobufConfig中的版本:=“3.0.0” PB.protobufConfig中的protoc:=PATH_protoc

  • 如果需要,设置
    .proto
    文件的位置(默认为
    src/main/protobuf
    ):

    PB.protobufConfig中的sourceDirectory:=baseDirectory.value/“src”/“main”/“proto”

  • 最后,如前所述,设置由
    GRPCJava
    使用的
    protoc
    的额外选项。第一个选项设置您的
    protoc gen grpc java
    插件箱的路径;第二,将grpc java的输出路径设置为与sbt protobuf相同:

    PB.protobufConfig++=Seq中的协议( “--plugin=protoc gen grpc java=“+PATH\u grpc\u java\u plugin, “--grpc-java_out=“+baseDirectory.value+”/target/src_managed/main/compiled_protobuf”)


我最终建立了一个存储库,把所有这些都整理好了,希望有帮助

实际上,我自己在尝试从Gradle迁移到SBT时遇到了几个问题

正如您所说,
sbt protobuf
插件没有任何
grpc
特定设置,但这是可能的,这里有两个设置您应该仔细检查:

  • 设置
    协议的路径和版本

    PB.protobufConfig中的版本:=“3.0.0” PB.protobufConfig中的protoc:=PATH_protoc

  • 如果需要,设置
    .proto
    文件的位置(默认为
    src/main/protobuf
    ):

    PB.protobufConfig中的sourceDirectory:=baseDirectory.value/“src”/“main”/“proto”

  • 最后,如前所述,设置由
    GRPCJava
    使用的
    protoc
    的额外选项。第一个选项设置您的
    protoc gen grpc java
    插件箱的路径;第二,将grpc java的输出路径设置为与sbt protobuf相同:

    PB.protobufConfig++=Seq中的协议( “--plugin=protoc gen grpc java=“+PATH\u grpc\u java\u plugin, “--grpc-java_out=“+baseDirectory.value+”/target/src_managed/main/compiled_protobuf”)

我最终建立了一个存储库,把所有这些都整理好了,希望有帮助

您可以使用为Scala生成gRPC存根。首先,将插件添加到您的
项目/plugins.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.1")
libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.5.43"
libraryDependencies ++= Seq(
  "io.grpc" % "grpc-netty" % "1.0.1",
  "io.grpc" % "grpc-stub" % "1.0.1",
  "io.grpc" % "grpc-auth" % "1.0.1",
  "com.trueaccord.scalapb" %% "scalapb-runtime-grpc" % "0.5.43",
  "io.netty" % "netty-tcnative-boringssl-static" % "1.1.33.Fork19",  // SSL support
  "javassist" % "javassist" % "3.12.1.GA"  // Improves Netty performance
)

PB.targets in Compile := Seq(
  scalapb.gen(grpc = true, flatPackage = true) -> (sourceManaged in Compile).value
)
然后,将其添加到您的
build.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.1")
libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.5.43"
libraryDependencies ++= Seq(
  "io.grpc" % "grpc-netty" % "1.0.1",
  "io.grpc" % "grpc-stub" % "1.0.1",
  "io.grpc" % "grpc-auth" % "1.0.1",
  "com.trueaccord.scalapb" %% "scalapb-runtime-grpc" % "0.5.43",
  "io.netty" % "netty-tcnative-boringssl-static" % "1.1.33.Fork19",  // SSL support
  "javassist" % "javassist" % "3.12.1.GA"  // Improves Netty performance
)

PB.targets in Compile := Seq(
  scalapb.gen(grpc = true, flatPackage = true) -> (sourceManaged in Compile).value
)
现在,您可以将.proto文件放入
src/main/protobuf
中,它们将被ScalaPB拾取

我有一本书。它展示了如何配置相互TLS身份验证、使用JSON Web令牌的用户会话、通过JSON网关以及通过部署到Kubernetes。

您可以使用它为Scala生成gRPC存根。首先,将插件添加到您的
项目/plugins.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.1")
libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.5.43"
libraryDependencies ++= Seq(
  "io.grpc" % "grpc-netty" % "1.0.1",
  "io.grpc" % "grpc-stub" % "1.0.1",
  "io.grpc" % "grpc-auth" % "1.0.1",
  "com.trueaccord.scalapb" %% "scalapb-runtime-grpc" % "0.5.43",
  "io.netty" % "netty-tcnative-boringssl-static" % "1.1.33.Fork19",  // SSL support
  "javassist" % "javassist" % "3.12.1.GA"  // Improves Netty performance
)

PB.targets in Compile := Seq(
  scalapb.gen(grpc = true, flatPackage = true) -> (sourceManaged in Compile).value
)
然后,将其添加到您的
build.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.1")
libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.5.43"
libraryDependencies ++= Seq(
  "io.grpc" % "grpc-netty" % "1.0.1",
  "io.grpc" % "grpc-stub" % "1.0.1",
  "io.grpc" % "grpc-auth" % "1.0.1",
  "com.trueaccord.scalapb" %% "scalapb-runtime-grpc" % "0.5.43",
  "io.netty" % "netty-tcnative-boringssl-static" % "1.1.33.Fork19",  // SSL support
  "javassist" % "javassist" % "3.12.1.GA"  // Improves Netty performance
)

PB.targets in Compile := Seq(
  scalapb.gen(grpc = true, flatPackage = true) -> (sourceManaged in Compile).value
)
现在,您可以将.proto文件放入
src/main/protobuf
中,它们将被ScalaPB拾取


我有一本书。它展示了如何配置相互TLS身份验证、使用JSON Web令牌的用户会话、一个JSON网关via,以及如何通过部署到Kubernetes。

感谢分享,我只是将protobuf生成隔离到一个单独的gralde迷你项目中。老实说sbt是垃圾,我会不惜一切代价避免使用它。。。遗憾的是,我们有一个游戏框架。感谢大家的分享,我只是将protobuf一代隔离到一个单独的gralde迷你项目中。老实说sbt是垃圾,我会不惜一切代价避免使用它。。。可悲的是,我们有一个游戏框架。。