Coverage Report - org.apache.maven.plugin.ear.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/230
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 Tue Jan 25 18:36:24 CET 2011
 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.5", 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 (Default: ${basedir}/src/main/application)", 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 (Default: ${project.build.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 (Default: ${project.build.directory})", 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 enabled.", 3 );
 176  0
                 append( sb, "", 0 );
 177  
 
 178  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 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 (Default: ${project.build.directory}/${project.build.finalName})", 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, "applicationName", 2 );
 213  0
                 append( sb, "Application name of the application to be used when the application.xml file is auto-generated. Since JavaEE6.", 3 );
 214  0
                 append( sb, "", 0 );
 215  
 
 216  0
                 append( sb, "artifactTypeMappings", 2 );
 217  0
                 append( sb, "The artifact type mappings.", 3 );
 218  0
                 append( sb, "", 0 );
 219  
 
 220  0
                 append( sb, "defaultLibBundleDir", 2 );
 221  0
                 append( sb, "The default bundle dir for libraries.", 3 );
 222  0
                 append( sb, "", 0 );
 223  
 
 224  0
                 append( sb, "description (Default: ${project.description})", 2 );
 225  0
                 append( sb, "Description of the application to be used when the application.xml file is auto-generated.", 3 );
 226  0
                 append( sb, "", 0 );
 227  
 
 228  0
                 append( sb, "displayName (Default: ${project.artifactId})", 2 );
 229  0
                 append( sb, "Display name of the application to be used when the application.xml file is auto-generated.", 3 );
 230  0
                 append( sb, "", 0 );
 231  
 
 232  0
                 append( sb, "encoding (Default: UTF-8)", 2 );
 233  0
                 append( sb, "Character encoding for the auto-generated deployment file(s).", 3 );
 234  0
                 append( sb, "", 0 );
 235  
 
 236  0
                 append( sb, "fileNameMapping", 2 );
 237  0
                 append( sb, "The file name mapping to use for all dependencies included in the EAR file.", 3 );
 238  0
                 append( sb, "", 0 );
 239  
 
 240  0
                 append( sb, "generateApplicationXml (Default: true)", 2 );
 241  0
                 append( sb, "Whether the application.xml should be generated or not.", 3 );
 242  0
                 append( sb, "", 0 );
 243  
 
 244  0
                 append( sb, "generatedDescriptorLocation (Default: ${project.build.directory})", 2 );
 245  0
                 append( sb, "Directory where the deployment descriptor file(s) will be auto-generated.", 3 );
 246  0
                 append( sb, "", 0 );
 247  
 
 248  0
                 append( sb, "generateModuleId (Default: false)", 2 );
 249  0
                 append( sb, "Whether a module ID should be generated if none is specified.", 3 );
 250  0
                 append( sb, "", 0 );
 251  
 
 252  0
                 append( sb, "includeLibInApplicationXml (Default: false)", 2 );
 253  0
                 append( sb, "Should libraries be added in application.xml", 3 );
 254  0
                 append( sb, "", 0 );
 255  
 
 256  0
                 append( sb, "initializeInOrder", 2 );
 257  0
                 append( sb, "Defines the value of the initialize in order element to be used when the application.xml file is auto-generated. When set to true, modules must be initialized in the order they\'re listed in this deployment descriptor, with the exception of application client modules, which can be initialized in any order. If initialize-in-order is not set or set to false, the order of initialization is unspecified and may be product-dependent. Since JavaEE6.", 3 );
 258  0
                 append( sb, "", 0 );
 259  
 
 260  0
                 append( sb, "jboss", 2 );
 261  0
                 append( sb, "The JBoss specific configuration.", 3 );
 262  0
                 append( sb, "", 0 );
 263  
 
 264  0
                 append( sb, "mainArtifactId", 2 );
 265  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 );
 266  0
                 append( sb, "", 0 );
 267  
 
 268  0
                 append( sb, "modules", 2 );
 269  0
                 append( sb, "The ear modules configuration.", 3 );
 270  0
                 append( sb, "", 0 );
 271  
 
 272  0
                 append( sb, "security", 2 );
 273  0
                 append( sb, "The security-roles to be added to the auto-generated application.xml file.", 3 );
 274  0
                 append( sb, "", 0 );
 275  
 
 276  0
                 append( sb, "version (Default: 1.3)", 2 );
 277  0
                 append( sb, "The version of the application.xml to generate. Valid values are 1.3, 1.4, 5 and 6.", 3 );
 278  0
                 append( sb, "", 0 );
 279  
 
 280  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/${project.build.finalName})", 2 );
 281  0
                 append( sb, "Directory that resources are copied to during the build.", 3 );
 282  0
                 append( sb, "", 0 );
 283  
             }
 284  
         }
 285  
 
 286  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 287  
         {
 288  0
             append( sb, "ear:help", 0 );
 289  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 );
 290  0
             append( sb, "", 0 );
 291  0
             if ( detail )
 292  
             {
 293  0
                 append( sb, "Available parameters:", 1 );
 294  0
                 append( sb, "", 0 );
 295  
 
 296  0
                 append( sb, "detail (Default: false)", 2 );
 297  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 298  0
                 append( sb, "", 0 );
 299  
 
 300  0
                 append( sb, "goal", 2 );
 301  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 302  0
                 append( sb, "", 0 );
 303  
 
 304  0
                 append( sb, "indentSize (Default: 2)", 2 );
 305  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 306  0
                 append( sb, "", 0 );
 307  
 
 308  0
                 append( sb, "lineLength (Default: 80)", 2 );
 309  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 310  0
                 append( sb, "", 0 );
 311  
             }
 312  
         }
 313  
 
 314  0
         if ( getLog().isInfoEnabled() )
 315  
         {
 316  0
             getLog().info( sb.toString() );
 317  
         }
 318  0
     }
 319  
 
 320  
     /**
 321  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 322  
      *
 323  
      * @param str String to repeat
 324  
      * @param repeat number of times to repeat str
 325  
      * @return String with repeated String
 326  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 327  
      * @throws NullPointerException if str is <code>null</code>
 328  
      */
 329  
     private static String repeat( String str, int repeat )
 330  
     {
 331  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 332  
 
 333  0
         for ( int i = 0; i < repeat; i++ )
 334  
         {
 335  0
             buffer.append( str );
 336  
         }
 337  
 
 338  0
         return buffer.toString();
 339  
     }
 340  
 
 341  
     /** 
 342  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 343  
      * <b>Note</b>: The last character is always a new line.
 344  
      * 
 345  
      * @param sb The buffer to append the description, not <code>null</code>.
 346  
      * @param description The description, not <code>null</code>.
 347  
      * @param indent The base indentation level of each line, must not be negative.
 348  
      */
 349  
     private void append( StringBuffer sb, String description, int indent )
 350  
     {
 351  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 352  
         {
 353  0
             sb.append( it.next().toString() ).append( '\n' );
 354  
         }
 355  0
     }
 356  
 
 357  
     /** 
 358  
      * Splits the specified text into lines of convenient display length.
 359  
      * 
 360  
      * @param text The text to split into lines, must not be <code>null</code>.
 361  
      * @param indent The base indentation level of each line, must not be negative.
 362  
      * @param indentSize The size of each indentation, must not be negative.
 363  
      * @param lineLength The length of the line, must not be negative.
 364  
      * @return The sequence of display lines, never <code>null</code>.
 365  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 366  
      */
 367  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 368  
     {
 369  0
         List lines = new ArrayList();
 370  
 
 371  0
         String ind = repeat( "\t", indent );
 372  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 373  0
         for ( int i = 0; i < plainLines.length; i++ )
 374  
         {
 375  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 376  
         }
 377  
 
 378  0
         return lines;
 379  
     }
 380  
 
 381  
     /** 
 382  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 383  
      * 
 384  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 385  
      * @param line The line to add, must not be <code>null</code>.
 386  
      * @param indentSize The size of each indentation, must not be negative.
 387  
      * @param lineLength The length of the line, must not be negative.
 388  
      */
 389  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 390  
     {
 391  0
         int lineIndent = getIndentLevel( line );
 392  0
         StringBuffer buf = new StringBuffer( 256 );
 393  0
         String[] tokens = line.split( " +" );
 394  0
         for ( int i = 0; i < tokens.length; i++ )
 395  
         {
 396  0
             String token = tokens[i];
 397  0
             if ( i > 0 )
 398  
             {
 399  0
                 if ( buf.length() + token.length() >= lineLength )
 400  
                 {
 401  0
                     lines.add( buf.toString() );
 402  0
                     buf.setLength( 0 );
 403  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 404  
                 }
 405  
                 else
 406  
                 {
 407  0
                     buf.append( ' ' );
 408  
                 }
 409  
             }
 410  0
             for ( int j = 0; j < token.length(); j++ )
 411  
             {
 412  0
                 char c = token.charAt( j );
 413  0
                 if ( c == '\t' )
 414  
                 {
 415  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 416  
                 }
 417  0
                 else if ( c == '\u00A0' )
 418  
                 {
 419  0
                     buf.append( ' ' );
 420  
                 }
 421  
                 else
 422  
                 {
 423  0
                     buf.append( c );
 424  
                 }
 425  
             }
 426  
         }
 427  0
         lines.add( buf.toString() );
 428  0
     }
 429  
 
 430  
     /** 
 431  
      * Gets the indentation level of the specified line.
 432  
      * 
 433  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 434  
      * @return The indentation level of the line.
 435  
      */
 436  
     private static int getIndentLevel( String line )
 437  
     {
 438  0
         int level = 0;
 439  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 440  
         {
 441  0
             level++;
 442  
         }
 443  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 444  
         {
 445  0
             if ( line.charAt( i ) == '\t' )
 446  
             {
 447  0
                 level++;
 448  0
                 break;
 449  
             }
 450  
         }
 451  0
         return level;
 452  
     }
 453  
 }