Class Antlr4Mojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="antlr4",
          defaultPhase=GENERATE_SOURCES,
          requiresDependencyResolution=COMPILE,
          requiresProject=true)
    public class Antlr4Mojo
    extends org.apache.maven.plugin.AbstractMojo
    Parses ANTLR 4 grammar files *.g4 and transforms them into Java source files.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  Antlr4Mojo.CustomTool  
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.List<java.lang.String> arguments
      A list of additional command line arguments to pass to the ANTLR tool.
      protected boolean atn
      If set to true then the ANTLR tool will generate a description of the ATN for each rule in Dot format.
      private org.sonatype.plexus.build.incremental.BuildContext buildContext  
      protected java.util.Set<java.lang.String> excludes
      A set of Ant-like exclusion patterns used to prevent certain files from being processed.
      protected boolean forceATN
      Use the ATN simulator for all predictions.
      private boolean generateTestSources
      Specifies whether sources are added to the compile or test scope.
      protected java.util.Set<java.lang.String> includes
      Provides an explicit list of all the grammars that should be included in the generate phase of the plugin.
      protected java.lang.String inputEncoding
      specify grammar file encoding; e.g., euc-jp
      private java.io.File libDirectory
      Specify location of imported grammars and tokens files.
      protected boolean listener
      Generate parse tree listener interface and base class.
      protected java.util.Map<java.lang.String,​java.lang.String> options
      A list of grammar options to explicitly specify to the tool.
      private java.io.File outputDirectory
      Specify output directory where the Java files are generated.
      protected java.lang.String outputEncoding
      specify output file encoding; defaults to source encoding
      protected org.apache.maven.project.MavenProject project
      The current Maven project.
      private java.io.File sourceDirectory
      The directory where the ANTLR grammar files (*.g4) are located.
      private java.io.File statusDirectory
      The directory where build status information is located.
      protected Tool tool
      An instance of the ANTLR tool build
      protected boolean treatWarningsAsErrors
      Treat warnings as errors.
      protected boolean visitor
      Generate parse tree visitor interface and base class.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Constructor Summary

      Constructors 
      Constructor Description
      Antlr4Mojo()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) void addSourceRoot​(java.io.File outputDir)  
      void execute()
      The main entry point for this Mojo, it is responsible for converting ANTLR 4.x grammars into the target language specified by the grammar.
      private java.util.List<java.lang.String> getCommandArguments()  
      private java.io.File getDependenciesStatusFile()  
      private java.util.Set<java.io.File> getGrammarFiles​(java.io.File sourceDirectory)  
      private java.util.Set<java.io.File> getImportFiles​(java.io.File sourceDirectory)  
      java.util.Set<java.lang.String> getIncludesPatterns()  
      java.io.File getLibDirectory()  
      java.io.File getOutputDirectory()  
      private static java.lang.String getPackageName​(java.lang.String relativeFolderPath)  
      java.io.File getSourceDirectory()  
      private java.util.List<java.util.List<java.lang.String>> processGrammarFiles​(java.util.List<java.lang.String> args, java.util.Set<java.io.File> grammarFiles, GrammarDependencies dependencies, java.io.File sourceDirectory)  
      private java.lang.String validateEncoding​(java.lang.String encoding)
      Validates the given encoding.
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • atn

        @Parameter(property="antlr4.atn",
                   defaultValue="false")
        protected boolean atn
        If set to true then the ANTLR tool will generate a description of the ATN for each rule in Dot format.
      • inputEncoding

        @Parameter(property="project.build.sourceEncoding")
        protected java.lang.String inputEncoding
        specify grammar file encoding; e.g., euc-jp
      • outputEncoding

        @Parameter(property="project.build.sourceEncoding")
        protected java.lang.String outputEncoding
        specify output file encoding; defaults to source encoding
      • listener

        @Parameter(property="antlr4.listener",
                   defaultValue="true")
        protected boolean listener
        Generate parse tree listener interface and base class.
      • visitor

        @Parameter(property="antlr4.visitor",
                   defaultValue="false")
        protected boolean visitor
        Generate parse tree visitor interface and base class.
      • treatWarningsAsErrors

        @Parameter(property="antlr4.treatWarningsAsErrors",
                   defaultValue="false")
        protected boolean treatWarningsAsErrors
        Treat warnings as errors.
      • forceATN

        @Parameter(property="antlr4.forceATN",
                   defaultValue="false")
        protected boolean forceATN
        Use the ATN simulator for all predictions.
      • options

        @Parameter
        protected java.util.Map<java.lang.String,​java.lang.String> options
        A list of grammar options to explicitly specify to the tool. These options are passed to the tool using the -D<option>=<value> syntax.
      • arguments

        @Parameter
        protected java.util.List<java.lang.String> arguments
        A list of additional command line arguments to pass to the ANTLR tool.
      • includes

        @Parameter
        protected java.util.Set<java.lang.String> includes
        Provides an explicit list of all the grammars that should be included in the generate phase of the plugin. Note that the plugin is smart enough to realize that imported grammars should be included but not acted upon directly by the ANTLR Tool.

        A set of Ant-like inclusion patterns used to select files from the source directory for processing. By default, the pattern **/*.g4 is used to select grammar files.

      • excludes

        @Parameter
        protected java.util.Set<java.lang.String> excludes
        A set of Ant-like exclusion patterns used to prevent certain files from being processed. By default, this set is empty such that no files are excluded.
      • project

        @Parameter(property="project",
                   required=true,
                   readonly=true)
        protected org.apache.maven.project.MavenProject project
        The current Maven project.
      • generateTestSources

        @Parameter(property="antlr4.generateTestSources",
                   defaultValue="false")
        private boolean generateTestSources
        Specifies whether sources are added to the compile or test scope.
      • sourceDirectory

        @Parameter(defaultValue="${basedir}/src/main/antlr4")
        private java.io.File sourceDirectory
        The directory where the ANTLR grammar files (*.g4) are located.
      • outputDirectory

        @Parameter(defaultValue="${project.build.directory}/generated-sources/antlr4")
        private java.io.File outputDirectory
        Specify output directory where the Java files are generated.
      • libDirectory

        @Parameter(defaultValue="${basedir}/src/main/antlr4/imports")
        private java.io.File libDirectory
        Specify location of imported grammars and tokens files.
      • statusDirectory

        @Parameter(defaultValue="${project.build.directory}/maven-status/antlr4",
                   readonly=true)
        private java.io.File statusDirectory
        The directory where build status information is located.
      • buildContext

        @Component
        private org.sonatype.plexus.build.incremental.BuildContext buildContext
      • tool

        protected Tool tool
        An instance of the ANTLR tool build
    • Constructor Detail

      • Antlr4Mojo

        public Antlr4Mojo()
    • Method Detail

      • getSourceDirectory

        public java.io.File getSourceDirectory()
      • getOutputDirectory

        public java.io.File getOutputDirectory()
      • getLibDirectory

        public java.io.File getLibDirectory()
      • addSourceRoot

        void addSourceRoot​(java.io.File outputDir)
      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException,
                            org.apache.maven.plugin.MojoFailureException
        The main entry point for this Mojo, it is responsible for converting ANTLR 4.x grammars into the target language specified by the grammar.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if a configuration or grammar error causes the code generation process to fail
        org.apache.maven.plugin.MojoFailureException - if an instance of the ANTLR 4 Tool cannot be created
      • getCommandArguments

        private java.util.List<java.lang.String> getCommandArguments()
      • processGrammarFiles

        private java.util.List<java.util.List<java.lang.String>> processGrammarFiles​(java.util.List<java.lang.String> args,
                                                                                     java.util.Set<java.io.File> grammarFiles,
                                                                                     GrammarDependencies dependencies,
                                                                                     java.io.File sourceDirectory)
                                                                              throws org.codehaus.plexus.compiler.util.scan.InclusionScanException,
                                                                                     java.io.IOException
        Parameters:
        sourceDirectory -
        Throws:
        org.codehaus.plexus.compiler.util.scan.InclusionScanException
        java.io.IOException
      • getImportFiles

        private java.util.Set<java.io.File> getImportFiles​(java.io.File sourceDirectory)
                                                    throws org.codehaus.plexus.compiler.util.scan.InclusionScanException
        Throws:
        org.codehaus.plexus.compiler.util.scan.InclusionScanException
      • getGrammarFiles

        private java.util.Set<java.io.File> getGrammarFiles​(java.io.File sourceDirectory)
                                                     throws org.codehaus.plexus.compiler.util.scan.InclusionScanException
        Throws:
        org.codehaus.plexus.compiler.util.scan.InclusionScanException
      • getPackageName

        private static java.lang.String getPackageName​(java.lang.String relativeFolderPath)
      • getIncludesPatterns

        public java.util.Set<java.lang.String> getIncludesPatterns()
      • getDependenciesStatusFile

        private java.io.File getDependenciesStatusFile()
      • validateEncoding

        private java.lang.String validateEncoding​(java.lang.String encoding)
        Validates the given encoding.
        Returns:
        the validated encoding. If null was provided, returns the platform default encoding.