diff --git a/antlr4-maven-plugin/src/main/java/org/antlr/mojo/antlr4/Antlr4Mojo.java b/antlr4-maven-plugin/src/main/java/org/antlr/mojo/antlr4/Antlr4Mojo.java index 5c3b5c2ec..6600adbd7 100644 --- a/antlr4-maven-plugin/src/main/java/org/antlr/mojo/antlr4/Antlr4Mojo.java +++ b/antlr4-maven-plugin/src/main/java/org/antlr/mojo/antlr4/Antlr4Mojo.java @@ -27,9 +27,6 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* ======================================================================== - * This is the definitive ANTLR4 Mojo set. All other sets are belong to us. - */ package org.antlr.mojo.antlr4; import org.antlr.v4.Tool; @@ -66,7 +63,7 @@ import java.util.Set; /** * Goal that picks up all the ANTLR grammars in a project and moves those that * are required for generation of the compilable sources into the location - * that we use to compile them, such as target/generated-sources/antlr4 ... + * that we use to compile them, such as {@code target/generated-sources/antlr4}. * * @author Sam Harwell */ @@ -75,12 +72,12 @@ import java.util.Set; defaultPhase = LifecyclePhase.PROCESS_SOURCES, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true) -public class Antlr4Mojo - extends AbstractMojo { +public class Antlr4Mojo extends AbstractMojo { // First, let's deal with the options that the ANTLR tool itself // can be configured by. // + /** * If set to true then the ANTLR tool will generate a description of the atn * for each rule in Dot format @@ -103,6 +100,7 @@ public class Antlr4Mojo * The following are Maven specific parameters, rather than specificlly * options that the ANTLR tool can use. */ + /** * Provides an explicit list of all the grammars that should * be included in the generate phase of the plugin. Note that the plugin @@ -166,6 +164,7 @@ public class Antlr4Mojo void addSourceRoot(File outputDir) { project.addCompileSourceRoot(outputDir.getPath()); } + /** * An instance of the ANTLR tool build */ @@ -175,12 +174,11 @@ public class Antlr4Mojo * 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 When something is disvocered such as a missing source - * @throws org.apache.maven.plugin.MojoFailureException When something really bad happesn such as not being able to create the ANTLR Tool + * @throws MojoExecutionException When something is discovered such as a missing source + * @throws MojoFailureException When something really bad happens such as not being able to create the ANTLR Tool */ @Override - public void execute() - throws MojoExecutionException, MojoFailureException { + public void execute() throws MojoExecutionException, MojoFailureException { Log log = getLog(); @@ -222,40 +220,29 @@ public class Antlr4Mojo outputDir.mkdirs(); } + // Now pick up all the files and process them with the Tool + // + List args = getCommandArguments(); try { - - // Now pick up all the files and process them with the Tool - // processGrammarFiles(args, sourceDirectory, outputDirectory); - } catch (InclusionScanException ie) { - log.error(ie); throw new MojoExecutionException("Fatal error occured while evaluating the names of the grammar files to analyze"); - } // Create an instance of the ANTLR 4 build tool - // try { tool = new CustomTool(args.toArray(new String[args.size()])); // Where do we want ANTLR to produce its output? (Base directory) - // if (log.isDebugEnabled()) { log.debug("Output directory base will be " + outputDirectory.getAbsolutePath()); } - // Tell ANTLR that we always want the output files to be produced in the output directory - // using the same relative path as the input file was to the input directory. - // -// tool.setForceRelativeOutput(true); - // Set working directory for ANTLR to be the base source directory - // tool.inputDirectory = sourceDirectory; if (!sourceDirectory.exists()) { @@ -271,7 +258,6 @@ public class Antlr4Mojo } catch (Exception e) { log.error("The attempt to create the ANTLR 4 build tool failed, see exception report for details", e); - throw new MojoFailureException("Jim failed you!"); } @@ -279,21 +265,14 @@ public class Antlr4Mojo // If any of the grammar files caused errors but did nto throw exceptions // then we should have accumulated errors in the counts - // if (tool.getNumErrors() > 0) { throw new MojoExecutionException("ANTLR 4 caught " + tool.getNumErrors() + " build errors."); } - // All looks good, so we need to tel Maven about the sources that - // we just created. - // if (project != null) { - // Tell Maven that there are some new source files underneath - // the output directory. - // + // Tell Maven that there are some new source files underneath the output directory. addSourceRoot(this.getOutputDirectory()); } - } private List getCommandArguments() { @@ -305,7 +284,6 @@ public class Antlr4Mojo } // Where do we want ANTLR to look for .tokens and import grammars? - // if (getLibDirectory() != null && getLibDirectory().exists()) { args.add("-lib"); args.add(libDirectory.getAbsolutePath()); @@ -313,7 +291,6 @@ public class Antlr4Mojo // Next we need to set the options given to us in the pom into the // tool instance we have created. - // if (atn) { args.add("-atn"); } @@ -340,21 +317,17 @@ public class Antlr4Mojo private void processGrammarFiles(List args, File sourceDirectory, File outputDirectory) throws InclusionScanException { // Which files under the source set should we be looking for as grammar files - // SourceMapping mapping = new SuffixMapping("g4", Collections.emptySet()); // What are the sets of includes (defaulted or otherwise). - // Set includes = getIncludesPatterns(); // Now, to the excludes, we need to add the imports directory - // as this is autoscanned for importd grammars and so is auto-excluded from the - // set of gramamr fiels we shuold be analyzing. - // + // as this is autoscanned for imported grammars and so is auto-excluded from the + // set of grammar fields we should be analyzing. excludes.add("imports/**"); SourceInclusionScanner scan = new SimpleSourceInclusionScanner(includes, excludes); - scan.addSourceMapping(mapping); Set grammarFiles = scan.getIncludedSources(sourceDirectory, null); @@ -363,14 +336,8 @@ public class Antlr4Mojo getLog().info("No grammars to process"); } } else { - - // Tell the ANTLR tool that we want sorted build mode - // -// tool.setMake(true); - // Iterate each grammar file we were given and add it into the tool's list of // grammars to process. - // for (Object grammarObject : grammarFiles) { if (!(grammarObject instanceof File)) { getLog().error(String.format("Expected %s from %s.getIncludedSources, found %s.", @@ -384,20 +351,14 @@ public class Antlr4Mojo getLog().debug("Grammar file '" + grammarFile.getPath() + "' detected."); } - String relPath = findSourceSubdir(sourceDirectory, grammarFile.getPath()) + grammarFile.getName(); - if (getLog().isDebugEnabled()) { getLog().debug(" ... relative path is: " + relPath); } args.add(relPath); - } - } - - } public Set getIncludesPatterns() { @@ -408,11 +369,11 @@ public class Antlr4Mojo } /** - * Given the source directory File object and the full PATH to a - * grammar, produce the path to the named grammar file in relative - * terms to the sourceDirectory. This will then allow ANTLR to - * produce output relative to the base of the output directory and - * reflect the input organization of the grammar files. + * Given the source directory File object and the full PATH to a grammar, + * produce the path to the named grammar file in relative terms to the + * {@code sourceDirectory}. This will then allow ANTLR to produce output + * relative to the base of the output directory and reflect the input + * organization of the grammar files. * * @param sourceDirectory The source directory File object * @param grammarFileName The full path to the input grammar file