0

私は SBT が初めてで、gradle protobuf/grpc 構成を SBT に変換しようとしています。

scala コミュニティが私より前にこれを行っていたのだろうか?

このプラグインhttps://github.com/sbt/sbt-protobufを試しましたが、grpc コンパイルを有効にするための構成は提供されません...

どんな助けでも感謝します。

4

3 に答える 3

4

ScalaPBを使用して、Scala の gRPC スタブを生成できます。まず、プラグインを に追加しますproject/plugins.sbt

addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.1")
libraryDependencies += "com.trueaccord.scalapb" %% "compilerplugin" % "0.5.43"

次に、これをに追加しますbuild.sbt

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 によって取得されます。

ここに Scala gRPC プロジェクトの例があります。相互 TLS 認証、JSON Web トークンを使用したユーザー セッション、grpc-gatewayを介した JSON ゲートウェイ、およびHelmを介した Kubernetes へのデプロイを構成する方法を示します。

于 2016-10-31T14:35:22.137 に答える
2

実際、Gradle から SBT に移行しようとして、いくつかの問題に直面しました。

あなたが言ったように、sbt-protobufプラグインにはgrpc特定の設定はありませんが、可能ですが、再確認する必要があるいくつかの設定を次に示します。

  • のパスバージョンを設定しますprotoc

    version in PB.protobufConfig := "3.0.0" protoc in PB.protobufConfig := PATH_PROTOC

  • 必要に応じて、.protoファイルの場所を設定します (デフォルトはsrc/main/protobuf):

    sourceDirectory in PB.protobufConfig := baseDirectory.value / "src" / "main" / "proto"

  • 最後に、Eric Andersonprotocが言ったように、 used byの追加オプションを設定しますgrpc-java。最初のオプションは、protoc-gen-grpc-javaプラグイン ビンのパスを設定します。次に grpc-java の出力パスを次のように設定しますsbt-protobuf

    protocOptions in PB.protobufConfig ++= Seq( "--plugin=protoc-gen-grpc-java=" + PATH_GRPC_JAVA_PLUGIN, "--grpc-java_out=" + baseDirectory.value + "/target/src_managed/main/compiled_protobuf")

私は、これらすべてを整理したリポジトリを配置することになりました。ここにあります。お役に立てば幸いです。

于 2016-10-02T10:55:02.117 に答える
0

私は sbt に詳しくありませんが、sbt-protobuf は protoc プラグインをネイティブにサポートしていないか、ビルド済みのprotocまたはprotoc-gen-grpc-javaバイナリを使用していないようです。必要なフラグを手動で渡す必要があります。

このようなもの(テストされていません):

protocOptions in PB.protobufConfig ++= Seq(
    "--plugin=protoc-gen-grpc-java=path/to/protoc-gen-grpc-java", "--grpc-java_out=path/to/output/folder")

システムに合わせて「パス/へ」の部分を変更する必要があります。

于 2016-04-27T21:40:25.650 に答える