code: @Override
    protected ESuccess execute () throws Exception
    {
      final String [] args = generateArguments ();
  
      if (this.outputDirectory != null && !this.outputDirectory.exists ())
      {
        if (!this.outputDirectory.mkdirs ())
        {
          getLog ().error ("Failed to create output directory " + this.outputDirectory);
          return ESuccess.FAILURE;
        }
      }
  
      // fork JTB because of its lack to re-initialize its static parser
      final ForkedJvm jvm = new ForkedJvmPGCC ();
      jvm.setMainClass (EDU.purdue.jtb.JTB.class);
      jvm.addArguments (args);
      jvm.setSystemOut (new MojoLogStreamConsumer (false));
      jvm.setSystemErr (new MojoLogStreamConsumer (true));
      if (getLog ().isDebugEnabled ())
      {
        getLog ().debug ("Forking: " + jvm);
      }
      final int exitcode = jvm.run ();
      if (getLog ().isDebugEnabled ())
      {
        getLog ().debug ("Finished forking");
      }
  
      moveJavaFiles ();
  
      return ESuccess.valueOf (exitcode == 0);
    }
docs: {@inheritDoc}