Coverage Report - org.apache.maven.plugin.clean.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/104
0%
0/54
4,333
 
 1  
 package org.apache.maven.plugin.clean;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Iterator;
 5  
 import java.util.List;
 6  
 
 7  
 import org.apache.maven.plugin.AbstractMojo;
 8  
 import org.apache.maven.plugin.MojoExecutionException;
 9  
 
 10  
 /**
 11  
  * Display help information on maven-clean-plugin.<br/> Call <pre>  mvn clean:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Sat May 08 17:10:47 CEST 2010
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.6)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  */
 18  0
 public class HelpMojo
 19  
     extends AbstractMojo
 20  
 {
 21  
     /**
 22  
      * If <code>true</code>, display all settable properties for each goal.
 23  
      * 
 24  
      * @parameter expression="${detail}" default-value="false"
 25  
      */
 26  
     private boolean detail;
 27  
 
 28  
     /**
 29  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 30  
      * 
 31  
      * @parameter expression="${goal}"
 32  
      */
 33  
     private java.lang.String goal;
 34  
 
 35  
     /**
 36  
      * The maximum length of a display line, should be positive.
 37  
      * 
 38  
      * @parameter expression="${lineLength}" default-value="80"
 39  
      */
 40  
     private int lineLength;
 41  
 
 42  
     /**
 43  
      * The number of spaces per indentation level, should be positive.
 44  
      * 
 45  
      * @parameter expression="${indentSize}" default-value="2"
 46  
      */
 47  
     private int indentSize;
 48  
 
 49  
 
 50  
     /** {@inheritDoc} */
 51  
     public void execute()
 52  
         throws MojoExecutionException
 53  
     {
 54  0
         if ( lineLength <= 0 )
 55  
         {
 56  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 57  0
             lineLength = 80;
 58  
         }
 59  0
         if ( indentSize <= 0 )
 60  
         {
 61  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 62  0
             indentSize = 2;
 63  
         }
 64  
 
 65  0
         StringBuffer sb = new StringBuffer();
 66  
 
 67  0
         append( sb, "org.apache.maven.plugins:maven-clean-plugin:2.4.1", 0 );
 68  0
         append( sb, "", 0 );
 69  
 
 70  0
         append( sb, "Maven Clean Plugin", 0 );
 71  0
         append( sb, "The Maven Clean Plugin is a plugin that removes files generated at build-time in a project\'s directory.", 1 );
 72  0
         append( sb, "", 0 );
 73  
 
 74  0
         if ( goal == null || goal.length() <= 0 )
 75  
         {
 76  0
             append( sb, "This plugin has 2 goals:", 0 );
 77  0
             append( sb, "", 0 );
 78  
         }
 79  
 
 80  0
         if ( goal == null || goal.length() <= 0 || "clean".equals( goal ) )
 81  
         {
 82  0
             append( sb, "clean:clean", 0 );
 83  0
             append( sb, "Goal which cleans the build.\nThis attempts to clean a project\'s working directory of the files that were generated at build-time. By default, it discovers and deletes the directories configured in project.build.directory, project.build.outputDirectory, project.build.testOutputDirectory, and project.reporting.outputDirectory.\n\nFiles outside the default may also be included in the deletion by configuring the filesets tag.\n", 1 );
 84  0
             append( sb, "", 0 );
 85  0
             if ( detail )
 86  
             {
 87  0
                 append( sb, "Available parameters:", 1 );
 88  0
                 append( sb, "", 0 );
 89  
 
 90  0
                 append( sb, "excludeDefaultDirectories (Default: false)", 2 );
 91  0
                 append( sb, "Disables the deletion of the default output directories configured for a project. If set to true, only the files/directories selected via the parameter filesets will be deleted.", 3 );
 92  0
                 append( sb, "", 0 );
 93  
 
 94  0
                 append( sb, "failOnError (Default: true)", 2 );
 95  0
                 append( sb, "Indicates whether the build will continue even if there are clean errors.", 3 );
 96  0
                 append( sb, "", 0 );
 97  
 
 98  0
                 append( sb, "filesets", 2 );
 99  0
                 append( sb, "The list of file sets to delete, in addition to the default directories.", 3 );
 100  0
                 append( sb, "", 0 );
 101  
 
 102  0
                 append( sb, "followSymLinks (Default: false)", 2 );
 103  0
                 append( sb, "Sets whether the plugin should follow symbolic links while deleting files from the default output directories of the project. Not following symlinks requires more IO operations and heap memory, regardless whether symlinks are actually present. So projects with a huge output directory that knowingly does not contain symlinks can improve performance by setting this parameter to true.", 3 );
 104  0
                 append( sb, "", 0 );
 105  
 
 106  0
                 append( sb, "skip (Default: false)", 2 );
 107  0
                 append( sb, "Disables the plugin execution.", 3 );
 108  0
                 append( sb, "", 0 );
 109  
 
 110  0
                 append( sb, "verbose", 2 );
 111  0
                 append( sb, "Sets whether the plugin runs in verbose mode. As of plugin version 2.3, the default value is derived from Maven\'s global debug flag (compare command line switch -X).", 3 );
 112  0
                 append( sb, "", 0 );
 113  
             }
 114  
         }
 115  
 
 116  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 117  
         {
 118  0
             append( sb, "clean:help", 0 );
 119  0
             append( sb, "Display help information on maven-clean-plugin.\nCall\n\u00a0\u00a0mvn\u00a0clean:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 120  0
             append( sb, "", 0 );
 121  0
             if ( detail )
 122  
             {
 123  0
                 append( sb, "Available parameters:", 1 );
 124  0
                 append( sb, "", 0 );
 125  
 
 126  0
                 append( sb, "detail (Default: false)", 2 );
 127  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 128  0
                 append( sb, "", 0 );
 129  
 
 130  0
                 append( sb, "goal", 2 );
 131  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 132  0
                 append( sb, "", 0 );
 133  
 
 134  0
                 append( sb, "indentSize (Default: 2)", 2 );
 135  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 136  0
                 append( sb, "", 0 );
 137  
 
 138  0
                 append( sb, "lineLength (Default: 80)", 2 );
 139  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 140  0
                 append( sb, "", 0 );
 141  
             }
 142  
         }
 143  
 
 144  0
         if ( getLog().isInfoEnabled() )
 145  
         {
 146  0
             getLog().info( sb.toString() );
 147  
         }
 148  0
     }
 149  
 
 150  
     /**
 151  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 152  
      *
 153  
      * @param str String to repeat
 154  
      * @param repeat number of times to repeat str
 155  
      * @return String with repeated String
 156  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 157  
      * @throws NullPointerException if str is <code>null</code>
 158  
      */
 159  
     private static String repeat( String str, int repeat )
 160  
     {
 161  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 162  
 
 163  0
         for ( int i = 0; i < repeat; i++ )
 164  
         {
 165  0
             buffer.append( str );
 166  
         }
 167  
 
 168  0
         return buffer.toString();
 169  
     }
 170  
 
 171  
     /** 
 172  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 173  
      * <b>Note</b>: The last character is always a new line.
 174  
      * 
 175  
      * @param sb The buffer to append the description, not <code>null</code>.
 176  
      * @param description The description, not <code>null</code>.
 177  
      * @param indent The base indentation level of each line, must not be negative.
 178  
      */
 179  
     private void append( StringBuffer sb, String description, int indent )
 180  
     {
 181  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 182  
         {
 183  0
             sb.append( it.next().toString() ).append( '\n' );
 184  
         }
 185  0
     }
 186  
 
 187  
     /** 
 188  
      * Splits the specified text into lines of convenient display length.
 189  
      * 
 190  
      * @param text The text to split into lines, must not be <code>null</code>.
 191  
      * @param indent The base indentation level of each line, must not be negative.
 192  
      * @param indentSize The size of each indentation, must not be negative.
 193  
      * @param lineLength The length of the line, must not be negative.
 194  
      * @return The sequence of display lines, never <code>null</code>.
 195  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 196  
      */
 197  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 198  
     {
 199  0
         List lines = new ArrayList();
 200  
 
 201  0
         String ind = repeat( "\t", indent );
 202  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 203  0
         for ( int i = 0; i < plainLines.length; i++ )
 204  
         {
 205  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 206  
         }
 207  
 
 208  0
         return lines;
 209  
     }
 210  
 
 211  
     /** 
 212  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 213  
      * 
 214  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 215  
      * @param line The line to add, must not be <code>null</code>.
 216  
      * @param indentSize The size of each indentation, must not be negative.
 217  
      * @param lineLength The length of the line, must not be negative.
 218  
      */
 219  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 220  
     {
 221  0
         int lineIndent = getIndentLevel( line );
 222  0
         StringBuffer buf = new StringBuffer( 256 );
 223  0
         String[] tokens = line.split( " +" );
 224  0
         for ( int i = 0; i < tokens.length; i++ )
 225  
         {
 226  0
             String token = tokens[i];
 227  0
             if ( i > 0 )
 228  
             {
 229  0
                 if ( buf.length() + token.length() >= lineLength )
 230  
                 {
 231  0
                     lines.add( buf.toString() );
 232  0
                     buf.setLength( 0 );
 233  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 234  
                 }
 235  
                 else
 236  
                 {
 237  0
                     buf.append( ' ' );
 238  
                 }
 239  
             }
 240  0
             for ( int j = 0; j < token.length(); j++ )
 241  
             {
 242  0
                 char c = token.charAt( j );
 243  0
                 if ( c == '\t' )
 244  
                 {
 245  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 246  
                 }
 247  0
                 else if ( c == '\u00A0' )
 248  
                 {
 249  0
                     buf.append( ' ' );
 250  
                 }
 251  
                 else
 252  
                 {
 253  0
                     buf.append( c );
 254  
                 }
 255  
             }
 256  
         }
 257  0
         lines.add( buf.toString() );
 258  0
     }
 259  
 
 260  
     /** 
 261  
      * Gets the indentation level of the specified line.
 262  
      * 
 263  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 264  
      * @return The indentation level of the line.
 265  
      */
 266  
     private static int getIndentLevel( String line )
 267  
     {
 268  0
         int level = 0;
 269  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 270  
         {
 271  0
             level++;
 272  
         }
 273  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 274  
         {
 275  0
             if ( line.charAt( i ) == '\t' )
 276  
             {
 277  0
                 level++;
 278  0
                 break;
 279  
             }
 280  
         }
 281  0
         return level;
 282  
     }
 283  
 }