private void parseLexFile()

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);
    }
  }