Coverage Report - org.apache.maven.plugin.ear.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/221
0%
0/62
4.667
 
 1  
 package org.apache.maven.plugin.ear;
 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-ear-plugin.<br/> Call <pre>  mvn ear:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Mon May 17 23:51:35 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-ear-plugin:2.4.2", 0 );
 68  0
         append( sb, "", 0 );
 69  
 
 70  0
         append( sb, "Maven EAR Plugin", 0 );
 71  0
         append( sb, "Generates a J2EE Enterprise Archive (EAR) file.", 1 );
 72  0
         append( sb, "", 0 );
 73  
 
 74  0
         if ( goal == null || goal.length() <= 0 )
 75  
         {
 76  0
             append( sb, "This plugin has 3 goals:", 0 );
 77  0
             append( sb, "", 0 );
 78  
         }
 79  
 
 80  0
         if ( goal == null || goal.length() <= 0 || "ear".equals( goal ) )
 81  
         {
 82  0
             append( sb, "ear:ear", 0 );
 83  0
             append( sb, "Builds J2EE Enteprise Archive (EAR) files.", 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, "applicationXml", 2 );
 91  0
                 append( sb, "The location of a custom application.xml file to be used within the ear file.", 3 );
 92  0
                 append( sb, "", 0 );
 93  
 
 94  0
                 append( sb, "archive", 2 );
 95  0
                 append( sb, "The archive configuration to use. See Maven Archiver Reference.", 3 );
 96  0
                 append( sb, "", 0 );
 97  
 
 98  0
                 append( sb, "artifactTypeMappings", 2 );
 99  0
                 append( sb, "The artifact type mappings.", 3 );
 100  0
                 append( sb, "", 0 );
 101  
 
 102  0
                 append( sb, "classifier", 2 );
 103  0
                 append( sb, "Classifier to add to the artifact generated. If given, the artifact will be an attachment instead.", 3 );
 104  0
                 append( sb, "", 0 );
 105  
 
 106  0
                 append( sb, "defaultLibBundleDir", 2 );
 107  0
                 append( sb, "The default bundle dir for libraries.", 3 );
 108  0
                 append( sb, "", 0 );
 109  
 
 110  0
                 append( sb, "earSourceDirectory", 2 );
 111  0
                 append( sb, "Single directory for extra files to include in the EAR.", 3 );
 112  0
                 append( sb, "", 0 );
 113  
 
 114  0
                 append( sb, "earSourceExcludes", 2 );
 115  0
                 append( sb, "The comma separated list of tokens to exclude from the EAR.", 3 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "earSourceIncludes (Default: **)", 2 );
 119  0
                 append( sb, "The comma separated list of tokens to include in the EAR.", 3 );
 120  0
                 append( sb, "", 0 );
 121  
 
 122  0
                 append( sb, "encoding (Default: UTF-8)", 2 );
 123  0
                 append( sb, "Character encoding for the auto-generated deployment file(s).", 3 );
 124  0
                 append( sb, "", 0 );
 125  
 
 126  0
                 append( sb, "escapedBackslashesInFilePath (Default: false)", 2 );
 127  0
                 append( sb, "To escape interpolated value with windows path c:\\foo\\bar will be replaced with c:\\\\foo\\\\bar", 3 );
 128  0
                 append( sb, "", 0 );
 129  
 
 130  0
                 append( sb, "escapeString", 2 );
 131  0
                 append( sb, "Expression preceded with the String won\'t be interpolated \\${foo} will be replaced with ${foo}", 3 );
 132  0
                 append( sb, "", 0 );
 133  
 
 134  0
                 append( sb, "fileNameMapping", 2 );
 135  0
                 append( sb, "The file name mapping to use for all dependencies included in the EAR file.", 3 );
 136  0
                 append( sb, "", 0 );
 137  
 
 138  0
                 append( sb, "filtering (Default: false)", 2 );
 139  0
                 append( sb, "Specify that the ear sources should be filtered.", 3 );
 140  0
                 append( sb, "", 0 );
 141  
 
 142  0
                 append( sb, "filters", 2 );
 143  0
                 append( sb, "Filters (property files) to include during the interpolation of the pom.xml.", 3 );
 144  0
                 append( sb, "", 0 );
 145  
 
 146  0
                 append( sb, "finalName", 2 );
 147  0
                 append( sb, "The name of the EAR file to generate.", 3 );
 148  0
                 append( sb, "", 0 );
 149  
 
 150  0
                 append( sb, "generatedDescriptorLocation", 2 );
 151  0
                 append( sb, "Directory where the deployment descriptor file(s) will be auto-generated.", 3 );
 152  0
                 append( sb, "", 0 );
 153  
 
 154  0
                 append( sb, "includeLibInApplicationXml (Default: false)", 2 );
 155  0
                 append( sb, "Should libraries be added in application.xml", 3 );
 156  0
                 append( sb, "", 0 );
 157  
 
 158  0
                 append( sb, "jboss", 2 );
 159  0
                 append( sb, "The JBoss specific configuration.", 3 );
 160  0
                 append( sb, "", 0 );
 161  
 
 162  0
                 append( sb, "mainArtifactId", 2 );
 163  0
                 append( sb, "The id to use to define the main artifact (e.g. the artifact without a classifier) when there is multiple candidates.", 3 );
 164  0
                 append( sb, "", 0 );
 165  
 
 166  0
                 append( sb, "manifestFile", 2 );
 167  0
                 append( sb, "The location of the manifest file to be used within the ear file. If not value if specified, the default location in the workDirectory is taken. If the file does not exist, a manifest will be generated automatically.", 3 );
 168  0
                 append( sb, "", 0 );
 169  
 
 170  0
                 append( sb, "modules", 2 );
 171  0
                 append( sb, "The ear modules configuration.", 3 );
 172  0
                 append( sb, "", 0 );
 173  
 
 174  0
                 append( sb, "nonFilteredFileExtensions", 2 );
 175  0
                 append( sb, "A list of file extensions that should not be filtered if filtering is actived.", 3 );
 176  0
                 append( sb, "", 0 );
 177  
 
 178  0
                 append( sb, "outputDirectory", 2 );
 179  0
                 append( sb, "The directory for the generated EAR.", 3 );
 180  0
                 append( sb, "", 0 );
 181  
 
 182  0
                 append( sb, "resourcesDir", 2 );
 183  0
                 append( sb, "Deprecated. please use earSourcesDirectory instead", 3 );
 184  0
                 append( sb, "", 0 );
 185  0
                 append( sb, "The directory to get the resources from.", 3 );
 186  0
                 append( sb, "", 0 );
 187  
 
 188  0
                 append( sb, "unpackTypes", 2 );
 189  0
                 append( sb, "The comma separated list of artifact\'s type(s) to unpack by default.", 3 );
 190  0
                 append( sb, "", 0 );
 191  
 
 192  0
                 append( sb, "version (Default: 1.3)", 2 );
 193  0
                 append( sb, "The version of the application.xml to generate. Valid values are 1.3, 1.4, 5 and 6.", 3 );
 194  0
                 append( sb, "", 0 );
 195  
 
 196  0
                 append( sb, "workDirectory", 2 );
 197  0
                 append( sb, "Directory that resources are copied to during the build.", 3 );
 198  0
                 append( sb, "", 0 );
 199  
             }
 200  
         }
 201  
 
 202  0
         if ( goal == null || goal.length() <= 0 || "generate-application-xml".equals( goal ) )
 203  
         {
 204  0
             append( sb, "ear:generate-application-xml", 0 );
 205  0
             append( sb, "A Mojo that generates the EAR deployment descriptor file(s).", 1 );
 206  0
             append( sb, "", 0 );
 207  0
             if ( detail )
 208  
             {
 209  0
                 append( sb, "Available parameters:", 1 );
 210  0
                 append( sb, "", 0 );
 211  
 
 212  0
                 append( sb, "artifactTypeMappings", 2 );
 213  0
                 append( sb, "The artifact type mappings.", 3 );
 214  0
                 append( sb, "", 0 );
 215  
 
 216  0
                 append( sb, "defaultLibBundleDir", 2 );
 217  0
                 append( sb, "The default bundle dir for libraries.", 3 );
 218  0
                 append( sb, "", 0 );
 219  
 
 220  0
                 append( sb, "description", 2 );
 221  0
                 append( sb, "Description of the application to be used when application.xml file is autogenerated.", 3 );
 222  0
                 append( sb, "", 0 );
 223  
 
 224  0
                 append( sb, "displayName", 2 );
 225  0
                 append( sb, "Display name of the application to be used when application.xml file is autogenerated.", 3 );
 226  0
                 append( sb, "", 0 );
 227  
 
 228  0
                 append( sb, "encoding (Default: UTF-8)", 2 );
 229  0
                 append( sb, "Character encoding for the auto-generated deployment file(s).", 3 );
 230  0
                 append( sb, "", 0 );
 231  
 
 232  0
                 append( sb, "fileNameMapping", 2 );
 233  0
                 append( sb, "The file name mapping to use for all dependencies included in the EAR file.", 3 );
 234  0
                 append( sb, "", 0 );
 235  
 
 236  0
                 append( sb, "generateApplicationXml", 2 );
 237  0
                 append( sb, "Whether the application.xml should be generated or not.", 3 );
 238  0
                 append( sb, "", 0 );
 239  
 
 240  0
                 append( sb, "generatedDescriptorLocation", 2 );
 241  0
                 append( sb, "Directory where the deployment descriptor file(s) will be auto-generated.", 3 );
 242  0
                 append( sb, "", 0 );
 243  
 
 244  0
                 append( sb, "includeLibInApplicationXml (Default: false)", 2 );
 245  0
                 append( sb, "Should libraries be added in application.xml", 3 );
 246  0
                 append( sb, "", 0 );
 247  
 
 248  0
                 append( sb, "jboss", 2 );
 249  0
                 append( sb, "The JBoss specific configuration.", 3 );
 250  0
                 append( sb, "", 0 );
 251  
 
 252  0
                 append( sb, "mainArtifactId", 2 );
 253  0
                 append( sb, "The id to use to define the main artifact (e.g. the artifact without a classifier) when there is multiple candidates.", 3 );
 254  0
                 append( sb, "", 0 );
 255  
 
 256  0
                 append( sb, "modules", 2 );
 257  0
                 append( sb, "The ear modules configuration.", 3 );
 258  0
                 append( sb, "", 0 );
 259  
 
 260  0
                 append( sb, "security", 2 );
 261  0
                 append( sb, "The security-roles to be added to the auto-generated application.xml file.", 3 );
 262  0
                 append( sb, "", 0 );
 263  
 
 264  0
                 append( sb, "version (Default: 1.3)", 2 );
 265  0
                 append( sb, "The version of the application.xml to generate. Valid values are 1.3, 1.4, 5 and 6.", 3 );
 266  0
                 append( sb, "", 0 );
 267  
 
 268  0
                 append( sb, "workDirectory", 2 );
 269  0
                 append( sb, "Directory that resources are copied to during the build.", 3 );
 270  0
                 append( sb, "", 0 );
 271  
             }
 272  
         }
 273  
 
 274  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 275  
         {
 276  0
             append( sb, "ear:help", 0 );
 277  0
             append( sb, "Display help information on maven-ear-plugin.\nCall\n\u00a0\u00a0mvn\u00a0ear:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 278  0
             append( sb, "", 0 );
 279  0
             if ( detail )
 280  
             {
 281  0
                 append( sb, "Available parameters:", 1 );
 282  0
                 append( sb, "", 0 );
 283  
 
 284  0
                 append( sb, "detail (Default: false)", 2 );
 285  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 286  0
                 append( sb, "", 0 );
 287  
 
 288  0
                 append( sb, "goal", 2 );
 289  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 290  0
                 append( sb, "", 0 );
 291  
 
 292  0
                 append( sb, "indentSize (Default: 2)", 2 );
 293  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 294  0
                 append( sb, "", 0 );
 295  
 
 296  0
                 append( sb, "lineLength (Default: 80)", 2 );
 297  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 298  0
                 append( sb, "", 0 );
 299  
             }
 300  
         }
 301  
 
 302  0
         if ( getLog().isInfoEnabled() )
 303  
         {
 304  0
             getLog().info( sb.toString() );
 305  
         }
 306  0
     }
 307  
 
 308  
     /**
 309  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 310  
      *
 311  
      * @param str String to repeat
 312  
      * @param repeat number of times to repeat str
 313  
      * @return String with repeated String
 314  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 315  
      * @throws NullPointerException if str is <code>null</code>
 316  
      */
 317  
     private static String repeat( String str, int repeat )
 318  
     {
 319  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 320  
 
 321  0
         for ( int i = 0; i < repeat; i++ )
 322  
         {
 323  0
             buffer.append( str );
 324  
         }
 325  
 
 326  0
         return buffer.toString();
 327  
     }
 328  
 
 329  
     /** 
 330  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 331  
      * <b>Note</b>: The last character is always a new line.
 332  
      * 
 333  
      * @param sb The buffer to append the description, not <code>null</code>.
 334  
      * @param description The description, not <code>null</code>.
 335  
      * @param indent The base indentation level of each line, must not be negative.
 336  
      */
 337  
     private void append( StringBuffer sb, String description, int indent )
 338  
     {
 339  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 340  
         {
 341  0
             sb.append( it.next().toString() ).append( '\n' );
 342  
         }
 343  0
     }
 344  
 
 345  
     /** 
 346  
      * Splits the specified text into lines of convenient display length.
 347  
      * 
 348  
      * @param text The text to split into lines, must not be <code>null</code>.
 349  
      * @param indent The base indentation level of each line, must not be negative.
 350  
      * @param indentSize The size of each indentation, must not be negative.
 351  
      * @param lineLength The length of the line, must not be negative.
 352  
      * @return The sequence of display lines, never <code>null</code>.
 353  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 354  
      */
 355  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 356  
     {
 357  0
         List lines = new ArrayList();
 358  
 
 359  0
         String ind = repeat( "\t", indent );
 360  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 361  0
         for ( int i = 0; i < plainLines.length; i++ )
 362  
         {
 363  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 364  
         }
 365  
 
 366  0
         return lines;
 367  
     }
 368  
 
 369  
     /** 
 370  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 371  
      * 
 372  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 373  
      * @param line The line to add, must not be <code>null</code>.
 374  
      * @param indentSize The size of each indentation, must not be negative.
 375  
      * @param lineLength The length of the line, must not be negative.
 376  
      */
 377  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 378  
     {
 379  0
         int lineIndent = getIndentLevel( line );
 380  0
         StringBuffer buf = new StringBuffer( 256 );
 381  0
         String[] tokens = line.split( " +" );
 382  0
         for ( int i = 0; i < tokens.length; i++ )
 383  
         {
 384  0
             String token = tokens[i];
 385  0
             if ( i > 0 )
 386  
             {
 387  0
                 if ( buf.length() + token.length() >= lineLength )
 388  
                 {
 389  0
                     lines.add( buf.toString() );
 390  0
                     buf.setLength( 0 );
 391  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 392  
                 }
 393  
                 else
 394  
                 {
 395  0
                     buf.append( ' ' );
 396  
                 }
 397  
             }
 398  0
             for ( int j = 0; j < token.length(); j++ )
 399  
             {
 400  0
                 char c = token.charAt( j );
 401  0
                 if ( c == '\t' )
 402  
                 {
 403  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 404  
                 }
 405  0
                 else if ( c == '\u00A0' )
 406  
                 {
 407  0
                     buf.append( ' ' );
 408  
                 }
 409  
                 else
 410  
                 {
 411  0
                     buf.append( c );
 412  
                 }
 413  
             }
 414  
         }
 415  0
         lines.add( buf.toString() );
 416  0
     }
 417  
 
 418  
     /** 
 419  
      * Gets the indentation level of the specified line.
 420  
      * 
 421  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 422  
      * @return The indentation level of the line.
 423  
      */
 424  
     private static int getIndentLevel( String line )
 425  
     {
 426  0
         int level = 0;
 427  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 428  
         {
 429  0
             level++;
 430  
         }
 431  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 432  
         {
 433  0
             if ( line.charAt( i ) == '\t' )
 434  
             {
 435  0
                 level++;
 436  0
                 break;
 437  
             }
 438  
         }
 439  0
         return level;
 440  
     }
 441  
 }