code: public void execute() throws MojoExecutionException, MojoFailureException {
      this.log.info("Executing the standard workflow of the goal");
      this.executedSteps = new Stack<Pair<CDIMojoProcessingStep, ExecutionContext>>();
  
      try {
        for (WorkflowStep workflowStep : this.workflow.getProcessingSteps()) {
          executeSequentialWorkflowStep(workflowStep);
          executeParallelWorkflowSteps(workflowStep);
        }
      } catch (MojoExecutionException e) {
        executeFinallySteps();
        throw e;
      } catch (MojoFailureException e) {
        executeFinallySteps();
        throw e;
      } catch (RuntimeException e) {
        executeFinallySteps();
        throw e;
      }
    }
docs: Performs the actual workflow execution in the correct order.<br>
  If an exceptional case is reached, all already executed steps will be rolled back prior to throwing the exception.
  
  @throws MojoExecutionException if any of the processing steps of the workflow throw such an exception.
  @throws MojoFailureException if any of the processing steps of the workflow throw such an exception.