         -------------
         ANTLR v3 Maven Plugin
         -------------
         Jim Idle
         -------------
         March 2009
         -------------

ANTLR v3 Maven plugin

 The ANTLR v3 Maven plugin is completely re-written as of version 3.1.3; if you are familiar
 with prior versions, you should note that there are some behavioral differences that make
 it worthwhile reading this documentation. 

 The job of the plugin is essentially to tell the standard ANTLR parser generator where the
 input grammar files are and where the output files should be generated. As with all Maven
 plugins, there are defaults, which you are advised to comply to, but are not forced to
 comply to.

 This version of the plugin allows full control over ANTLR and allows configuration of all
 options that are useful for a build system. The code required to calculate dependencies,
 check the build order, and otherwise work with your grammar files is built into the ANTLR
 tool as of version 3.1.3 of ANTLR and this plugin.

* Plugin Versioning

 The plugin version tracks the version of the ANTLR tool that it controls. Hence if you
 use version 3.1.3 of the plugin, you will build your grammars using version 3.1.3 of the
 ANTLR tool, version 3.2 of the plugin will use version 3.2 of the ANTLR tool and so on.

 You may also find that there are patch versions of the plugin such as 3.1.3-1 3.1.3-2 and
 so on. Use the latest patch release of the plugin.

 The current version of the plugin is shown at the top of this page after the <<Last Deployed>> date.
 

* Default directories

 As with all Maven plugins, this plugin will automatically default to standard locations
 for your grammar and import files. Organizing your source code to reflect this standard
 layout will greatly reduce the configuration effort required. The standard layout lookd
 like this:

+--
 src/main/
      |
      +--- antlr3/... .g files organized in the required package structure
             |
             +--- imports/  .g files that are imported by other grammars.
+--

 If your grammar is intended to be part of a package called <<<org.foo.bar>>> then you would
 place it in the directory <<<src/main/antlr3/org/foo/bar>>>. The plugin will then produce
 <<<.java>>> and <<<.tokens>>> files in the output directory <<<target/generated-sources/antlr3/org/foo/bar>>>
 When the Java files are compiled they will be in the correct location for the Javac
 compiler without any special configuration. The generated java files are automatically
 submitted for compilation by the plugin.

 The <<<src/main/antlr3/imports>>> directory is treated in a special way. It should contain
 any grammar files that are imported by other grammar files (do not make subdirectories here.)
 Such files are never built on their own, but the plugin will automatically tell the ANTLR
 tool to look in this directory for library files.
