有没有人有一个简单的 zio-grpc 服务器,项目中也有 codegen,使用 Scala 3?
我从他们的 repo 开始使用 HelloWorld 项目,并尝试使用 scalaVersion := "3.1.0" 构建它
这是 plugins.sbt 中的相关部分:
libraryDependencies ++= Seq(
"com.thesamet.scalapb.zio-grpc" % "zio-grpc-codegen_2.13" % zioGrpcVersion,
"com.thesamet.scalapb" % "compilerplugin_2.13" % "0.11.1"
)
excludeDependencies ++= Seq(
ExclusionRule("org.scala-lang.modules", "scala-collection-compat_2.12"),
ExclusionRule("com.thesamet.scalapb", "protoc-bridge_2.12")
)
在 build.sbt 中:
libraryDependencies ++= Seq(
"io.grpc" % "grpc-netty" % grpcVersion,
"com.thesamet.scalapb" % "scalapb-runtime-grpc_2.13" % scalapb.compiler.Version.scalapbVersion
)
excludeDependencies ++= Seq(
ExclusionRule("org.scala-lang.modules", "scala-collection-compat_2.12"),
ExclusionRule("com.thesamet.scalapb", "protoc-bridge_2.12")
)
由于 Scala 3 可以使用 2.13 库,这就是我正在做的。(三个与 zio-grpc 相关的库中,一个是 zio-grpc-codegen,没有 Scala 3 版本,因此至少必须使用 2.13。)
我从具有上述版本的 sbt 收到此错误:
java.lang.NoSuchMethodError: scala.package$.Seq()Lscala/collection/immutable/Seq$; 在 protocbridge.gens$.java(gens.scala:17) 在 protocbridge.gens$.(gens.scala:11)
如果我删除任何一个 scala-collection-compat 排除项,我们会得到
[错误] 使用 ProjectRef(uri("file:/Users/xxx/dev/zio-grpc/examples/helloworld/project/"), "helloworld-build") 中冲突的跨版本后缀解决了模块:[错误] com.thesamet.scalapb:protoc-bridge _2.12, _2.13 [错误] com.thesamet.scalapb:compilerplugin _3, _2.13
简而言之,我找不到 Scala 2.13/3 版本的 zio-grpc-codegen、compilerplugin_3 和 scalapb-runtime-grpc 的任何排列,它们不会给出一些 sbt 冲突的跨版本后缀错误。