         -------------
         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 suchas 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.

