@Override
 public final void execute() throws MojoExecutionException, MojoFailureException {
   LOGGER.debug("starting report execution...");
   MojoLogAppender.beginLogging(this);
   try {
     ReportGenerator.extractJSDocToolkit(getToolkitExtractDirectory());
     Set<File> sourceFiles = getSourceFiles();
     List<String> args = createArgumentStack(sourceFiles);
     ReportGenerator.executeJSDocToolkit(
         getJsDocAppLocation(), args, getToolkitExtractDirectory());
   } catch (Exception e) {
     LOGGER.error("There was an error in the execution of the report: " + e.getMessage(), e);
     throw new MojoExecutionException(e.getMessage(), e);
   } finally {
     MojoLogAppender.endLogging();
   }
 }