in jflex-maven-plugin/src/main/java/jflex/maven/plugin/jflex/JFlexMojo.java [194:248]
private void parseLexFile(File lexFile) throws MojoFailureException, MojoExecutionException {
assert lexFile.isAbsolute() : lexFile;
getLog().debug("Generating Java code from " + lexFile.getName());
SpecInfo specInfo = findSpecInfo(lexFile);
checkParameters(lexFile);
// set destination directory
File generatedFile = new File(outputDirectory, specInfo.getOutputFilename());
// generate only if needs to
long generatedLastModified = generatedFile.lastModified();
if (lexFile.lastModified() - generatedLastModified <= this.staleMillis
&& latestModified(specInfo.includedFiles) - generatedLastModified <= this.staleMillis) {
getLog().info(" " + generatedFile.getName() + " is up to date.");
getLog().debug("StaleMillis = " + staleMillis + "ms");
return;
}
// set options. Very strange that JFlex expects this in a static way.
OptionUtils.setDefaultOptions();
OptionUtils.setDir(generatedFile.getParentFile());
Options.setRootDirectory(project.getBasedir());
Options.dump = dump;
Options.verbose = verbose;
OptionUtils.set_unused_warning(unusedWarning);
Options.dot = dot;
Options.legacy_dot = legacyDot;
if (skeleton != null) {
OptionUtils.setSkeleton(skeleton);
}
Options.jlex = jlex;
Options.no_minimize = !minimize; // NOPMD
Options.no_backup = !backup; // NOPMD
if (!Objects.equals("pack", generationMethod)) {
throw new MojoExecutionException("Illegal generation method: " + generationMethod);
}
if (!isNullOrEmpty(encodingName)) {
try {
OptionUtils.setEncoding(encodingName);
} catch (Exception e) {
throw new MojoExecutionException(e.getMessage());
}
}
try {
new LexGenerator(lexFile).generate();
getLog().info(" generated " + generatedFile);
} catch (Exception e) {
throw new MojoExecutionException(e.getMessage(), e);
}
}