Skip to content

Latest commit

 

History

History
102 lines (81 loc) · 2.42 KB

README.md

File metadata and controls

102 lines (81 loc) · 2.42 KB

Java Rules

Rule Description
java_proto_repositories Load WORKSPACE dependencies.
java_proto_compile Generate protobuf source files.
java_proto_library Generate and compiles protobuf source files.
java_proto_language_import Collect deps from a proto_language and expose them to dependent rules via java_import.

java_proto_repositores

Enable Java support by loading the dependencies in your workspace.

load("@org_pubref_rules_protobuf//java:rules.bzl", "java_proto_repositories")
java_proto_repositories()

java_proto_compile

This is a thin wrapper over the proto_compile rule having language @org_pubref_rules_protobuf//:java.

load("@org_pubref_rules_protobuf//java:rules.bzl", "java_proto_compile")

java_proto_compile(
  name = "protos",
  protos = ["message.proto"],
  with_grpc = True,
)
$ bazel build :protos
Target //:protos up-to-date:
  bazel-genfiles/protos.srcjar

java_proto_library

Pass the set of protobuf source files to the protos attribute. When depending on a java_proto_library target, it will automatically export @org_pubref_rules_protobuf//java:grpc_compiletime_deps for you.

load("@org_pubref_rules_protobuf//java:rules.bzl", "java_proto_library")

java_proto_library(
  name = "protolib",
  protos = ["message.proto"],
  with_grpc = True,
)
$ bazel build :protolib
Target //:protolib up-to-date:
  bazel-bin/protolib.jar

java_proto_language_import

When using the compiled library in other rules, you may need the compile-time or runtime dependencies. You can access these using the java_proto_language_import rule. There are several pre-defined ones in the BUILD file in this directory.

java_library(
  name = "mylib",
  srcs = ['MyApp.java'],
  deps = [
    ":protolib",
    "@org_pubref_rules_protobuf//java:grpc_compiletime_deps",
  ]
)
java_binary(
  name = "myapp",
  main_class = "example.MyApp",
  runtime_deps = [
    ":mylib",
    "@org_pubref_rules_protobuf//java:netty_runtime_deps",
  ]
)
# Run your app
$ bazel run :myapp

# Build a self-contained executable jar
$ bazel build :myapp_deploy.jar

Consult source files in the examples/helloworld/java directory for additional information.