docs: public void execute()
          throws MojoExecutionException, MojoFailureException
      {
          Locale locale;
          if ( this.locale != null )
          {
              String[] bits = this.locale.split( "[,_]" );
              if ( bits.length == 1 )
              {
                  locale = new Locale( bits[0].trim() );
              }
              else if ( bits.length == 2 )
              {
                  locale = new Locale( bits[0].trim(), bits[1].trim() );
              }
              else if ( bits.length == 3 )
              {
                  locale = new Locale( bits[0].trim(), bits[1].trim(), bits[2].trim() );
              }
              else
              {
                  throw new MojoExecutionException( "expecting language,country,variant but got more than three parts" );
              }
          }
          else
          {
              locale = Locale.getDefault();
              getLog().warn( "Using platform locale (" + locale.toString()
                  + " actually) to format date/time, i.e. build is platform dependent!" );
          }
  
          DateFormat format;
          if ( pattern == null )
          {
              format = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, locale );
          }
          else
          {
              try
              {
                  format = new SimpleDateFormat( pattern, locale );
              }
              catch ( IllegalArgumentException e )
              {
                  throw new MojoExecutionException( e.getMessage(), e );
              }
          }
  
          TimeZone timeZone;
          if ( this.timeZone != null )
          {
              timeZone = TimeZone.getTimeZone( this.timeZone );
          }
          else
          {
              timeZone = TimeZone.getTimeZone( "GMT" );
          }
  
          Date now = new Date();
          Calendar calendar = new GregorianCalendar();
          calendar.setTime( now );
          calendar.setTimeZone( timeZone );
          if ( offset != 0 && unit != null )
          {
              unit = unit.toLowerCase();
              if ( unit.indexOf( "millisecond" ) == 0 )
              {
                  calendar.add( Calendar.MILLISECOND, offset );
              }
              else if ( unit.indexOf( "second" ) == 0 )
              {
                  calendar.add( Calendar.SECOND, offset );
              }
              else if ( unit.indexOf( "minute" ) == 0 )
              {
                  calendar.add( Calendar.MINUTE, offset );
              }
              else if ( unit.indexOf( "hour" ) == 0 )
              {
                  calendar.add( Calendar.HOUR, offset );
              }
              else if ( unit.indexOf( "day" ) == 0 )
              {
                  calendar.add( Calendar.DAY_OF_MONTH, offset );
              }
              else if ( unit.indexOf( "week" ) == 0 )
              {
                  calendar.add( Calendar.WEEK_OF_YEAR, offset );
              }
              else if ( unit.indexOf( "month" ) == 0 )
              {
                  calendar.add( Calendar.MONTH, offset );
              }
              else if ( unit.indexOf( "year" ) == 0 )
              {
                  calendar.add( Calendar.YEAR, offset );
              }
          }
  
          format.setTimeZone( timeZone );
  
          defineProperty( name, format.format( calendar.getTime() ) );
      }