code: @Override
      public final void execute() throws MojoExecutionException, MojoFailureException {
  
          // 0) Get the log and its relevant level
          final Log log = getLog();
          final boolean isDebugEnabled = log.isDebugEnabled();
          final boolean isInfoEnabled = log.isInfoEnabled();
  
          // 1) Should we skip execution?
          if (shouldExecutionBeSkipped()) {
  
              if (isDebugEnabled) {
                  log.debug("Skipping execution, as instructed.");
              }
              return;
          }
  
          // 2) Printout relevant version information.
          if (isDebugEnabled) {
              logPluginAndJaxbDependencyInfo();
          }
  
          // 3) Are generated files stale?
          if (isReGenerationRequired()) {
  
              if (performExecution()) {
  
                  // As instructed by the performExecution() method, update
                  // the timestamp of the stale File.
                  updateStaleFileTimestamp();
  
                  // Hack to support M2E
                  buildContext.refresh(getOutputDirectory());
  
              } else if (isInfoEnabled) {
                  log.info("Not updating staleFile timestamp as instructed.");
              }
          } else if (isInfoEnabled) {
              log.info("No changes detected in schema or binding files - skipping JAXB generation.");
          }
  
          // 4) If the output directories exist, add them to the MavenProject's source directories
          if (getOutputDirectory().exists() && getOutputDirectory().isDirectory()) {
  
              final String canonicalPathToOutputDirectory = FileSystemUtilities.getCanonicalPath(getOutputDirectory());
  
              if (log.isDebugEnabled()) {
                  log.debug("Adding existing JAXB outputDirectory [" + canonicalPathToOutputDirectory
                          + "] to Maven's sources.");
              }
  
              // Add the output Directory.
              getProject().addCompileSourceRoot(canonicalPathToOutputDirectory);
          }
      }
docs: {@inheritDoc}