code: public void execute() throws MojoExecutionException, MojoFailureException {
      try {
        Set<File> thriftFiles = findThriftFiles();
  
        final File outputDirectory = getOutputDirectory();
        ImmutableSet<File> outputFiles = findGeneratedFilesInDirectory(getOutputDirectory());
  
        Set<String> compileRoots = new HashSet<String>();
        compileRoots.add("scrooge");
  
        if (thriftFiles.isEmpty()) {
          getLog().info("No thrift files to compile.");
        } else if (checkStaleness && ((lastModified(thriftFiles) + staleMillis) < lastModified(outputFiles))) {
          getLog().info("Generated thrift files up to date, skipping compile.");
          attachFiles(compileRoots);
        } else {
          outputDirectory.mkdirs();
  
          // Quick fix to fix issues with two mvn installs in a row (ie no clean)
          cleanDirectory(outputDirectory);
  
          getLog().info(format("compiling thrift files %s with Scrooge", thriftFiles));
          synchronized(lock) {
            ScroogeRunner runner = new ScroogeRunner();
            Map<String, String> thriftNamespaceMap = new HashMap<String, String>();
            for (ThriftNamespaceMapping mapping : thriftNamespaceMappings) {
              thriftNamespaceMap.put(mapping.getFrom(), mapping.getTo());
            }
  
            // Include thrifts from resource as well.
            Set<File> includes = thriftIncludes;
            includes.add(getResourcesOutputDirectory());
  
            // Include thrift root
            final File thriftSourceRoot = getThriftSourceRoot();
            if (thriftSourceRoot != null && thriftSourceRoot.exists()) {
              includes.add(thriftSourceRoot);
            }
  
            runner.compile(
                    getLog(),
                    includeOutputDirectoryNamespace ? new File(outputDirectory, "scrooge") : outputDirectory,
                    thriftFiles,
                    includes,
                    thriftNamespaceMap,
                    language,
                    thriftOpts);
          }
          attachFiles(compileRoots);
        }
      } catch (IOException e) {
        throw new MojoExecutionException("An IO error occurred", e);
      }
    }
docs: Executes the mojo.