Skip to content

Latest commit

 

History

History
124 lines (102 loc) · 3.51 KB

README.md

File metadata and controls

124 lines (102 loc) · 3.51 KB

bazel avro rules

Build Status

Bazel rules for generating java sources and libraries from avro schemas

Rules

Getting started

To use the Avro rules, add the following to your projects WORKSPACE file

# rules_avro depends on rules_jvm_external: https://github.com/bazelbuild/rules_jvm_external
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

RULES_JVM_EXTERNAL_TAG = "4.1"
RULES_JVM_EXTERNAL_SHA = "f36441aa876c4f6427bfb2d1f2d723b48e9d930b62662bf723ddfb8fc80f0140"

http_archive(
    name = "rules_jvm_external",
    sha256 = RULES_JVM_EXTERNAL_SHA,
    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)


RULES_AVRO_VERSION = "96670d5c4a0a3e0f25f4177336e1fa94eba8be5a"
RULES_AVRO_SHA256 = "3bd69872ec72904e843762f7b3532fd1125215503a635a24f6c8037c75b299bc"

http_archive(
    name = "io_bazel_rules_avro",
    strip_prefix = "rules_avro-%s" % RULES_AVRO_VERSION,
    url = "https://github.com/chenrui333/rules_avro/archive/%s.tar.gz" % RULES_AVRO_VERSION,
    sha256 = RULES_AVRO_SHA256
)

load("@io_bazel_rules_avro//avro:avro.bzl", "avro_repositories")
avro_repositories()
# or specify a version
avro_repositories(version = "1.9.1")

Then in your BUILD file, just add the following so the rules will be available:

load("@io_bazel_rules_avro//avro:avro.bzl", "avro_gen", "avro_java_library")

avro_gen

avro_gen(name, srcs, strings, encoding)

Generates .srcjar containing generated .java source files from a collection of .avsc schemas

Attributes
name Name, required

A unique name for this rule.

srcs List of labels, required

List of .avsc files used as inputs for code generation

strings Boolean, optional

use java.lang.String instead of Utf8.

encoding String, optional

set the encoding of output files.

avro_tools Label, optional

Label to the runnable Avro tools jar. Default, uses the tools jar associated with the downloaded avro version via `avro_repository`

avro_java_library

avro_java_library(name, srcs, strings, encoding)

Same as above except

  • instead of avro_tools, provide avro_libs as a dict(core, tools) of Labels for the avro libraries.
    • See tests for an example the re-uses the downloaded library explicitly
  • the outputs include those provided by java_library rules.