Skip to content
This repository has been archived by the owner on Nov 5, 2020. It is now read-only.

Latest commit

 

History

History
70 lines (52 loc) · 2.48 KB

README.textile

File metadata and controls

70 lines (52 loc) · 2.48 KB

Maven 2 Plugin for processing Avro files

Author: Patrick Hunt (follow me on twitter)

Summary

This is a Maven 2 plugin for processing Avro protocol, schema, and genavro files.

Contributors

What’s Apache Avro?

From the official site: “Avro is a data serialization system”

Avro provides:

  • Rich data structures.
  • A compact, fast, binary data format.
  • A container file, to store persistent data.
  • Remote procedure call (RPC).
  • Simple integration with dynamic languages. Code generation is not required to read or write data files nor to use or implement RPC protocols. Code generation as an optional optimization, only worth implementing for statically typed languages.

License

This project is licensed under the Apache License Version 2.0

Usage

Type “mvn install” to install the plugin into your local maven repository.

To use the plugin you’ll need something like the following in your Avro project pom.xml file. The first plugin will compile Avro *.avpr, *.avsc, and *.genavro files, while the second plugin will run Paranamer (necessary for Avro to introspect the generated rpc code):

See avro-rpc-quickstart for example use.


      <plugin>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.thoughtworks.paranamer</groupId>
        <artifactId>paranamer-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>run</id>  <!-- id is optional -->
            <configuration>
              <sourceDirectory>${project.build.directory}/generated-sources/avro</sourceDirectory>
              <outputDirectory>${project.build.directory}/classes</outputDirectory>
            </configuration>        
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>