Maven 2 Plugin for processing Apache Avro files. Avro is a subproject of Apache Hadoop.
Java
Switch branches/tags
Pull request Compare This branch is 6 commits ahead, 12 commits behind phunt:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/main/java/org/apache/avro/mojo
.gitignore
LICENSE.txt
README.textile
pom.xml

README.textile

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 and schema files. Currently only protocol files are supported.

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 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>protocol</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>