github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/docs/scala.md (about) 1 --- 2 layout: default 3 title: scala 4 permalink: examples/scala 5 parent: Examples 6 --- 7 8 # scala example 9 10 `bazel test //example/golden:scala_test` 11 12 ## `BUILD.bazel` (after gazelle) 13 14 ```python 15 load("@rules_proto//proto:defs.bzl", "proto_library") 16 load("@build_stack_rules_proto//rules/scala:grpc_scala_library.bzl", "grpc_scala_library") 17 load("@build_stack_rules_proto//rules:proto_compile.bzl", "proto_compile") 18 19 proto_library( 20 name = "syntax_proto", 21 srcs = [ 22 "noun.proto", 23 "package.proto", 24 "pronoun.proto", 25 "service.proto", 26 ], 27 visibility = ["//visibility:public"], 28 deps = [ 29 "//proto:proto_proto", 30 "@scalaapis//scalapb:scalapb_proto", 31 ], 32 ) 33 34 grpc_scala_library( 35 name = "syntax_scala_library", 36 srcs = [ 37 "syntax_akka_grpc.srcjar", 38 "syntax_scala.srcjar", 39 ], 40 visibility = ["//visibility:public"], 41 deps = [ 42 "//lib:scala", 43 "//proto:proto_scala_library", 44 "@com_google_protobuf//:protobuf_java", 45 "@maven_akka//:com_lightbend_akka_grpc_akka_grpc_runtime_2_12", 46 "@maven_akka//:com_typesafe_akka_akka_actor_2_12", 47 "@maven_akka//:com_typesafe_akka_akka_http_core_2_12", 48 "@maven_akka//:com_typesafe_akka_akka_stream_2_12", 49 "@maven_scala//:com_thesamet_scalapb_lenses_2_12", 50 "@maven_scala//:com_thesamet_scalapb_scalapb_runtime_2_12", 51 "@maven_scala//:com_thesamet_scalapb_scalapb_runtime_grpc_2_12", 52 "@maven_scala//:io_grpc_grpc_api", 53 "@maven_scala//:io_grpc_grpc_protobuf", 54 "@maven_scala//:io_grpc_grpc_stub", 55 "@scalaapis//scalapb:scalapb_proto_scala_library", 56 ], 57 ) 58 59 proto_compile( 60 name = "syntax_scala_compile", 61 options = {"@build_stack_rules_proto//plugin/scalapb/scalapb:protoc-gen-scala": ["grpc"]}, 62 outputs = [ 63 "syntax_akka_grpc.srcjar", 64 "syntax_scala.srcjar", 65 ], 66 plugins = [ 67 "@build_stack_rules_proto//plugin/akka/akka-grpc:protoc-gen-akka-grpc", 68 "@build_stack_rules_proto//plugin/scalapb/scalapb:protoc-gen-scala", 69 ], 70 proto = "syntax_proto", 71 ) 72 ``` 73 74 ## `BUILD.bazel` (before gazelle) 75 76 ```python 77 ``` 78 79 ## `WORKSPACE` 80 81 ```python 82 # ---------------------------------------------------- 83 # scala 84 # ---------------------------------------------------- 85 86 load("@build_stack_rules_proto//deps:scala_deps.bzl", "scala_deps") 87 88 scala_deps() 89 90 load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config") 91 92 scala_config(scala_version = "2.12.18") 93 94 load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories") 95 96 scala_repositories() 97 98 load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains") 99 100 scala_register_toolchains() 101 102 # ---------------------------------------------------- 103 # maven 104 # ---------------------------------------------------- 105 106 load( 107 "@rules_jvm_external//:defs.bzl", 108 "maven_install", 109 ) 110 111 maven_install( 112 name = "maven_scala", 113 artifacts = [ 114 "com.thesamet.scalapb:lenses_2.12:0.11.10", 115 "com.thesamet.scalapb:scalapb-json4s_2.12:0.12.0", 116 "com.thesamet.scalapb:scalapb-runtime_2.12:0.11.10", 117 "com.thesamet.scalapb:scalapb-runtime-grpc_2.12:0.11.10", 118 "com.thesamet.scalapb:scalapbc_2.12:0.11.10", 119 "org.json4s:json4s-core_2.12:4.0.3", 120 ], 121 fetch_sources = True, 122 repositories = ["https://repo1.maven.org/maven2"], 123 ) 124 125 # ---------------------------------------------------- 126 # akka 127 # ---------------------------------------------------- 128 129 maven_install( 130 name = "maven_akka", 131 artifacts = [ 132 "com.lightbend.akka.grpc:akka-grpc-codegen_2.12:2.1.3", 133 "com.lightbend.akka.grpc:akka-grpc-runtime_2.12:2.1.3", 134 ], 135 fetch_sources = True, 136 repositories = ["https://repo1.maven.org/maven2"], 137 ) 138 139 # ---------------------------------------------------- 140 # proto_repository 141 # ---------------------------------------------------- 142 143 load("@build_stack_rules_proto//rules/proto:proto_repository.bzl", "proto_repository") 144 145 proto_repository( 146 name = "scalaapis", 147 build_directives = ["gazelle:proto_language scala enabled true"], 148 build_file_generation = "on", 149 build_file_proto_mode = "file", 150 cfgs = ["//:config.yaml"], 151 sha256 = "1ac039f79b0825fe2e7e5ddf24e330632d63b70a7a42bfd39ded5bb1fb648811", 152 # the typical importpath is 'scalapb/scalapb.proto', so strip the prefix up 153 # to that directory. 154 strip_prefix = "ScalaPB-a4e0e02c0f5b160877d5f97f6902dbec4c633afe/protobuf", 155 type = "zip", 156 urls = ["https://codeload.github.com/scalapb/ScalaPB/zip/a4e0e02c0f5b160877d5f97f6902dbec4c633afe"], 157 ) 158 ```