Coverage Report - org.apache.maven.plugin.clean.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0 %
0/117
0 %
0/54
5,5
 
 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 26 18:48:42 CEST 2012
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.8)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  * @threadSafe
 18  
  */
 19  
 @SuppressWarnings( "all" )
 20  0
 public class HelpMojo
 21  
     extends AbstractMojo
 22  
 {
 23  
     /**
 24  
      * If <code>true</code>, display all settable properties for each goal.
 25  
      * 
 26  
      * @parameter expression="${detail}" default-value="false"
 27  
      */
 28  
     private boolean detail;
 29  
 
 30  
     /**
 31  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 32  
      * 
 33  
      * @parameter expression="${goal}"
 34  
      */
 35  
     private java.lang.String goal;
 36  
 
 37  
     /**
 38  
      * The maximum length of a display line, should be positive.
 39  
      * 
 40  
      * @parameter expression="${lineLength}" default-value="80"
 41  
      */
 42  
     private int lineLength;
 43  
 
 44  
     /**
 45  
      * The number of spaces per indentation level, should be positive.
 46  
      * 
 47  
      * @parameter expression="${indentSize}" default-value="2"
 48  
      */
 49  
     private int indentSize;
 50  
 
 51  
 
 52  
     /** {@inheritDoc} */
 53  
     public void execute()
 54  
         throws MojoExecutionException
 55  
     {
 56  0
         if ( lineLength <= 0 )
 57  
         {
 58  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 59  0
             lineLength = 80;
 60  
         }
 61  0
         if ( indentSize <= 0 )
 62  
         {
 63  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 64  0
             indentSize = 2;
 65  
         }
 66  
 
 67  0
         StringBuffer sb = new StringBuffer();
 68  
 
 69  0
         append( sb, "org.apache.maven.plugins:maven-clean-plugin:2.5", 0 );
 70  0
         append( sb, "", 0 );
 71  
 
 72  0
         append( sb, "Maven Clean Plugin", 0 );
 73  0
         append( sb, "The Maven Clean Plugin is a plugin that removes files generated at build-time in a project\'s directory.", 1 );
 74  0
         append( sb, "", 0 );
 75  
 
 76  0
         if ( goal == null || goal.length() <= 0 )
 77  
         {
 78  0
             append( sb, "This plugin has 2 goals:", 0 );
 79  0
             append( sb, "", 0 );
 80  
         }
 81  
 
 82  0
         if ( goal == null || goal.length() <= 0 || "clean".equals( goal ) )
 83  
         {
 84  0
             append( sb, "clean:clean", 0 );
 85  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 );
 86  0
             append( sb, "", 0 );
 87  0
             if ( detail )
 88  
             {
 89  0
                 append( sb, "Available parameters:", 1 );
 90  0
                 append( sb, "", 0 );
 91  
 
 92  0
                 append( sb, "excludeDefaultDirectories (Default: false)", 2 );
 93  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 );
 94  0
                 append( sb, "Expression: ${clean.excludeDefaultDirectories}", 3 );
 95  0
                 append( sb, "", 0 );
 96  
 
 97  0
                 append( sb, "failOnError (Default: true)", 2 );
 98  0
                 append( sb, "Indicates whether the build will continue even if there are clean errors.", 3 );
 99  0
                 append( sb, "Expression: ${maven.clean.failOnError}", 3 );
 100  0
                 append( sb, "", 0 );
 101  
 
 102  0
                 append( sb, "filesets", 2 );
 103  0
                 append( sb, "The list of file sets to delete, in addition to the default directories. For example:\n<filesets>\n\u00a0\u00a0<fileset>\n\u00a0\u00a0\u00a0\u00a0<directory>src/main/generated</directory>\n\u00a0\u00a0\u00a0\u00a0<followSymlinks>false</followSymlinks>\n\u00a0\u00a0\u00a0\u00a0<useDefaultExcludes>true</useDefaultExcludes>\n\u00a0\u00a0\u00a0\u00a0<includes>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<include>*.java</include>\n\u00a0\u00a0\u00a0\u00a0</includes>\n\u00a0\u00a0\u00a0\u00a0<excludes>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<exclude>Template*</exclude>\n\u00a0\u00a0\u00a0\u00a0</excludes>\n\u00a0\u00a0</fileset>\n</filesets>\n", 3 );
 104  0
                 append( sb, "", 0 );
 105  
 
 106  0
                 append( sb, "followSymLinks (Default: false)", 2 );
 107  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 );
 108  0
                 append( sb, "Expression: ${clean.followSymLinks}", 3 );
 109  0
                 append( sb, "", 0 );
 110  
 
 111  0
                 append( sb, "retryOnError (Default: true)", 2 );
 112  0
                 append( sb, "Indicates whether the plugin should undertake additional attempts (after a short delay) to delete a file if the first attempt failed. This is meant to help deleting files that are temporarily locked by third-party tools like virus scanners or search indexing.", 3 );
 113  0
                 append( sb, "Expression: ${maven.clean.retryOnError}", 3 );
 114  0
                 append( sb, "", 0 );
 115  
 
 116  0
                 append( sb, "skip (Default: false)", 2 );
 117  0
                 append( sb, "Disables the plugin execution.", 3 );
 118  0
                 append( sb, "Expression: ${clean.skip}", 3 );
 119  0
                 append( sb, "", 0 );
 120  
 
 121  0
                 append( sb, "verbose", 2 );
 122  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 );
 123  0
                 append( sb, "Expression: ${clean.verbose}", 3 );
 124  0
                 append( sb, "", 0 );
 125  
             }
 126  
         }
 127  
 
 128  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 129  
         {
 130  0
             append( sb, "clean:help", 0 );
 131  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 );
 132  0
             append( sb, "", 0 );
 133  0
             if ( detail )
 134  
             {
 135  0
                 append( sb, "Available parameters:", 1 );
 136  0
                 append( sb, "", 0 );
 137  
 
 138  0
                 append( sb, "detail (Default: false)", 2 );
 139  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 140  0
                 append( sb, "Expression: ${detail}", 3 );
 141  0
                 append( sb, "", 0 );
 142  
 
 143  0
                 append( sb, "goal", 2 );
 144  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 145  0
                 append( sb, "Expression: ${goal}", 3 );
 146  0
                 append( sb, "", 0 );
 147  
 
 148  0
                 append( sb, "indentSize (Default: 2)", 2 );
 149  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 150  0
                 append( sb, "Expression: ${indentSize}", 3 );
 151  0
                 append( sb, "", 0 );
 152  
 
 153  0
                 append( sb, "lineLength (Default: 80)", 2 );
 154  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 155  0
                 append( sb, "Expression: ${lineLength}", 3 );
 156  0
                 append( sb, "", 0 );
 157  
             }
 158  
         }
 159  
 
 160  0
         if ( getLog().isInfoEnabled() )
 161  
         {
 162  0
             getLog().info( sb.toString() );
 163  
         }
 164  0
     }
 165  
 
 166  
     /**
 167  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 168  
      *
 169  
      * @param str String to repeat
 170  
      * @param repeat number of times to repeat str
 171  
      * @return String with repeated String
 172  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 173  
      * @throws NullPointerException if str is <code>null</code>
 174  
      */
 175  
     private static String repeat( String str, int repeat )
 176  
     {
 177  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 178  
 
 179  0
         for ( int i = 0; i < repeat; i++ )
 180  
         {
 181  0
             buffer.append( str );
 182  
         }
 183  
 
 184  0
         return buffer.toString();
 185  
     }
 186  
 
 187  
     /** 
 188  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 189  
      * <b>Note</b>: The last character is always a new line.
 190  
      * 
 191  
      * @param sb The buffer to append the description, not <code>null</code>.
 192  
      * @param description The description, not <code>null</code>.
 193  
      * @param indent The base indentation level of each line, must not be negative.
 194  
      */
 195  
     private void append( StringBuffer sb, String description, int indent )
 196  
     {
 197  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 198  
         {
 199  0
             sb.append( it.next().toString() ).append( '\n' );
 200  
         }
 201  0
     }
 202  
 
 203  
     /** 
 204  
      * Splits the specified text into lines of convenient display length.
 205  
      * 
 206  
      * @param text The text to split into lines, must not be <code>null</code>.
 207  
      * @param indent The base indentation level of each line, must not be negative.
 208  
      * @param indentSize The size of each indentation, must not be negative.
 209  
      * @param lineLength The length of the line, must not be negative.
 210  
      * @return The sequence of display lines, never <code>null</code>.
 211  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 212  
      */
 213  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 214  
     {
 215  0
         List<String> lines = new ArrayList<String>();
 216  
 
 217  0
         String ind = repeat( "\t", indent );
 218  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 219  0
         for ( int i = 0; i < plainLines.length; i++ )
 220  
         {
 221  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 222  
         }
 223  
 
 224  0
         return lines;
 225  
     }
 226  
 
 227  
     /** 
 228  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 229  
      * 
 230  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 231  
      * @param line The line to add, must not be <code>null</code>.
 232  
      * @param indentSize The size of each indentation, must not be negative.
 233  
      * @param lineLength The length of the line, must not be negative.
 234  
      */
 235  
     private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
 236  
     {
 237  0
         int lineIndent = getIndentLevel( line );
 238  0
         StringBuffer buf = new StringBuffer( 256 );
 239  0
         String[] tokens = line.split( " +" );
 240  0
         for ( int i = 0; i < tokens.length; i++ )
 241  
         {
 242  0
             String token = tokens[i];
 243  0
             if ( i > 0 )
 244  
             {
 245  0
                 if ( buf.length() + token.length() >= lineLength )
 246  
                 {
 247  0
                     lines.add( buf.toString() );
 248  0
                     buf.setLength( 0 );
 249  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 250  
                 }
 251  
                 else
 252  
                 {
 253  0
                     buf.append( ' ' );
 254  
                 }
 255  
             }
 256  0
             for ( int j = 0; j < token.length(); j++ )
 257  
             {
 258  0
                 char c = token.charAt( j );
 259  0
                 if ( c == '\t' )
 260  
                 {
 261  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 262  
                 }
 263  0
                 else if ( c == '\u00A0' )
 264  
                 {
 265  0
                     buf.append( ' ' );
 266  
                 }
 267  
                 else
 268  
                 {
 269  0
                     buf.append( c );
 270  
                 }
 271  
             }
 272  
         }
 273  0
         lines.add( buf.toString() );
 274  0
     }
 275  
 
 276  
     /** 
 277  
      * Gets the indentation level of the specified line.
 278  
      * 
 279  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 280  
      * @return The indentation level of the line.
 281  
      */
 282  
     private static int getIndentLevel( String line )
 283  
     {
 284  0
         int level = 0;
 285  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 286  
         {
 287  0
             level++;
 288  
         }
 289  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 290  
         {
 291  0
             if ( line.charAt( i ) == '\t' )
 292  
             {
 293  0
                 level++;
 294  0
                 break;
 295  
             }
 296  
         }
 297  0
         return level;
 298  
     }
 299  
 }