SBT Settings
#
Basic InstallationTo automatically generate Scala case classes for your messages add ScalaPB's sbt plugin to your project. Create a file named project/plugins.sbt
containing the following line (or add the following lines if a file with this name already exists):
Add the following line to your build.sbt
:
Running the compile
command in sbt will generate Scala sources from
your protos and compile them. If you just want to generate Scala sources for your protocol buffers without compiling them, run protocGenerate
.
Additionally, if you need customizations from
scalapb/scalapb.proto or anything from google/protobuf/*.proto
, add the
following to your build.sbt
:
#
DefaultsThe plugin assumes your proto
files are under src/main/protobuf
,
however this is configurable using the Compile / PB.protoSources
setting.
By default, sbt-protoc
invokes protoc
3.x that is shipped with protoc-jar
.
If you would like to run a different version of protoc
:
See all available options in sbt-protoc documentation
#
Java ConversionsTo enable Java conversions add the following to your build.sbt:
#
gRPCGenerating gRPC stubs for services is enabled by default. To disable:
#
Additional options to the generatorOption | scalapbc | Description |
---|---|---|
flatPackage | flat_package | When set, ScalaPB will not append the protofile base name to the package name. |
javaConversions | java_conversions | Generates in the companion object two functions, toJavaProto and fromJavaProto that convert between the Scala case class and the Java protobufs. For the generated code to compile, the Java protobuf code need to be also generated or available as a library dependency. |
grpc | grpc | Generates gRPC code for services. Default is true in scalapb.gen , and need to be explicitly specified in scalapbc . |
singleLineToProtoString | single_line_to_proto_string | By default, ScalaPB generates a toProtoString() method that renders the message as a multi-line format (using TextFormat.printToUnicodeString ). If set, ScalaPB generates toString() methods that use the single line format. |
asciiFormatToString | ascii_format_to_string | Setting this to true, overrides toString to return a standard ASCII representation of the message by calling toProtoString . |
lenses | no_lenses | By default, ScalaPB generates lenses for each message for easy updating. If you are not using this feature and would like to reduce code size or compilation time, you can set this to false and lenses will not be generated. |
retainSourceCodeInfo | retain_source_code_info | Retain source code information (locations, comments) provided by protoc in the descriptors. Use the location accessor to get that information from a descriptor. |
scala3Sources | scala3_sources | If set, generates sources that are error-free under -source future with Scala 3, or Xsource:3 with Scala 2.13. |