Coverage Report - org.apache.maven.plugin.assembly.mojos.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/763
0%
0/114
7,333
 
 1  
 package org.apache.maven.plugin.assembly.mojos;
 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-assembly-plugin.<br/> Call <pre>  mvn assembly:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Thu Feb 24 21:11:31 CET 2011
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.7)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  * @threadSafe
 18  
  */
 19  0
 public class HelpMojo
 20  
     extends AbstractMojo
 21  
 {
 22  
     /**
 23  
      * If <code>true</code>, display all settable properties for each goal.
 24  
      * 
 25  
      * @parameter expression="${detail}" default-value="false"
 26  
      */
 27  
     private boolean detail;
 28  
 
 29  
     /**
 30  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 31  
      * 
 32  
      * @parameter expression="${goal}"
 33  
      */
 34  
     private java.lang.String goal;
 35  
 
 36  
     /**
 37  
      * The maximum length of a display line, should be positive.
 38  
      * 
 39  
      * @parameter expression="${lineLength}" default-value="80"
 40  
      */
 41  
     private int lineLength;
 42  
 
 43  
     /**
 44  
      * The number of spaces per indentation level, should be positive.
 45  
      * 
 46  
      * @parameter expression="${indentSize}" default-value="2"
 47  
      */
 48  
     private int indentSize;
 49  
 
 50  
 
 51  
     /** {@inheritDoc} */
 52  
     public void execute()
 53  
         throws MojoExecutionException
 54  
     {
 55  0
         if ( lineLength <= 0 )
 56  
         {
 57  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 58  0
             lineLength = 80;
 59  
         }
 60  0
         if ( indentSize <= 0 )
 61  
         {
 62  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 63  0
             indentSize = 2;
 64  
         }
 65  
 
 66  0
         StringBuffer sb = new StringBuffer();
 67  
 
 68  0
         append( sb, "org.apache.maven.plugins:maven-assembly-plugin:2.2.1", 0 );
 69  0
         append( sb, "", 0 );
 70  
 
 71  0
         append( sb, "Maven Assembly Plugin", 0 );
 72  0
         append( sb, "A Maven plugin to create archives of your project\'s sources, classes, dependencies etc. from flexible assembly descriptors.", 1 );
 73  0
         append( sb, "", 0 );
 74  
 
 75  0
         if ( goal == null || goal.length() <= 0 )
 76  
         {
 77  0
             append( sb, "This plugin has 8 goals:", 0 );
 78  0
             append( sb, "", 0 );
 79  
         }
 80  
 
 81  0
         if ( goal == null || goal.length() <= 0 || "assembly".equals( goal ) )
 82  
         {
 83  0
             append( sb, "assembly:assembly", 0 );
 84  0
             append( sb, "Deprecated. Use assembly:single instead! The assembly:assembly mojo leads to non-standard builds.", 1 );
 85  0
             if ( detail )
 86  
             {
 87  0
                 append( sb, "", 0 );
 88  0
                 append( sb, "Assemble an application bundle or distribution using an assembly descriptor from the command line. This goal will force Maven to build all included POMs up to the package phase BEFORE the assembly is processed.\nNOTE: This goal should ONLY be run from the command line, and if building a multimodule project it should be used from the root POM. Use the assembly:single goal for binding your assembly to the lifecycle.\n", 1 );
 89  
             }
 90  0
             append( sb, "", 0 );
 91  0
             if ( detail )
 92  
             {
 93  0
                 append( sb, "Available parameters:", 1 );
 94  0
                 append( sb, "", 0 );
 95  
 
 96  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 97  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 98  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 99  0
                 append( sb, "", 0 );
 100  
 
 101  0
                 append( sb, "archive", 2 );
 102  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 103  0
                 append( sb, "", 0 );
 104  
 
 105  0
                 append( sb, "archiveBaseDirectory", 2 );
 106  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 107  0
                 append( sb, "", 0 );
 108  
 
 109  0
                 append( sb, "archiverConfig", 2 );
 110  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 111  0
                 append( sb, "", 0 );
 112  
 
 113  0
                 append( sb, "attach (Default: true)", 2 );
 114  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 115  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "classifier", 2 );
 119  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 120  0
                 append( sb, "", 0 );
 121  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 122  0
                 append( sb, "Expression: ${classifier}", 3 );
 123  0
                 append( sb, "", 0 );
 124  
 
 125  0
                 append( sb, "descriptor", 2 );
 126  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 127  0
                 append( sb, "", 0 );
 128  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 129  0
                 append( sb, "Expression: ${descriptor}", 3 );
 130  0
                 append( sb, "", 0 );
 131  
 
 132  0
                 append( sb, "descriptorId", 2 );
 133  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 134  0
                 append( sb, "", 0 );
 135  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 136  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 137  0
                 append( sb, "", 0 );
 138  
 
 139  0
                 append( sb, "descriptorRefs", 2 );
 140  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 141  0
                 append( sb, "", 0 );
 142  
 
 143  0
                 append( sb, "descriptors", 2 );
 144  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 145  0
                 append( sb, "", 0 );
 146  
 
 147  0
                 append( sb, "descriptorSourceDirectory", 2 );
 148  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 149  0
                 append( sb, "", 0 );
 150  
 
 151  0
                 append( sb, "dryRun (Default: false)", 2 );
 152  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 153  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 154  0
                 append( sb, "", 0 );
 155  
 
 156  0
                 append( sb, "executedProject", 2 );
 157  0
                 append( sb, "Get the executed project from the forked lifecycle.", 3 );
 158  0
                 append( sb, "Expression: ${executedProject}", 3 );
 159  0
                 append( sb, "", 0 );
 160  
 
 161  0
                 append( sb, "filters", 2 );
 162  0
                 append( sb, "(no description available)", 3 );
 163  0
                 append( sb, "", 0 );
 164  
 
 165  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 166  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 167  0
                 append( sb, "Required: Yes", 3 );
 168  0
                 append( sb, "", 0 );
 169  
 
 170  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 171  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 172  0
                 append( sb, "", 0 );
 173  
 
 174  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 175  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 176  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 177  0
                 append( sb, "", 0 );
 178  
 
 179  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 180  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 181  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 182  0
                 append( sb, "", 0 );
 183  
 
 184  0
                 append( sb, "includeSite (Default: false)", 2 );
 185  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 186  0
                 append( sb, "", 0 );
 187  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 188  0
                 append( sb, "Expression: ${includeSite}", 3 );
 189  0
                 append( sb, "", 0 );
 190  
 
 191  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 192  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 193  0
                 append( sb, "Required: Yes", 3 );
 194  0
                 append( sb, "", 0 );
 195  
 
 196  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 197  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 198  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 199  0
                 append( sb, "", 0 );
 200  
 
 201  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 202  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 203  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 204  0
                 append( sb, "", 0 );
 205  
 
 206  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 207  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 208  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 209  0
                 append( sb, "", 0 );
 210  
 
 211  0
                 append( sb, "updateOnly (Default: false)", 2 );
 212  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 213  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 214  0
                 append( sb, "", 0 );
 215  
 
 216  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 217  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 218  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 219  0
                 append( sb, "", 0 );
 220  
 
 221  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 222  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 223  0
                 append( sb, "Required: Yes", 3 );
 224  0
                 append( sb, "", 0 );
 225  
             }
 226  
         }
 227  
 
 228  0
         if ( goal == null || goal.length() <= 0 || "attached".equals( goal ) )
 229  
         {
 230  0
             append( sb, "assembly:attached", 0 );
 231  0
             append( sb, "Deprecated. Use assembly:single instead! The assembly:attached mojo leads to non-standard builds.", 1 );
 232  0
             if ( detail )
 233  
             {
 234  0
                 append( sb, "", 0 );
 235  0
                 append( sb, "Assemble an application bundle or distribution from an assembly descriptor, WITHOUT first forcing Maven to build all POMs to the package phase (as is required by the assembly:assembly goal).\nNOTE: This goal should ONLY be run from the command line, and if building a multimodule project it should be used from the root POM. Use the assembly:single goal for binding your assembly to the lifecycle.", 1 );
 236  
             }
 237  0
             append( sb, "", 0 );
 238  0
             if ( detail )
 239  
             {
 240  0
                 append( sb, "Available parameters:", 1 );
 241  0
                 append( sb, "", 0 );
 242  
 
 243  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 244  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 245  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 246  0
                 append( sb, "", 0 );
 247  
 
 248  0
                 append( sb, "archive", 2 );
 249  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 250  0
                 append( sb, "", 0 );
 251  
 
 252  0
                 append( sb, "archiveBaseDirectory", 2 );
 253  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 254  0
                 append( sb, "", 0 );
 255  
 
 256  0
                 append( sb, "archiverConfig", 2 );
 257  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 258  0
                 append( sb, "", 0 );
 259  
 
 260  0
                 append( sb, "attach (Default: true)", 2 );
 261  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 262  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 263  0
                 append( sb, "", 0 );
 264  
 
 265  0
                 append( sb, "classifier", 2 );
 266  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 267  0
                 append( sb, "", 0 );
 268  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 269  0
                 append( sb, "Expression: ${classifier}", 3 );
 270  0
                 append( sb, "", 0 );
 271  
 
 272  0
                 append( sb, "descriptor", 2 );
 273  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 274  0
                 append( sb, "", 0 );
 275  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 276  0
                 append( sb, "Expression: ${descriptor}", 3 );
 277  0
                 append( sb, "", 0 );
 278  
 
 279  0
                 append( sb, "descriptorId", 2 );
 280  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 281  0
                 append( sb, "", 0 );
 282  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 283  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 284  0
                 append( sb, "", 0 );
 285  
 
 286  0
                 append( sb, "descriptorRefs", 2 );
 287  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 288  0
                 append( sb, "", 0 );
 289  
 
 290  0
                 append( sb, "descriptors", 2 );
 291  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 292  0
                 append( sb, "", 0 );
 293  
 
 294  0
                 append( sb, "descriptorSourceDirectory", 2 );
 295  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 296  0
                 append( sb, "", 0 );
 297  
 
 298  0
                 append( sb, "dryRun (Default: false)", 2 );
 299  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 300  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 301  0
                 append( sb, "", 0 );
 302  
 
 303  0
                 append( sb, "filters", 2 );
 304  0
                 append( sb, "(no description available)", 3 );
 305  0
                 append( sb, "", 0 );
 306  
 
 307  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 308  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 309  0
                 append( sb, "Required: Yes", 3 );
 310  0
                 append( sb, "", 0 );
 311  
 
 312  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 313  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 314  0
                 append( sb, "", 0 );
 315  
 
 316  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 317  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 318  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 319  0
                 append( sb, "", 0 );
 320  
 
 321  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 322  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 323  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 324  0
                 append( sb, "", 0 );
 325  
 
 326  0
                 append( sb, "includeSite (Default: false)", 2 );
 327  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 328  0
                 append( sb, "", 0 );
 329  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 330  0
                 append( sb, "Expression: ${includeSite}", 3 );
 331  0
                 append( sb, "", 0 );
 332  
 
 333  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 334  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 335  0
                 append( sb, "Required: Yes", 3 );
 336  0
                 append( sb, "", 0 );
 337  
 
 338  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 339  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 340  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 341  0
                 append( sb, "", 0 );
 342  
 
 343  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 344  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 345  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 346  0
                 append( sb, "", 0 );
 347  
 
 348  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 349  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 350  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 351  0
                 append( sb, "", 0 );
 352  
 
 353  0
                 append( sb, "updateOnly (Default: false)", 2 );
 354  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 355  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 356  0
                 append( sb, "", 0 );
 357  
 
 358  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 359  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 360  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 361  0
                 append( sb, "", 0 );
 362  
 
 363  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 364  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 365  0
                 append( sb, "Required: Yes", 3 );
 366  0
                 append( sb, "", 0 );
 367  
             }
 368  
         }
 369  
 
 370  0
         if ( goal == null || goal.length() <= 0 || "directory".equals( goal ) )
 371  
         {
 372  0
             append( sb, "assembly:directory", 0 );
 373  0
             append( sb, "Deprecated. Use assembly:single and an assembly with format == dir instead! This mojo is redundant.", 1 );
 374  0
             if ( detail )
 375  
             {
 376  0
                 append( sb, "", 0 );
 377  0
                 append( sb, "Like the assembly:attached goal, assemble an application bundle or distribution using an assembly descriptor from the command line. This goal will force Maven to build all included POMs up to the package phase BEFORE the assembly is processed. This goal differs from assembly:assembly in that it ignores the <formats/> section of the assembly descriptor, and forces the assembly to be created as a directory in the project\'s build-output directory (usually ./target).\nThis goal is also functionally equivalent to using the assembly:assembly goal in conjunction with the dir assembly format.\nNOTE: This goal should ONLY be run from the command line, and if building a multimodule project it should be used from the root POM. Use the assembly:directory-single goal for binding your assembly to the lifecycle.", 1 );
 378  
             }
 379  0
             append( sb, "", 0 );
 380  0
             if ( detail )
 381  
             {
 382  0
                 append( sb, "Available parameters:", 1 );
 383  0
                 append( sb, "", 0 );
 384  
 
 385  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 386  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 387  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 388  0
                 append( sb, "", 0 );
 389  
 
 390  0
                 append( sb, "archive", 2 );
 391  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 392  0
                 append( sb, "", 0 );
 393  
 
 394  0
                 append( sb, "archiveBaseDirectory", 2 );
 395  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 396  0
                 append( sb, "", 0 );
 397  
 
 398  0
                 append( sb, "archiverConfig", 2 );
 399  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 400  0
                 append( sb, "", 0 );
 401  
 
 402  0
                 append( sb, "attach (Default: true)", 2 );
 403  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 404  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 405  0
                 append( sb, "", 0 );
 406  
 
 407  0
                 append( sb, "classifier", 2 );
 408  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 409  0
                 append( sb, "", 0 );
 410  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 411  0
                 append( sb, "Expression: ${classifier}", 3 );
 412  0
                 append( sb, "", 0 );
 413  
 
 414  0
                 append( sb, "descriptor", 2 );
 415  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 416  0
                 append( sb, "", 0 );
 417  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 418  0
                 append( sb, "Expression: ${descriptor}", 3 );
 419  0
                 append( sb, "", 0 );
 420  
 
 421  0
                 append( sb, "descriptorId", 2 );
 422  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 423  0
                 append( sb, "", 0 );
 424  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 425  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 426  0
                 append( sb, "", 0 );
 427  
 
 428  0
                 append( sb, "descriptorRefs", 2 );
 429  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 430  0
                 append( sb, "", 0 );
 431  
 
 432  0
                 append( sb, "descriptors", 2 );
 433  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 434  0
                 append( sb, "", 0 );
 435  
 
 436  0
                 append( sb, "descriptorSourceDirectory", 2 );
 437  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 438  0
                 append( sb, "", 0 );
 439  
 
 440  0
                 append( sb, "dryRun (Default: false)", 2 );
 441  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 442  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 443  0
                 append( sb, "", 0 );
 444  
 
 445  0
                 append( sb, "executedProject", 2 );
 446  0
                 append( sb, "Get the executed project from the forked lifecycle.", 3 );
 447  0
                 append( sb, "Expression: ${executedProject}", 3 );
 448  0
                 append( sb, "", 0 );
 449  
 
 450  0
                 append( sb, "filters", 2 );
 451  0
                 append( sb, "(no description available)", 3 );
 452  0
                 append( sb, "", 0 );
 453  
 
 454  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 455  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 456  0
                 append( sb, "Required: Yes", 3 );
 457  0
                 append( sb, "", 0 );
 458  
 
 459  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 460  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 461  0
                 append( sb, "", 0 );
 462  
 
 463  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 464  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 465  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 466  0
                 append( sb, "", 0 );
 467  
 
 468  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 469  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 470  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 471  0
                 append( sb, "", 0 );
 472  
 
 473  0
                 append( sb, "includeSite (Default: false)", 2 );
 474  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 475  0
                 append( sb, "", 0 );
 476  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 477  0
                 append( sb, "Expression: ${includeSite}", 3 );
 478  0
                 append( sb, "", 0 );
 479  
 
 480  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 481  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 482  0
                 append( sb, "Required: Yes", 3 );
 483  0
                 append( sb, "", 0 );
 484  
 
 485  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 486  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 487  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 488  0
                 append( sb, "", 0 );
 489  
 
 490  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 491  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 492  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 493  0
                 append( sb, "", 0 );
 494  
 
 495  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 496  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 497  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 498  0
                 append( sb, "", 0 );
 499  
 
 500  0
                 append( sb, "updateOnly (Default: false)", 2 );
 501  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 502  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 503  0
                 append( sb, "", 0 );
 504  
 
 505  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 506  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 507  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 508  0
                 append( sb, "", 0 );
 509  
 
 510  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 511  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 512  0
                 append( sb, "Required: Yes", 3 );
 513  0
                 append( sb, "", 0 );
 514  
             }
 515  
         }
 516  
 
 517  0
         if ( goal == null || goal.length() <= 0 || "directory-inline".equals( goal ) )
 518  
         {
 519  0
             append( sb, "assembly:directory-inline", 0 );
 520  0
             append( sb, "Deprecated. Use assembly:single and an assembly with format == dir instead! This mojo is redundant, and leads to non-standard builds.", 1 );
 521  0
             if ( detail )
 522  
             {
 523  0
                 append( sb, "", 0 );
 524  0
                 append( sb, "Like the assembly:attached goal, assemble an application bundle or distribution from an assembly descriptor, WITHOUT first forcing Maven to build all POMs to the package phase (as is required by the assembly:assembly goal). This goal differs from assembly:attached in that it ignores the <formats/> section of the assembly descriptor, and forces the assembly to be created as a directory in the project\'s build-output directory (usually ./target).\nThis goal is also functionally equivalent to using the assembly:attached goal in conjunction with the dir assembly format.\nNOTE: This goal should ONLY be run from the command line, and if building a multimodule project it should be used from the root POM. Use the assembly:directory-single goal for binding your assembly to the lifecycle.", 1 );
 525  
             }
 526  0
             append( sb, "", 0 );
 527  0
             if ( detail )
 528  
             {
 529  0
                 append( sb, "Available parameters:", 1 );
 530  0
                 append( sb, "", 0 );
 531  
 
 532  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 533  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 534  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 535  0
                 append( sb, "", 0 );
 536  
 
 537  0
                 append( sb, "archive", 2 );
 538  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 539  0
                 append( sb, "", 0 );
 540  
 
 541  0
                 append( sb, "archiveBaseDirectory", 2 );
 542  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 543  0
                 append( sb, "", 0 );
 544  
 
 545  0
                 append( sb, "archiverConfig", 2 );
 546  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 547  0
                 append( sb, "", 0 );
 548  
 
 549  0
                 append( sb, "attach (Default: true)", 2 );
 550  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 551  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 552  0
                 append( sb, "", 0 );
 553  
 
 554  0
                 append( sb, "classifier", 2 );
 555  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 556  0
                 append( sb, "", 0 );
 557  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 558  0
                 append( sb, "Expression: ${classifier}", 3 );
 559  0
                 append( sb, "", 0 );
 560  
 
 561  0
                 append( sb, "descriptor", 2 );
 562  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 563  0
                 append( sb, "", 0 );
 564  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 565  0
                 append( sb, "Expression: ${descriptor}", 3 );
 566  0
                 append( sb, "", 0 );
 567  
 
 568  0
                 append( sb, "descriptorId", 2 );
 569  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 570  0
                 append( sb, "", 0 );
 571  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 572  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 573  0
                 append( sb, "", 0 );
 574  
 
 575  0
                 append( sb, "descriptorRefs", 2 );
 576  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 577  0
                 append( sb, "", 0 );
 578  
 
 579  0
                 append( sb, "descriptors", 2 );
 580  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 581  0
                 append( sb, "", 0 );
 582  
 
 583  0
                 append( sb, "descriptorSourceDirectory", 2 );
 584  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 585  0
                 append( sb, "", 0 );
 586  
 
 587  0
                 append( sb, "dryRun (Default: false)", 2 );
 588  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 589  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 590  0
                 append( sb, "", 0 );
 591  
 
 592  0
                 append( sb, "filters", 2 );
 593  0
                 append( sb, "(no description available)", 3 );
 594  0
                 append( sb, "", 0 );
 595  
 
 596  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 597  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 598  0
                 append( sb, "Required: Yes", 3 );
 599  0
                 append( sb, "", 0 );
 600  
 
 601  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 602  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 603  0
                 append( sb, "", 0 );
 604  
 
 605  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 606  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 607  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 608  0
                 append( sb, "", 0 );
 609  
 
 610  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 611  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 612  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 613  0
                 append( sb, "", 0 );
 614  
 
 615  0
                 append( sb, "includeSite (Default: false)", 2 );
 616  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 617  0
                 append( sb, "", 0 );
 618  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 619  0
                 append( sb, "Expression: ${includeSite}", 3 );
 620  0
                 append( sb, "", 0 );
 621  
 
 622  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 623  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 624  0
                 append( sb, "Required: Yes", 3 );
 625  0
                 append( sb, "", 0 );
 626  
 
 627  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 628  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 629  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 630  0
                 append( sb, "", 0 );
 631  
 
 632  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 633  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 634  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 635  0
                 append( sb, "", 0 );
 636  
 
 637  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 638  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 639  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 640  0
                 append( sb, "", 0 );
 641  
 
 642  0
                 append( sb, "updateOnly (Default: false)", 2 );
 643  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 644  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 645  0
                 append( sb, "", 0 );
 646  
 
 647  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 648  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 649  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 650  0
                 append( sb, "", 0 );
 651  
 
 652  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 653  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 654  0
                 append( sb, "Required: Yes", 3 );
 655  0
                 append( sb, "", 0 );
 656  
             }
 657  
         }
 658  
 
 659  0
         if ( goal == null || goal.length() <= 0 || "directory-single".equals( goal ) )
 660  
         {
 661  0
             append( sb, "assembly:directory-single", 0 );
 662  0
             append( sb, "Deprecated. Use assembly:single and an assembly with format == dir instead! This mojo is redundant.", 1 );
 663  0
             if ( detail )
 664  
             {
 665  0
                 append( sb, "", 0 );
 666  0
                 append( sb, "Like the assembly:attached goal, assemble an application bundle or distribution from an assembly descriptor. This goal is suitable either for binding to the lifecycle or calling directly from the command line (provided all required files are available before the build starts, or are produced by another goal specified before this one on the command line).\nThis goal differs from assembly:single in that it ignores the <formats/> section of the assembly descriptor, and forces the assembly to be created as a directory in the project\'s build-output directory (usually ./target).", 1 );
 667  
             }
 668  0
             append( sb, "", 0 );
 669  0
             if ( detail )
 670  
             {
 671  0
                 append( sb, "Available parameters:", 1 );
 672  0
                 append( sb, "", 0 );
 673  
 
 674  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 675  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 676  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 677  0
                 append( sb, "", 0 );
 678  
 
 679  0
                 append( sb, "archive", 2 );
 680  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 681  0
                 append( sb, "", 0 );
 682  
 
 683  0
                 append( sb, "archiveBaseDirectory", 2 );
 684  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 685  0
                 append( sb, "", 0 );
 686  
 
 687  0
                 append( sb, "archiverConfig", 2 );
 688  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 689  0
                 append( sb, "", 0 );
 690  
 
 691  0
                 append( sb, "attach (Default: true)", 2 );
 692  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 693  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 694  0
                 append( sb, "", 0 );
 695  
 
 696  0
                 append( sb, "classifier", 2 );
 697  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 698  0
                 append( sb, "", 0 );
 699  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 700  0
                 append( sb, "Expression: ${classifier}", 3 );
 701  0
                 append( sb, "", 0 );
 702  
 
 703  0
                 append( sb, "descriptor", 2 );
 704  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 705  0
                 append( sb, "", 0 );
 706  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 707  0
                 append( sb, "Expression: ${descriptor}", 3 );
 708  0
                 append( sb, "", 0 );
 709  
 
 710  0
                 append( sb, "descriptorId", 2 );
 711  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 712  0
                 append( sb, "", 0 );
 713  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 714  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 715  0
                 append( sb, "", 0 );
 716  
 
 717  0
                 append( sb, "descriptorRefs", 2 );
 718  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 719  0
                 append( sb, "", 0 );
 720  
 
 721  0
                 append( sb, "descriptors", 2 );
 722  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 723  0
                 append( sb, "", 0 );
 724  
 
 725  0
                 append( sb, "descriptorSourceDirectory", 2 );
 726  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 727  0
                 append( sb, "", 0 );
 728  
 
 729  0
                 append( sb, "dryRun (Default: false)", 2 );
 730  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 731  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 732  0
                 append( sb, "", 0 );
 733  
 
 734  0
                 append( sb, "filters", 2 );
 735  0
                 append( sb, "(no description available)", 3 );
 736  0
                 append( sb, "", 0 );
 737  
 
 738  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 739  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 740  0
                 append( sb, "Required: Yes", 3 );
 741  0
                 append( sb, "", 0 );
 742  
 
 743  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 744  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 745  0
                 append( sb, "", 0 );
 746  
 
 747  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 748  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 749  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 750  0
                 append( sb, "", 0 );
 751  
 
 752  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 753  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 754  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 755  0
                 append( sb, "", 0 );
 756  
 
 757  0
                 append( sb, "includeSite (Default: false)", 2 );
 758  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 759  0
                 append( sb, "", 0 );
 760  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 761  0
                 append( sb, "Expression: ${includeSite}", 3 );
 762  0
                 append( sb, "", 0 );
 763  
 
 764  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 765  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 766  0
                 append( sb, "Required: Yes", 3 );
 767  0
                 append( sb, "", 0 );
 768  
 
 769  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 770  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 771  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 772  0
                 append( sb, "", 0 );
 773  
 
 774  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 775  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 776  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 777  0
                 append( sb, "", 0 );
 778  
 
 779  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 780  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 781  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 782  0
                 append( sb, "", 0 );
 783  
 
 784  0
                 append( sb, "updateOnly (Default: false)", 2 );
 785  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 786  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 787  0
                 append( sb, "", 0 );
 788  
 
 789  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 790  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 791  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 792  0
                 append( sb, "", 0 );
 793  
 
 794  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 795  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 796  0
                 append( sb, "Required: Yes", 3 );
 797  0
                 append( sb, "", 0 );
 798  
             }
 799  
         }
 800  
 
 801  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 802  
         {
 803  0
             append( sb, "assembly:help", 0 );
 804  0
             append( sb, "Display help information on maven-assembly-plugin.\nCall\n\u00a0\u00a0mvn\u00a0assembly:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 805  0
             append( sb, "", 0 );
 806  0
             if ( detail )
 807  
             {
 808  0
                 append( sb, "Available parameters:", 1 );
 809  0
                 append( sb, "", 0 );
 810  
 
 811  0
                 append( sb, "detail (Default: false)", 2 );
 812  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 813  0
                 append( sb, "Expression: ${detail}", 3 );
 814  0
                 append( sb, "", 0 );
 815  
 
 816  0
                 append( sb, "goal", 2 );
 817  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 818  0
                 append( sb, "Expression: ${goal}", 3 );
 819  0
                 append( sb, "", 0 );
 820  
 
 821  0
                 append( sb, "indentSize (Default: 2)", 2 );
 822  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 823  0
                 append( sb, "Expression: ${indentSize}", 3 );
 824  0
                 append( sb, "", 0 );
 825  
 
 826  0
                 append( sb, "lineLength (Default: 80)", 2 );
 827  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 828  0
                 append( sb, "Expression: ${lineLength}", 3 );
 829  0
                 append( sb, "", 0 );
 830  
             }
 831  
         }
 832  
 
 833  0
         if ( goal == null || goal.length() <= 0 || "single".equals( goal ) )
 834  
         {
 835  0
             append( sb, "assembly:single", 0 );
 836  0
             append( sb, "Assemble an application bundle or distribution from an assembly descriptor. This goal is suitable either for binding to the lifecycle or calling directly from the command line (provided all required files are available before the build starts, or are produced by another goal specified before this one on the command line).", 1 );
 837  0
             append( sb, "", 0 );
 838  0
             if ( detail )
 839  
             {
 840  0
                 append( sb, "Available parameters:", 1 );
 841  0
                 append( sb, "", 0 );
 842  
 
 843  0
                 append( sb, "appendAssemblyId (Default: true)", 2 );
 844  0
                 append( sb, "Set to false to exclude the assembly id from the assembly final name.", 3 );
 845  0
                 append( sb, "Expression: ${assembly.appendAssemblyId}", 3 );
 846  0
                 append( sb, "", 0 );
 847  
 
 848  0
                 append( sb, "archive", 2 );
 849  0
                 append( sb, "This is a set of instructions to the archive builder, especially for building .jar files. It enables you to specify a Manifest file for the jar, in addition to other options.", 3 );
 850  0
                 append( sb, "", 0 );
 851  
 
 852  0
                 append( sb, "archiveBaseDirectory", 2 );
 853  0
                 append( sb, "This is the base directory from which archive files are created. This base directory pre-pended to any <directory> specifications in the assembly descriptor. This is an optional parameter.", 3 );
 854  0
                 append( sb, "", 0 );
 855  
 
 856  0
                 append( sb, "archiverConfig", 2 );
 857  0
                 append( sb, "Allows additional configuration options that are specific to a particular type of archive format. This is intended to capture an XML configuration that will be used to reflectively setup the options on the archiver instance.\nFor instance, to direct an assembly with the \'ear\' format to use a particular deployment descriptor, you should specify the following for the archiverConfig value in your plugin configuration:\n\n<appxml>${project.basedir}/somepath/app.xml</appxml>\n", 3 );
 858  0
                 append( sb, "", 0 );
 859  
 
 860  0
                 append( sb, "attach (Default: true)", 2 );
 861  0
                 append( sb, "Controls whether the assembly plugin tries to attach the resulting assembly to the project.", 3 );
 862  0
                 append( sb, "Expression: ${assembly.attach}", 3 );
 863  0
                 append( sb, "", 0 );
 864  
 
 865  0
                 append( sb, "classifier", 2 );
 866  0
                 append( sb, "Deprecated. Please use the Assembly\'s id for classifier instead", 3 );
 867  0
                 append( sb, "", 0 );
 868  0
                 append( sb, "This is the artifact classifier to be used for the resultant assembly artifact. Normally, you would use the assembly-id instead of specifying this here.", 3 );
 869  0
                 append( sb, "Expression: ${classifier}", 3 );
 870  0
                 append( sb, "", 0 );
 871  
 
 872  0
                 append( sb, "descriptor", 2 );
 873  0
                 append( sb, "Deprecated. Please use descriptors instead", 3 );
 874  0
                 append( sb, "", 0 );
 875  0
                 append( sb, "Assembly XML Descriptor file. This must be the path to your customized descriptor file.", 3 );
 876  0
                 append( sb, "Expression: ${descriptor}", 3 );
 877  0
                 append( sb, "", 0 );
 878  
 
 879  0
                 append( sb, "descriptorId", 2 );
 880  0
                 append( sb, "Deprecated. Please use descriptorRefs instead", 3 );
 881  0
                 append( sb, "", 0 );
 882  0
                 append( sb, "Predefined Assembly Descriptor Id\'s. You can select bin, jar-with-dependencies, or src.", 3 );
 883  0
                 append( sb, "Expression: ${descriptorId}", 3 );
 884  0
                 append( sb, "", 0 );
 885  
 
 886  0
                 append( sb, "descriptorRefs", 2 );
 887  0
                 append( sb, "A list of references to assembly descriptors available on the plugin\'s classpath. The default classpath includes these built-in descriptors: bin, jar-with-dependencies, src, and project. You can add others by adding dependencies to the plugin.", 3 );
 888  0
                 append( sb, "", 0 );
 889  
 
 890  0
                 append( sb, "descriptors", 2 );
 891  0
                 append( sb, "A list of descriptor files to generate from.", 3 );
 892  0
                 append( sb, "", 0 );
 893  
 
 894  0
                 append( sb, "descriptorSourceDirectory", 2 );
 895  0
                 append( sb, "Directory to scan for descriptor files in. NOTE: This may not work correctly with assembly components.", 3 );
 896  0
                 append( sb, "", 0 );
 897  
 
 898  0
                 append( sb, "dryRun (Default: false)", 2 );
 899  0
                 append( sb, "If this flag is set, everything up to the call to Archiver.createArchive() will be executed.", 3 );
 900  0
                 append( sb, "Expression: ${assembly.dryRun}", 3 );
 901  0
                 append( sb, "", 0 );
 902  
 
 903  0
                 append( sb, "filters", 2 );
 904  0
                 append( sb, "(no description available)", 3 );
 905  0
                 append( sb, "", 0 );
 906  
 
 907  0
                 append( sb, "finalName (Default: ${project.build.finalName})", 2 );
 908  0
                 append( sb, "The filename of the assembled distribution file.", 3 );
 909  0
                 append( sb, "Required: Yes", 3 );
 910  0
                 append( sb, "", 0 );
 911  
 
 912  0
                 append( sb, "ignoreDirFormatExtensions (Default: true)", 2 );
 913  0
                 append( sb, "If this flag is set, the \'.dir\' suffix will be suppressed in the output directory name when using assembly/format == \'dir\' and other formats that begin with \'dir\'.\nNOTE: Since 2.2-beta-3, the default-value for this is true, NOT false as it used to be.", 3 );
 914  0
                 append( sb, "", 0 );
 915  
 
 916  0
                 append( sb, "ignoreMissingDescriptor (Default: false)", 2 );
 917  0
                 append( sb, "Set to true in order to not fail when a descriptor is missing.", 3 );
 918  0
                 append( sb, "Expression: ${assembly.ignoreMissingDescriptor}", 3 );
 919  0
                 append( sb, "", 0 );
 920  
 
 921  0
                 append( sb, "ignorePermissions (Default: false)", 2 );
 922  0
                 append( sb, "Set to true in order to avoid all chmod calls.\n\nNOTE: This will cause the assembly plugin to DISREGARD all fileMode/directoryMode settings in the assembly descriptor, and all file permissions in unpacked dependencies!\n", 3 );
 923  0
                 append( sb, "Expression: ${assembly.ignorePermissions}", 3 );
 924  0
                 append( sb, "", 0 );
 925  
 
 926  0
                 append( sb, "includeSite (Default: false)", 2 );
 927  0
                 append( sb, "Deprecated. Please set this variable in the assembly descriptor instead", 3 );
 928  0
                 append( sb, "", 0 );
 929  0
                 append( sb, "Set to true to include the site generated by site:site goal.", 3 );
 930  0
                 append( sb, "Expression: ${includeSite}", 3 );
 931  0
                 append( sb, "", 0 );
 932  
 
 933  0
                 append( sb, "outputDirectory (Default: ${project.build.directory})", 2 );
 934  0
                 append( sb, "The output directory of the assembled distribution file.", 3 );
 935  0
                 append( sb, "Required: Yes", 3 );
 936  0
                 append( sb, "", 0 );
 937  
 
 938  0
                 append( sb, "runOnlyAtExecutionRoot (Default: false)", 2 );
 939  0
                 append( sb, "This will cause the assembly to run only at the top of a given module tree. That is, run in the project contained in the same folder where the mvn execution was launched.", 3 );
 940  0
                 append( sb, "Expression: ${assembly.runOnlyAtExecutionRoot}", 3 );
 941  0
                 append( sb, "", 0 );
 942  
 
 943  0
                 append( sb, "skipAssembly (Default: false)", 2 );
 944  0
                 append( sb, "Flag allowing one or more executions of the assembly plugin to be configured as skipped for a particular build. This makes the assembly plugin more controllable from profiles.", 3 );
 945  0
                 append( sb, "Expression: ${assembly.skipAssembly}", 3 );
 946  0
                 append( sb, "", 0 );
 947  
 
 948  0
                 append( sb, "tarLongFileMode (Default: warn)", 2 );
 949  0
                 append( sb, "Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: \'warn\' (default), \'fail\', \'truncate\', \'gnu\', or \'omit\'.", 3 );
 950  0
                 append( sb, "Expression: ${assembly.tarLongFileMode}", 3 );
 951  0
                 append( sb, "", 0 );
 952  
 
 953  0
                 append( sb, "updateOnly (Default: false)", 2 );
 954  0
                 append( sb, "This will cause the assembly to only update an existing archive, if it exists.", 3 );
 955  0
                 append( sb, "Expression: ${assembly.updatOnly}", 3 );
 956  0
                 append( sb, "", 0 );
 957  
 
 958  0
                 append( sb, "useJvmChmod (Default: false)", 2 );
 959  0
                 append( sb, "will use the jvm chmod, this is available for user and all level group level will be ignored\n", 3 );
 960  0
                 append( sb, "Expression: ${assembly.useJvmChmod}", 3 );
 961  0
                 append( sb, "", 0 );
 962  
 
 963  0
                 append( sb, "workDirectory (Default: ${project.build.directory}/assembly/work)", 2 );
 964  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 965  0
                 append( sb, "Required: Yes", 3 );
 966  0
                 append( sb, "", 0 );
 967  
             }
 968  
         }
 969  
 
 970  0
         if ( goal == null || goal.length() <= 0 || "unpack".equals( goal ) )
 971  
         {
 972  0
             append( sb, "assembly:unpack", 0 );
 973  0
             append( sb, "Deprecated. Use org.apache.maven.plugins:maven-dependency-plugin goal: unpack or unpack-dependencies instead.", 1 );
 974  0
             if ( detail )
 975  
             {
 976  0
                 append( sb, "", 0 );
 977  0
                 append( sb, "Unpack project dependencies. Currently supports dependencies of type jar and zip.", 1 );
 978  
             }
 979  0
             append( sb, "", 0 );
 980  0
             if ( detail )
 981  
             {
 982  0
                 append( sb, "Available parameters:", 1 );
 983  0
                 append( sb, "", 0 );
 984  
 
 985  0
                 append( sb, "workDirectory", 2 );
 986  0
                 append( sb, "Directory to unpack JARs into if needed", 3 );
 987  0
                 append( sb, "Required: Yes", 3 );
 988  0
                 append( sb, "Expression: ${project.build.directory}/assembly/work", 3 );
 989  0
                 append( sb, "", 0 );
 990  
             }
 991  
         }
 992  
 
 993  0
         if ( getLog().isInfoEnabled() )
 994  
         {
 995  0
             getLog().info( sb.toString() );
 996  
         }
 997  0
     }
 998  
 
 999  
     /**
 1000  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 1001  
      *
 1002  
      * @param str String to repeat
 1003  
      * @param repeat number of times to repeat str
 1004  
      * @return String with repeated String
 1005  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 1006  
      * @throws NullPointerException if str is <code>null</code>
 1007  
      */
 1008  
     private static String repeat( String str, int repeat )
 1009  
     {
 1010  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 1011  
 
 1012  0
         for ( int i = 0; i < repeat; i++ )
 1013  
         {
 1014  0
             buffer.append( str );
 1015  
         }
 1016  
 
 1017  0
         return buffer.toString();
 1018  
     }
 1019  
 
 1020  
     /** 
 1021  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 1022  
      * <b>Note</b>: The last character is always a new line.
 1023  
      * 
 1024  
      * @param sb The buffer to append the description, not <code>null</code>.
 1025  
      * @param description The description, not <code>null</code>.
 1026  
      * @param indent The base indentation level of each line, must not be negative.
 1027  
      */
 1028  
     private void append( StringBuffer sb, String description, int indent )
 1029  
     {
 1030  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 1031  
         {
 1032  0
             sb.append( it.next().toString() ).append( '\n' );
 1033  
         }
 1034  0
     }
 1035  
 
 1036  
     /** 
 1037  
      * Splits the specified text into lines of convenient display length.
 1038  
      * 
 1039  
      * @param text The text to split into lines, must not be <code>null</code>.
 1040  
      * @param indent The base indentation level of each line, must not be negative.
 1041  
      * @param indentSize The size of each indentation, must not be negative.
 1042  
      * @param lineLength The length of the line, must not be negative.
 1043  
      * @return The sequence of display lines, never <code>null</code>.
 1044  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 1045  
      */
 1046  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 1047  
     {
 1048  0
         List lines = new ArrayList();
 1049  
 
 1050  0
         String ind = repeat( "\t", indent );
 1051  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 1052  0
         for ( int i = 0; i < plainLines.length; i++ )
 1053  
         {
 1054  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 1055  
         }
 1056  
 
 1057  0
         return lines;
 1058  
     }
 1059  
 
 1060  
     /** 
 1061  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 1062  
      * 
 1063  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 1064  
      * @param line The line to add, must not be <code>null</code>.
 1065  
      * @param indentSize The size of each indentation, must not be negative.
 1066  
      * @param lineLength The length of the line, must not be negative.
 1067  
      */
 1068  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 1069  
     {
 1070  0
         int lineIndent = getIndentLevel( line );
 1071  0
         StringBuffer buf = new StringBuffer( 256 );
 1072  0
         String[] tokens = line.split( " +" );
 1073  0
         for ( int i = 0; i < tokens.length; i++ )
 1074  
         {
 1075  0
             String token = tokens[i];
 1076  0
             if ( i > 0 )
 1077  
             {
 1078  0
                 if ( buf.length() + token.length() >= lineLength )
 1079  
                 {
 1080  0
                     lines.add( buf.toString() );
 1081  0
                     buf.setLength( 0 );
 1082  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 1083  
                 }
 1084  
                 else
 1085  
                 {
 1086  0
                     buf.append( ' ' );
 1087  
                 }
 1088  
             }
 1089  0
             for ( int j = 0; j < token.length(); j++ )
 1090  
             {
 1091  0
                 char c = token.charAt( j );
 1092  0
                 if ( c == '\t' )
 1093  
                 {
 1094  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 1095  
                 }
 1096  0
                 else if ( c == '\u00A0' )
 1097  
                 {
 1098  0
                     buf.append( ' ' );
 1099  
                 }
 1100  
                 else
 1101  
                 {
 1102  0
                     buf.append( c );
 1103  
                 }
 1104  
             }
 1105  
         }
 1106  0
         lines.add( buf.toString() );
 1107  0
     }
 1108  
 
 1109  
     /** 
 1110  
      * Gets the indentation level of the specified line.
 1111  
      * 
 1112  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 1113  
      * @return The indentation level of the line.
 1114  
      */
 1115  
     private static int getIndentLevel( String line )
 1116  
     {
 1117  0
         int level = 0;
 1118  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 1119  
         {
 1120  0
             level++;
 1121  
         }
 1122  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 1123  
         {
 1124  0
             if ( line.charAt( i ) == '\t' )
 1125  
             {
 1126  0
                 level++;
 1127  0
                 break;
 1128  
             }
 1129  
         }
 1130  0
         return level;
 1131  
     }
 1132  
 }