Coverage Report - org.apache.maven.scm.plugin.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0 %
0/1514
0 %
0/190
16,833
 
 1  
 package org.apache.maven.scm.plugin;
 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-scm-plugin.<br/> Call <pre>  mvn scm:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Sun Apr 29 21:36:16 CEST 2012
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.8)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  * @threadSafe
 18  
  */
 19  
 @SuppressWarnings( "all" )
 20  0
 public class HelpMojo
 21  
     extends AbstractMojo
 22  
 {
 23  
     /**
 24  
      * If <code>true</code>, display all settable properties for each goal.
 25  
      * 
 26  
      * @parameter expression="${detail}" default-value="false"
 27  
      */
 28  
     private boolean detail;
 29  
 
 30  
     /**
 31  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 32  
      * 
 33  
      * @parameter expression="${goal}"
 34  
      */
 35  
     private java.lang.String goal;
 36  
 
 37  
     /**
 38  
      * The maximum length of a display line, should be positive.
 39  
      * 
 40  
      * @parameter expression="${lineLength}" default-value="80"
 41  
      */
 42  
     private int lineLength;
 43  
 
 44  
     /**
 45  
      * The number of spaces per indentation level, should be positive.
 46  
      * 
 47  
      * @parameter expression="${indentSize}" default-value="2"
 48  
      */
 49  
     private int indentSize;
 50  
 
 51  
 
 52  
     /** {@inheritDoc} */
 53  
     public void execute()
 54  
         throws MojoExecutionException
 55  
     {
 56  0
         if ( lineLength <= 0 )
 57  
         {
 58  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 59  0
             lineLength = 80;
 60  
         }
 61  0
         if ( indentSize <= 0 )
 62  
         {
 63  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 64  0
             indentSize = 2;
 65  
         }
 66  
 
 67  0
         StringBuffer sb = new StringBuffer();
 68  
 
 69  0
         append( sb, "org.apache.maven.plugins:maven-scm-plugin:1.7", 0 );
 70  0
         append( sb, "", 0 );
 71  
 
 72  0
         append( sb, "Maven SCM Plugin", 0 );
 73  0
         append( sb, "Maven Plugin that allows accessing different SCMs.", 1 );
 74  0
         append( sb, "", 0 );
 75  
 
 76  0
         if ( goal == null || goal.length() <= 0 )
 77  
         {
 78  0
             append( sb, "This plugin has 19 goals:", 0 );
 79  0
             append( sb, "", 0 );
 80  
         }
 81  
 
 82  0
         if ( goal == null || goal.length() <= 0 || "add".equals( goal ) )
 83  
         {
 84  0
             append( sb, "scm:add", 0 );
 85  0
             append( sb, "Add a file set to the project.", 1 );
 86  0
             append( sb, "", 0 );
 87  0
             if ( detail )
 88  
             {
 89  0
                 append( sb, "Available parameters:", 1 );
 90  0
                 append( sb, "", 0 );
 91  
 
 92  0
                 append( sb, "basedir", 2 );
 93  0
                 append( sb, "The base directory.", 3 );
 94  0
                 append( sb, "Required: Yes", 3 );
 95  0
                 append( sb, "Expression: ${basedir}", 3 );
 96  0
                 append( sb, "", 0 );
 97  
 
 98  0
                 append( sb, "connectionType (Default: connection)", 2 );
 99  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 100  0
                 append( sb, "Expression: ${connectionType}", 3 );
 101  0
                 append( sb, "", 0 );
 102  
 
 103  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 104  0
                 append( sb, "The SCM connection URL.", 3 );
 105  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 106  0
                 append( sb, "", 0 );
 107  
 
 108  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 109  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 110  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 111  0
                 append( sb, "", 0 );
 112  
 
 113  0
                 append( sb, "excludes", 2 );
 114  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 115  0
                 append( sb, "Expression: ${excludes}", 3 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "includes", 2 );
 119  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 120  0
                 append( sb, "Expression: ${includes}", 3 );
 121  0
                 append( sb, "", 0 );
 122  
 
 123  0
                 append( sb, "passphrase", 2 );
 124  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 125  0
                 append( sb, "Expression: ${passphrase}", 3 );
 126  0
                 append( sb, "", 0 );
 127  
 
 128  0
                 append( sb, "password", 2 );
 129  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 130  0
                 append( sb, "Expression: ${password}", 3 );
 131  0
                 append( sb, "", 0 );
 132  
 
 133  0
                 append( sb, "privateKey", 2 );
 134  0
                 append( sb, "The private key (used by java svn).", 3 );
 135  0
                 append( sb, "Expression: ${privateKey}", 3 );
 136  0
                 append( sb, "", 0 );
 137  
 
 138  0
                 append( sb, "providerImplementations", 2 );
 139  0
                 append( sb, "List of provider implementations.", 3 );
 140  0
                 append( sb, "", 0 );
 141  
 
 142  0
                 append( sb, "pushChanges (Default: true)", 2 );
 143  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 144  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 145  0
                 append( sb, "", 0 );
 146  
 
 147  0
                 append( sb, "systemProperties", 2 );
 148  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 149  0
                 append( sb, "", 0 );
 150  
 
 151  0
                 append( sb, "tagBase", 2 );
 152  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 153  0
                 append( sb, "Expression: ${tagBase}", 3 );
 154  0
                 append( sb, "", 0 );
 155  
 
 156  0
                 append( sb, "username", 2 );
 157  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 158  0
                 append( sb, "Expression: ${username}", 3 );
 159  0
                 append( sb, "", 0 );
 160  
 
 161  0
                 append( sb, "workingDirectory", 2 );
 162  0
                 append( sb, "The working directory.", 3 );
 163  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 164  0
                 append( sb, "", 0 );
 165  
             }
 166  
         }
 167  
 
 168  0
         if ( goal == null || goal.length() <= 0 || "bootstrap".equals( goal ) )
 169  
         {
 170  0
             append( sb, "scm:bootstrap", 0 );
 171  0
             append( sb, "Pull the project source from the configured scm and execute the configured goals.", 1 );
 172  0
             append( sb, "", 0 );
 173  0
             if ( detail )
 174  
             {
 175  0
                 append( sb, "Available parameters:", 1 );
 176  0
                 append( sb, "", 0 );
 177  
 
 178  0
                 append( sb, "basedir", 2 );
 179  0
                 append( sb, "The base directory.", 3 );
 180  0
                 append( sb, "Required: Yes", 3 );
 181  0
                 append( sb, "Expression: ${basedir}", 3 );
 182  0
                 append( sb, "", 0 );
 183  
 
 184  0
                 append( sb, "checkoutDirectory (Default: ${project.build.directory}/checkout)", 2 );
 185  0
                 append( sb, "The directory to checkout the sources to for the bootstrap and checkout goals.", 3 );
 186  0
                 append( sb, "Expression: ${checkoutDirectory}", 3 );
 187  0
                 append( sb, "", 0 );
 188  
 
 189  0
                 append( sb, "connectionType (Default: connection)", 2 );
 190  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 191  0
                 append( sb, "Expression: ${connectionType}", 3 );
 192  0
                 append( sb, "", 0 );
 193  
 
 194  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 195  0
                 append( sb, "The SCM connection URL.", 3 );
 196  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 197  0
                 append( sb, "", 0 );
 198  
 
 199  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 200  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 201  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 202  0
                 append( sb, "", 0 );
 203  
 
 204  0
                 append( sb, "excludes", 2 );
 205  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 206  0
                 append( sb, "Expression: ${excludes}", 3 );
 207  0
                 append( sb, "", 0 );
 208  
 
 209  0
                 append( sb, "goals", 2 );
 210  0
                 append( sb, "The goals to run on the clean checkout of a project for the bootstrap goal. If none are specified, then the default goal for the project is executed. Multiple goals should be comma separated.", 3 );
 211  0
                 append( sb, "Expression: ${goals}", 3 );
 212  0
                 append( sb, "", 0 );
 213  
 
 214  0
                 append( sb, "goalsDirectory", 2 );
 215  0
                 append( sb, "The subdirectory (under the project directory) in which to run the goals. The project directory is the same as the checkout directory in most cases, but for some SCMs, it is a subdirectory of the checkout directory.", 3 );
 216  0
                 append( sb, "Expression: ${goalsDirectory}", 3 );
 217  0
                 append( sb, "", 0 );
 218  
 
 219  0
                 append( sb, "includes", 2 );
 220  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 221  0
                 append( sb, "Expression: ${includes}", 3 );
 222  0
                 append( sb, "", 0 );
 223  
 
 224  0
                 append( sb, "passphrase", 2 );
 225  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 226  0
                 append( sb, "Expression: ${passphrase}", 3 );
 227  0
                 append( sb, "", 0 );
 228  
 
 229  0
                 append( sb, "password", 2 );
 230  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 231  0
                 append( sb, "Expression: ${password}", 3 );
 232  0
                 append( sb, "", 0 );
 233  
 
 234  0
                 append( sb, "privateKey", 2 );
 235  0
                 append( sb, "The private key (used by java svn).", 3 );
 236  0
                 append( sb, "Expression: ${privateKey}", 3 );
 237  0
                 append( sb, "", 0 );
 238  
 
 239  0
                 append( sb, "profiles", 2 );
 240  0
                 append( sb, "A list of profiles to run with the goals. Multiple profiles must be comma separated with no spaces.", 3 );
 241  0
                 append( sb, "Expression: ${profiles}", 3 );
 242  0
                 append( sb, "", 0 );
 243  
 
 244  0
                 append( sb, "providerImplementations", 2 );
 245  0
                 append( sb, "List of provider implementations.", 3 );
 246  0
                 append( sb, "", 0 );
 247  
 
 248  0
                 append( sb, "pushChanges (Default: true)", 2 );
 249  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 250  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 251  0
                 append( sb, "", 0 );
 252  
 
 253  0
                 append( sb, "scmVersion", 2 );
 254  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 255  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 256  0
                 append( sb, "", 0 );
 257  
 
 258  0
                 append( sb, "scmVersionType", 2 );
 259  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 260  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 261  0
                 append( sb, "", 0 );
 262  
 
 263  0
                 append( sb, "skipCheckoutIfExists (Default: false)", 2 );
 264  0
                 append( sb, "Skip checkout if checkoutDirectory exists.", 3 );
 265  0
                 append( sb, "Expression: ${skipCheckoutIfExists}", 3 );
 266  0
                 append( sb, "", 0 );
 267  
 
 268  0
                 append( sb, "systemProperties", 2 );
 269  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 270  0
                 append( sb, "", 0 );
 271  
 
 272  0
                 append( sb, "tagBase", 2 );
 273  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 274  0
                 append( sb, "Expression: ${tagBase}", 3 );
 275  0
                 append( sb, "", 0 );
 276  
 
 277  0
                 append( sb, "useExport", 2 );
 278  0
                 append( sb, "Use Export instead of checkout", 3 );
 279  0
                 append( sb, "Expression: ${useExport}", 3 );
 280  0
                 append( sb, "", 0 );
 281  
 
 282  0
                 append( sb, "username", 2 );
 283  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 284  0
                 append( sb, "Expression: ${username}", 3 );
 285  0
                 append( sb, "", 0 );
 286  
 
 287  0
                 append( sb, "workingDirectory", 2 );
 288  0
                 append( sb, "The working directory.", 3 );
 289  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 290  0
                 append( sb, "", 0 );
 291  
             }
 292  
         }
 293  
 
 294  0
         if ( goal == null || goal.length() <= 0 || "branch".equals( goal ) )
 295  
         {
 296  0
             append( sb, "scm:branch", 0 );
 297  0
             append( sb, "Branch the project.", 1 );
 298  0
             append( sb, "", 0 );
 299  0
             if ( detail )
 300  
             {
 301  0
                 append( sb, "Available parameters:", 1 );
 302  0
                 append( sb, "", 0 );
 303  
 
 304  0
                 append( sb, "basedir", 2 );
 305  0
                 append( sb, "The base directory.", 3 );
 306  0
                 append( sb, "Required: Yes", 3 );
 307  0
                 append( sb, "Expression: ${basedir}", 3 );
 308  0
                 append( sb, "", 0 );
 309  
 
 310  0
                 append( sb, "branch", 2 );
 311  0
                 append( sb, "The branch name.", 3 );
 312  0
                 append( sb, "Required: Yes", 3 );
 313  0
                 append( sb, "Expression: ${branch}", 3 );
 314  0
                 append( sb, "", 0 );
 315  
 
 316  0
                 append( sb, "connectionType (Default: connection)", 2 );
 317  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 318  0
                 append( sb, "Expression: ${connectionType}", 3 );
 319  0
                 append( sb, "", 0 );
 320  
 
 321  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 322  0
                 append( sb, "The SCM connection URL.", 3 );
 323  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 324  0
                 append( sb, "", 0 );
 325  
 
 326  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 327  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 328  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 329  0
                 append( sb, "", 0 );
 330  
 
 331  0
                 append( sb, "excludes", 2 );
 332  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 333  0
                 append( sb, "Expression: ${excludes}", 3 );
 334  0
                 append( sb, "", 0 );
 335  
 
 336  0
                 append( sb, "includes", 2 );
 337  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 338  0
                 append( sb, "Expression: ${includes}", 3 );
 339  0
                 append( sb, "", 0 );
 340  
 
 341  0
                 append( sb, "message", 2 );
 342  0
                 append( sb, "The message applied to the tag creation.", 3 );
 343  0
                 append( sb, "Expression: ${message}", 3 );
 344  0
                 append( sb, "", 0 );
 345  
 
 346  0
                 append( sb, "passphrase", 2 );
 347  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 348  0
                 append( sb, "Expression: ${passphrase}", 3 );
 349  0
                 append( sb, "", 0 );
 350  
 
 351  0
                 append( sb, "password", 2 );
 352  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 353  0
                 append( sb, "Expression: ${password}", 3 );
 354  0
                 append( sb, "", 0 );
 355  
 
 356  0
                 append( sb, "privateKey", 2 );
 357  0
                 append( sb, "The private key (used by java svn).", 3 );
 358  0
                 append( sb, "Expression: ${privateKey}", 3 );
 359  0
                 append( sb, "", 0 );
 360  
 
 361  0
                 append( sb, "providerImplementations", 2 );
 362  0
                 append( sb, "List of provider implementations.", 3 );
 363  0
                 append( sb, "", 0 );
 364  
 
 365  0
                 append( sb, "pushChanges (Default: true)", 2 );
 366  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 367  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 368  0
                 append( sb, "", 0 );
 369  
 
 370  0
                 append( sb, "remoteBranching (Default: true)", 2 );
 371  0
                 append( sb, "currently only implemented with svn scm. Enable a workaround to prevent issue due to svn client > 1.5.0 (http://jira.codehaus.org/browse/SCM-406)", 3 );
 372  0
                 append( sb, "Expression: ${remoteBranching}", 3 );
 373  0
                 append( sb, "", 0 );
 374  
 
 375  0
                 append( sb, "systemProperties", 2 );
 376  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 377  0
                 append( sb, "", 0 );
 378  
 
 379  0
                 append( sb, "tagBase", 2 );
 380  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 381  0
                 append( sb, "Expression: ${tagBase}", 3 );
 382  0
                 append( sb, "", 0 );
 383  
 
 384  0
                 append( sb, "username", 2 );
 385  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 386  0
                 append( sb, "Expression: ${username}", 3 );
 387  0
                 append( sb, "", 0 );
 388  
 
 389  0
                 append( sb, "workingDirectory", 2 );
 390  0
                 append( sb, "The working directory.", 3 );
 391  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 392  0
                 append( sb, "", 0 );
 393  
             }
 394  
         }
 395  
 
 396  0
         if ( goal == null || goal.length() <= 0 || "changelog".equals( goal ) )
 397  
         {
 398  0
             append( sb, "scm:changelog", 0 );
 399  0
             append( sb, "Dump changelog contents to console. It is mainly used to test maven-scm-api\'s changelog command.", 1 );
 400  0
             append( sb, "", 0 );
 401  0
             if ( detail )
 402  
             {
 403  0
                 append( sb, "Available parameters:", 1 );
 404  0
                 append( sb, "", 0 );
 405  
 
 406  0
                 append( sb, "basedir", 2 );
 407  0
                 append( sb, "The base directory.", 3 );
 408  0
                 append( sb, "Required: Yes", 3 );
 409  0
                 append( sb, "Expression: ${basedir}", 3 );
 410  0
                 append( sb, "", 0 );
 411  
 
 412  0
                 append( sb, "connectionType (Default: connection)", 2 );
 413  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 414  0
                 append( sb, "Expression: ${connectionType}", 3 );
 415  0
                 append( sb, "", 0 );
 416  
 
 417  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 418  0
                 append( sb, "The SCM connection URL.", 3 );
 419  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 420  0
                 append( sb, "", 0 );
 421  
 
 422  0
                 append( sb, "dateFormat", 2 );
 423  0
                 append( sb, "Date Format in changelog output of scm tool.", 3 );
 424  0
                 append( sb, "Expression: ${dateFormat}", 3 );
 425  0
                 append( sb, "", 0 );
 426  
 
 427  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 428  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 429  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 430  0
                 append( sb, "", 0 );
 431  
 
 432  0
                 append( sb, "endDate", 2 );
 433  0
                 append( sb, "End Date.", 3 );
 434  0
                 append( sb, "Expression: ${endDate}", 3 );
 435  0
                 append( sb, "", 0 );
 436  
 
 437  0
                 append( sb, "endScmVersion", 2 );
 438  0
                 append( sb, "End Scm Version.", 3 );
 439  0
                 append( sb, "Expression: ${endScmVersion}", 3 );
 440  0
                 append( sb, "", 0 );
 441  
 
 442  0
                 append( sb, "endScmVersionType", 2 );
 443  0
                 append( sb, "End Scm Version Type.", 3 );
 444  0
                 append( sb, "Expression: ${endScmVersionType}", 3 );
 445  0
                 append( sb, "", 0 );
 446  
 
 447  0
                 append( sb, "excludes", 2 );
 448  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 449  0
                 append( sb, "Expression: ${excludes}", 3 );
 450  0
                 append( sb, "", 0 );
 451  
 
 452  0
                 append( sb, "includes", 2 );
 453  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 454  0
                 append( sb, "Expression: ${includes}", 3 );
 455  0
                 append( sb, "", 0 );
 456  
 
 457  0
                 append( sb, "passphrase", 2 );
 458  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 459  0
                 append( sb, "Expression: ${passphrase}", 3 );
 460  0
                 append( sb, "", 0 );
 461  
 
 462  0
                 append( sb, "password", 2 );
 463  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 464  0
                 append( sb, "Expression: ${password}", 3 );
 465  0
                 append( sb, "", 0 );
 466  
 
 467  0
                 append( sb, "privateKey", 2 );
 468  0
                 append( sb, "The private key (used by java svn).", 3 );
 469  0
                 append( sb, "Expression: ${privateKey}", 3 );
 470  0
                 append( sb, "", 0 );
 471  
 
 472  0
                 append( sb, "providerImplementations", 2 );
 473  0
                 append( sb, "List of provider implementations.", 3 );
 474  0
                 append( sb, "", 0 );
 475  
 
 476  0
                 append( sb, "pushChanges (Default: true)", 2 );
 477  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 478  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 479  0
                 append( sb, "", 0 );
 480  
 
 481  0
                 append( sb, "scmVersion", 2 );
 482  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 483  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 484  0
                 append( sb, "", 0 );
 485  
 
 486  0
                 append( sb, "scmVersionType", 2 );
 487  0
                 append( sb, "The version type (branch/tag) of scmVersion.", 3 );
 488  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 489  0
                 append( sb, "", 0 );
 490  
 
 491  0
                 append( sb, "startDate", 2 );
 492  0
                 append( sb, "Start Date.", 3 );
 493  0
                 append( sb, "Expression: ${startDate}", 3 );
 494  0
                 append( sb, "", 0 );
 495  
 
 496  0
                 append( sb, "startScmVersion", 2 );
 497  0
                 append( sb, "Start Scm Version.", 3 );
 498  0
                 append( sb, "Expression: ${startScmVersion}", 3 );
 499  0
                 append( sb, "", 0 );
 500  
 
 501  0
                 append( sb, "startScmVersionType", 2 );
 502  0
                 append( sb, "Start Scm Version Type.", 3 );
 503  0
                 append( sb, "Expression: ${startScmVersionType}", 3 );
 504  0
                 append( sb, "", 0 );
 505  
 
 506  0
                 append( sb, "systemProperties", 2 );
 507  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 508  0
                 append( sb, "", 0 );
 509  
 
 510  0
                 append( sb, "tagBase", 2 );
 511  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 512  0
                 append( sb, "Expression: ${tagBase}", 3 );
 513  0
                 append( sb, "", 0 );
 514  
 
 515  0
                 append( sb, "userDateFormat (Default: yyyy-MM-dd)", 2 );
 516  0
                 append( sb, "Date format to use for the specified startDate and/or endDate.", 3 );
 517  0
                 append( sb, "Expression: ${userDateFormat}", 3 );
 518  0
                 append( sb, "", 0 );
 519  
 
 520  0
                 append( sb, "username", 2 );
 521  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 522  0
                 append( sb, "Expression: ${username}", 3 );
 523  0
                 append( sb, "", 0 );
 524  
 
 525  0
                 append( sb, "workingDirectory", 2 );
 526  0
                 append( sb, "The working directory.", 3 );
 527  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 528  0
                 append( sb, "", 0 );
 529  
             }
 530  
         }
 531  
 
 532  0
         if ( goal == null || goal.length() <= 0 || "check-local-modification".equals( goal ) )
 533  
         {
 534  0
             append( sb, "scm:check-local-modification", 0 );
 535  0
             append( sb, "This mojo will fail the build if there is any local modifications", 1 );
 536  0
             append( sb, "", 0 );
 537  0
             if ( detail )
 538  
             {
 539  0
                 append( sb, "Available parameters:", 1 );
 540  0
                 append( sb, "", 0 );
 541  
 
 542  0
                 append( sb, "basedir", 2 );
 543  0
                 append( sb, "The base directory.", 3 );
 544  0
                 append( sb, "Required: Yes", 3 );
 545  0
                 append( sb, "Expression: ${basedir}", 3 );
 546  0
                 append( sb, "", 0 );
 547  
 
 548  0
                 append( sb, "connectionType (Default: connection)", 2 );
 549  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 550  0
                 append( sb, "Expression: ${connectionType}", 3 );
 551  0
                 append( sb, "", 0 );
 552  
 
 553  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 554  0
                 append( sb, "The SCM connection URL.", 3 );
 555  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 556  0
                 append( sb, "", 0 );
 557  
 
 558  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 559  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 560  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 561  0
                 append( sb, "", 0 );
 562  
 
 563  0
                 append( sb, "errorMessage (Default: The build will stop as there is local modifications)", 2 );
 564  0
                 append( sb, "Custom error message", 3 );
 565  0
                 append( sb, "Expression: ${scm.checkLocalModification.errorMessage}", 3 );
 566  0
                 append( sb, "", 0 );
 567  
 
 568  0
                 append( sb, "excludes", 2 );
 569  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 570  0
                 append( sb, "Expression: ${excludes}", 3 );
 571  0
                 append( sb, "", 0 );
 572  
 
 573  0
                 append( sb, "includes", 2 );
 574  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 575  0
                 append( sb, "Expression: ${includes}", 3 );
 576  0
                 append( sb, "", 0 );
 577  
 
 578  0
                 append( sb, "passphrase", 2 );
 579  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 580  0
                 append( sb, "Expression: ${passphrase}", 3 );
 581  0
                 append( sb, "", 0 );
 582  
 
 583  0
                 append( sb, "password", 2 );
 584  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 585  0
                 append( sb, "Expression: ${password}", 3 );
 586  0
                 append( sb, "", 0 );
 587  
 
 588  0
                 append( sb, "privateKey", 2 );
 589  0
                 append( sb, "The private key (used by java svn).", 3 );
 590  0
                 append( sb, "Expression: ${privateKey}", 3 );
 591  0
                 append( sb, "", 0 );
 592  
 
 593  0
                 append( sb, "providerImplementations", 2 );
 594  0
                 append( sb, "List of provider implementations.", 3 );
 595  0
                 append( sb, "", 0 );
 596  
 
 597  0
                 append( sb, "pushChanges (Default: true)", 2 );
 598  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 599  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 600  0
                 append( sb, "", 0 );
 601  
 
 602  0
                 append( sb, "skip (Default: false)", 2 );
 603  0
                 append( sb, "Custom error message", 3 );
 604  0
                 append( sb, "Expression: ${scm.checkLocalModification.skip}", 3 );
 605  0
                 append( sb, "", 0 );
 606  
 
 607  0
                 append( sb, "systemProperties", 2 );
 608  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 609  0
                 append( sb, "", 0 );
 610  
 
 611  0
                 append( sb, "tagBase", 2 );
 612  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 613  0
                 append( sb, "Expression: ${tagBase}", 3 );
 614  0
                 append( sb, "", 0 );
 615  
 
 616  0
                 append( sb, "username", 2 );
 617  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 618  0
                 append( sb, "Expression: ${username}", 3 );
 619  0
                 append( sb, "", 0 );
 620  
 
 621  0
                 append( sb, "workingDirectory", 2 );
 622  0
                 append( sb, "The working directory.", 3 );
 623  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 624  0
                 append( sb, "", 0 );
 625  
             }
 626  
         }
 627  
 
 628  0
         if ( goal == null || goal.length() <= 0 || "checkin".equals( goal ) )
 629  
         {
 630  0
             append( sb, "scm:checkin", 0 );
 631  0
             append( sb, "Commit changes to the configured scm url.", 1 );
 632  0
             append( sb, "", 0 );
 633  0
             if ( detail )
 634  
             {
 635  0
                 append( sb, "Available parameters:", 1 );
 636  0
                 append( sb, "", 0 );
 637  
 
 638  0
                 append( sb, "basedir", 2 );
 639  0
                 append( sb, "The base directory.", 3 );
 640  0
                 append( sb, "Required: Yes", 3 );
 641  0
                 append( sb, "Expression: ${basedir}", 3 );
 642  0
                 append( sb, "", 0 );
 643  
 
 644  0
                 append( sb, "connectionType (Default: developerConnection)", 2 );
 645  0
                 append( sb, "The configured scm url to use.", 3 );
 646  0
                 append( sb, "Expression: ${connectionType}", 3 );
 647  0
                 append( sb, "", 0 );
 648  
 
 649  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 650  0
                 append( sb, "The SCM connection URL.", 3 );
 651  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 652  0
                 append( sb, "", 0 );
 653  
 
 654  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 655  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 656  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 657  0
                 append( sb, "", 0 );
 658  
 
 659  0
                 append( sb, "excludes", 2 );
 660  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 661  0
                 append( sb, "Expression: ${excludes}", 3 );
 662  0
                 append( sb, "", 0 );
 663  
 
 664  0
                 append( sb, "includes", 2 );
 665  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 666  0
                 append( sb, "Expression: ${includes}", 3 );
 667  0
                 append( sb, "", 0 );
 668  
 
 669  0
                 append( sb, "message", 2 );
 670  0
                 append( sb, "Commit log.", 3 );
 671  0
                 append( sb, "Expression: ${message}", 3 );
 672  0
                 append( sb, "", 0 );
 673  
 
 674  0
                 append( sb, "passphrase", 2 );
 675  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 676  0
                 append( sb, "Expression: ${passphrase}", 3 );
 677  0
                 append( sb, "", 0 );
 678  
 
 679  0
                 append( sb, "password", 2 );
 680  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 681  0
                 append( sb, "Expression: ${password}", 3 );
 682  0
                 append( sb, "", 0 );
 683  
 
 684  0
                 append( sb, "privateKey", 2 );
 685  0
                 append( sb, "The private key (used by java svn).", 3 );
 686  0
                 append( sb, "Expression: ${privateKey}", 3 );
 687  0
                 append( sb, "", 0 );
 688  
 
 689  0
                 append( sb, "providerImplementations", 2 );
 690  0
                 append( sb, "List of provider implementations.", 3 );
 691  0
                 append( sb, "", 0 );
 692  
 
 693  0
                 append( sb, "pushChanges (Default: true)", 2 );
 694  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 695  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 696  0
                 append( sb, "", 0 );
 697  
 
 698  0
                 append( sb, "scmVersion", 2 );
 699  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 700  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 701  0
                 append( sb, "", 0 );
 702  
 
 703  0
                 append( sb, "scmVersionType", 2 );
 704  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 705  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 706  0
                 append( sb, "", 0 );
 707  
 
 708  0
                 append( sb, "systemProperties", 2 );
 709  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 710  0
                 append( sb, "", 0 );
 711  
 
 712  0
                 append( sb, "tagBase", 2 );
 713  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 714  0
                 append( sb, "Expression: ${tagBase}", 3 );
 715  0
                 append( sb, "", 0 );
 716  
 
 717  0
                 append( sb, "username", 2 );
 718  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 719  0
                 append( sb, "Expression: ${username}", 3 );
 720  0
                 append( sb, "", 0 );
 721  
 
 722  0
                 append( sb, "workingDirectory", 2 );
 723  0
                 append( sb, "The working directory.", 3 );
 724  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 725  0
                 append( sb, "", 0 );
 726  
             }
 727  
         }
 728  
 
 729  0
         if ( goal == null || goal.length() <= 0 || "checkout".equals( goal ) )
 730  
         {
 731  0
             append( sb, "scm:checkout", 0 );
 732  0
             append( sb, "Get a fresh copy of the latest source from the configured scm url.", 1 );
 733  0
             append( sb, "", 0 );
 734  0
             if ( detail )
 735  
             {
 736  0
                 append( sb, "Available parameters:", 1 );
 737  0
                 append( sb, "", 0 );
 738  
 
 739  0
                 append( sb, "basedir", 2 );
 740  0
                 append( sb, "The base directory.", 3 );
 741  0
                 append( sb, "Required: Yes", 3 );
 742  0
                 append( sb, "Expression: ${basedir}", 3 );
 743  0
                 append( sb, "", 0 );
 744  
 
 745  0
                 append( sb, "checkoutDirectory (Default: ${project.build.directory}/checkout)", 2 );
 746  0
                 append( sb, "The directory to checkout the sources to for the bootstrap and checkout goals.", 3 );
 747  0
                 append( sb, "Expression: ${checkoutDirectory}", 3 );
 748  0
                 append( sb, "", 0 );
 749  
 
 750  0
                 append( sb, "connectionType (Default: connection)", 2 );
 751  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 752  0
                 append( sb, "Expression: ${connectionType}", 3 );
 753  0
                 append( sb, "", 0 );
 754  
 
 755  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 756  0
                 append( sb, "The SCM connection URL.", 3 );
 757  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 758  0
                 append( sb, "", 0 );
 759  
 
 760  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 761  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 762  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 763  0
                 append( sb, "", 0 );
 764  
 
 765  0
                 append( sb, "excludes", 2 );
 766  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 767  0
                 append( sb, "Expression: ${excludes}", 3 );
 768  0
                 append( sb, "", 0 );
 769  
 
 770  0
                 append( sb, "includes", 2 );
 771  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 772  0
                 append( sb, "Expression: ${includes}", 3 );
 773  0
                 append( sb, "", 0 );
 774  
 
 775  0
                 append( sb, "passphrase", 2 );
 776  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 777  0
                 append( sb, "Expression: ${passphrase}", 3 );
 778  0
                 append( sb, "", 0 );
 779  
 
 780  0
                 append( sb, "password", 2 );
 781  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 782  0
                 append( sb, "Expression: ${password}", 3 );
 783  0
                 append( sb, "", 0 );
 784  
 
 785  0
                 append( sb, "privateKey", 2 );
 786  0
                 append( sb, "The private key (used by java svn).", 3 );
 787  0
                 append( sb, "Expression: ${privateKey}", 3 );
 788  0
                 append( sb, "", 0 );
 789  
 
 790  0
                 append( sb, "providerImplementations", 2 );
 791  0
                 append( sb, "List of provider implementations.", 3 );
 792  0
                 append( sb, "", 0 );
 793  
 
 794  0
                 append( sb, "pushChanges (Default: true)", 2 );
 795  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 796  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 797  0
                 append( sb, "", 0 );
 798  
 
 799  0
                 append( sb, "scmVersion", 2 );
 800  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 801  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 802  0
                 append( sb, "", 0 );
 803  
 
 804  0
                 append( sb, "scmVersionType", 2 );
 805  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 806  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 807  0
                 append( sb, "", 0 );
 808  
 
 809  0
                 append( sb, "skipCheckoutIfExists (Default: false)", 2 );
 810  0
                 append( sb, "Skip checkout if checkoutDirectory exists.", 3 );
 811  0
                 append( sb, "Expression: ${skipCheckoutIfExists}", 3 );
 812  0
                 append( sb, "", 0 );
 813  
 
 814  0
                 append( sb, "systemProperties", 2 );
 815  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 816  0
                 append( sb, "", 0 );
 817  
 
 818  0
                 append( sb, "tagBase", 2 );
 819  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 820  0
                 append( sb, "Expression: ${tagBase}", 3 );
 821  0
                 append( sb, "", 0 );
 822  
 
 823  0
                 append( sb, "useExport", 2 );
 824  0
                 append( sb, "Use Export instead of checkout", 3 );
 825  0
                 append( sb, "Expression: ${useExport}", 3 );
 826  0
                 append( sb, "", 0 );
 827  
 
 828  0
                 append( sb, "username", 2 );
 829  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 830  0
                 append( sb, "Expression: ${username}", 3 );
 831  0
                 append( sb, "", 0 );
 832  
 
 833  0
                 append( sb, "workingDirectory", 2 );
 834  0
                 append( sb, "The working directory.", 3 );
 835  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 836  0
                 append( sb, "", 0 );
 837  
             }
 838  
         }
 839  
 
 840  0
         if ( goal == null || goal.length() <= 0 || "diff".equals( goal ) )
 841  
         {
 842  0
             append( sb, "scm:diff", 0 );
 843  0
             append( sb, "Display the difference of the working copy with the latest copy in the configured scm url.", 1 );
 844  0
             append( sb, "", 0 );
 845  0
             if ( detail )
 846  
             {
 847  0
                 append( sb, "Available parameters:", 1 );
 848  0
                 append( sb, "", 0 );
 849  
 
 850  0
                 append( sb, "basedir", 2 );
 851  0
                 append( sb, "The base directory.", 3 );
 852  0
                 append( sb, "Required: Yes", 3 );
 853  0
                 append( sb, "Expression: ${basedir}", 3 );
 854  0
                 append( sb, "", 0 );
 855  
 
 856  0
                 append( sb, "connectionType (Default: connection)", 2 );
 857  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 858  0
                 append( sb, "Expression: ${connectionType}", 3 );
 859  0
                 append( sb, "", 0 );
 860  
 
 861  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 862  0
                 append( sb, "The SCM connection URL.", 3 );
 863  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 864  0
                 append( sb, "", 0 );
 865  
 
 866  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 867  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 868  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 869  0
                 append( sb, "", 0 );
 870  
 
 871  0
                 append( sb, "endScmVersion", 2 );
 872  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 873  0
                 append( sb, "Expression: ${startScmVersion}", 3 );
 874  0
                 append( sb, "", 0 );
 875  
 
 876  0
                 append( sb, "endScmVersionType", 2 );
 877  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 878  0
                 append( sb, "Expression: ${endScmVersionType}", 3 );
 879  0
                 append( sb, "", 0 );
 880  
 
 881  0
                 append( sb, "excludes", 2 );
 882  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 883  0
                 append( sb, "Expression: ${excludes}", 3 );
 884  0
                 append( sb, "", 0 );
 885  
 
 886  0
                 append( sb, "includes", 2 );
 887  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 888  0
                 append( sb, "Expression: ${includes}", 3 );
 889  0
                 append( sb, "", 0 );
 890  
 
 891  0
                 append( sb, "outputFile (Default: ${project.artifactId}.diff)", 2 );
 892  0
                 append( sb, "Output file name.", 3 );
 893  0
                 append( sb, "Expression: ${outputFile}", 3 );
 894  0
                 append( sb, "", 0 );
 895  
 
 896  0
                 append( sb, "passphrase", 2 );
 897  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 898  0
                 append( sb, "Expression: ${passphrase}", 3 );
 899  0
                 append( sb, "", 0 );
 900  
 
 901  0
                 append( sb, "password", 2 );
 902  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 903  0
                 append( sb, "Expression: ${password}", 3 );
 904  0
                 append( sb, "", 0 );
 905  
 
 906  0
                 append( sb, "privateKey", 2 );
 907  0
                 append( sb, "The private key (used by java svn).", 3 );
 908  0
                 append( sb, "Expression: ${privateKey}", 3 );
 909  0
                 append( sb, "", 0 );
 910  
 
 911  0
                 append( sb, "providerImplementations", 2 );
 912  0
                 append( sb, "List of provider implementations.", 3 );
 913  0
                 append( sb, "", 0 );
 914  
 
 915  0
                 append( sb, "pushChanges (Default: true)", 2 );
 916  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 917  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 918  0
                 append( sb, "", 0 );
 919  
 
 920  0
                 append( sb, "startScmVersion", 2 );
 921  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 922  0
                 append( sb, "Expression: ${startScmVersion}", 3 );
 923  0
                 append( sb, "", 0 );
 924  
 
 925  0
                 append( sb, "startScmVersionType", 2 );
 926  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 927  0
                 append( sb, "Expression: ${startScmVersionType}", 3 );
 928  0
                 append( sb, "", 0 );
 929  
 
 930  0
                 append( sb, "systemProperties", 2 );
 931  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 932  0
                 append( sb, "", 0 );
 933  
 
 934  0
                 append( sb, "tagBase", 2 );
 935  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 936  0
                 append( sb, "Expression: ${tagBase}", 3 );
 937  0
                 append( sb, "", 0 );
 938  
 
 939  0
                 append( sb, "username", 2 );
 940  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 941  0
                 append( sb, "Expression: ${username}", 3 );
 942  0
                 append( sb, "", 0 );
 943  
 
 944  0
                 append( sb, "workingDirectory", 2 );
 945  0
                 append( sb, "The working directory.", 3 );
 946  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 947  0
                 append( sb, "", 0 );
 948  
             }
 949  
         }
 950  
 
 951  0
         if ( goal == null || goal.length() <= 0 || "edit".equals( goal ) )
 952  
         {
 953  0
             append( sb, "scm:edit", 0 );
 954  0
             append( sb, "Edit/lock a set of files.", 1 );
 955  0
             append( sb, "", 0 );
 956  0
             if ( detail )
 957  
             {
 958  0
                 append( sb, "Available parameters:", 1 );
 959  0
                 append( sb, "", 0 );
 960  
 
 961  0
                 append( sb, "basedir", 2 );
 962  0
                 append( sb, "The base directory.", 3 );
 963  0
                 append( sb, "Required: Yes", 3 );
 964  0
                 append( sb, "Expression: ${basedir}", 3 );
 965  0
                 append( sb, "", 0 );
 966  
 
 967  0
                 append( sb, "connectionType (Default: connection)", 2 );
 968  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 969  0
                 append( sb, "Expression: ${connectionType}", 3 );
 970  0
                 append( sb, "", 0 );
 971  
 
 972  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 973  0
                 append( sb, "The SCM connection URL.", 3 );
 974  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 975  0
                 append( sb, "", 0 );
 976  
 
 977  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 978  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 979  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 980  0
                 append( sb, "", 0 );
 981  
 
 982  0
                 append( sb, "excludes", 2 );
 983  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 984  0
                 append( sb, "Expression: ${excludes}", 3 );
 985  0
                 append( sb, "", 0 );
 986  
 
 987  0
                 append( sb, "includes", 2 );
 988  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 989  0
                 append( sb, "Expression: ${includes}", 3 );
 990  0
                 append( sb, "", 0 );
 991  
 
 992  0
                 append( sb, "passphrase", 2 );
 993  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 994  0
                 append( sb, "Expression: ${passphrase}", 3 );
 995  0
                 append( sb, "", 0 );
 996  
 
 997  0
                 append( sb, "password", 2 );
 998  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 999  0
                 append( sb, "Expression: ${password}", 3 );
 1000  0
                 append( sb, "", 0 );
 1001  
 
 1002  0
                 append( sb, "privateKey", 2 );
 1003  0
                 append( sb, "The private key (used by java svn).", 3 );
 1004  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1005  0
                 append( sb, "", 0 );
 1006  
 
 1007  0
                 append( sb, "providerImplementations", 2 );
 1008  0
                 append( sb, "List of provider implementations.", 3 );
 1009  0
                 append( sb, "", 0 );
 1010  
 
 1011  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1012  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1013  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1014  0
                 append( sb, "", 0 );
 1015  
 
 1016  0
                 append( sb, "systemProperties", 2 );
 1017  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1018  0
                 append( sb, "", 0 );
 1019  
 
 1020  0
                 append( sb, "tagBase", 2 );
 1021  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1022  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1023  0
                 append( sb, "", 0 );
 1024  
 
 1025  0
                 append( sb, "username", 2 );
 1026  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1027  0
                 append( sb, "Expression: ${username}", 3 );
 1028  0
                 append( sb, "", 0 );
 1029  
 
 1030  0
                 append( sb, "workingDirectory", 2 );
 1031  0
                 append( sb, "The working directory.", 3 );
 1032  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1033  0
                 append( sb, "", 0 );
 1034  
             }
 1035  
         }
 1036  
 
 1037  0
         if ( goal == null || goal.length() <= 0 || "export".equals( goal ) )
 1038  
         {
 1039  0
             append( sb, "scm:export", 0 );
 1040  0
             append( sb, "Get a fresh exported copy of the latest source from the configured scm url.", 1 );
 1041  0
             append( sb, "", 0 );
 1042  0
             if ( detail )
 1043  
             {
 1044  0
                 append( sb, "Available parameters:", 1 );
 1045  0
                 append( sb, "", 0 );
 1046  
 
 1047  0
                 append( sb, "basedir", 2 );
 1048  0
                 append( sb, "The base directory.", 3 );
 1049  0
                 append( sb, "Required: Yes", 3 );
 1050  0
                 append( sb, "Expression: ${basedir}", 3 );
 1051  0
                 append( sb, "", 0 );
 1052  
 
 1053  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1054  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1055  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1056  0
                 append( sb, "", 0 );
 1057  
 
 1058  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1059  0
                 append( sb, "The SCM connection URL.", 3 );
 1060  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1061  0
                 append( sb, "", 0 );
 1062  
 
 1063  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1064  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1065  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1066  0
                 append( sb, "", 0 );
 1067  
 
 1068  0
                 append( sb, "excludes", 2 );
 1069  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1070  0
                 append( sb, "Expression: ${excludes}", 3 );
 1071  0
                 append( sb, "", 0 );
 1072  
 
 1073  0
                 append( sb, "exportDirectory (Default: ${project.build.directory}/export)", 2 );
 1074  0
                 append( sb, "The directory to export the sources to.", 3 );
 1075  0
                 append( sb, "Required: Yes", 3 );
 1076  0
                 append( sb, "Expression: ${exportDirectory}", 3 );
 1077  0
                 append( sb, "", 0 );
 1078  
 
 1079  0
                 append( sb, "includes", 2 );
 1080  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1081  0
                 append( sb, "Expression: ${includes}", 3 );
 1082  0
                 append( sb, "", 0 );
 1083  
 
 1084  0
                 append( sb, "passphrase", 2 );
 1085  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1086  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1087  0
                 append( sb, "", 0 );
 1088  
 
 1089  0
                 append( sb, "password", 2 );
 1090  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1091  0
                 append( sb, "Expression: ${password}", 3 );
 1092  0
                 append( sb, "", 0 );
 1093  
 
 1094  0
                 append( sb, "privateKey", 2 );
 1095  0
                 append( sb, "The private key (used by java svn).", 3 );
 1096  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1097  0
                 append( sb, "", 0 );
 1098  
 
 1099  0
                 append( sb, "providerImplementations", 2 );
 1100  0
                 append( sb, "List of provider implementations.", 3 );
 1101  0
                 append( sb, "", 0 );
 1102  
 
 1103  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1104  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1105  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1106  0
                 append( sb, "", 0 );
 1107  
 
 1108  0
                 append( sb, "scmVersion", 2 );
 1109  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 1110  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 1111  0
                 append( sb, "", 0 );
 1112  
 
 1113  0
                 append( sb, "scmVersionType", 2 );
 1114  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 1115  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 1116  0
                 append( sb, "", 0 );
 1117  
 
 1118  0
                 append( sb, "skipExportIfExists (Default: false)", 2 );
 1119  0
                 append( sb, "Skip export if exportDirectory exists.", 3 );
 1120  0
                 append( sb, "Expression: ${skipExportIfExists}", 3 );
 1121  0
                 append( sb, "", 0 );
 1122  
 
 1123  0
                 append( sb, "systemProperties", 2 );
 1124  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1125  0
                 append( sb, "", 0 );
 1126  
 
 1127  0
                 append( sb, "tagBase", 2 );
 1128  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1129  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1130  0
                 append( sb, "", 0 );
 1131  
 
 1132  0
                 append( sb, "username", 2 );
 1133  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1134  0
                 append( sb, "Expression: ${username}", 3 );
 1135  0
                 append( sb, "", 0 );
 1136  
 
 1137  0
                 append( sb, "workingDirectory", 2 );
 1138  0
                 append( sb, "The working directory.", 3 );
 1139  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1140  0
                 append( sb, "", 0 );
 1141  
             }
 1142  
         }
 1143  
 
 1144  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 1145  
         {
 1146  0
             append( sb, "scm:help", 0 );
 1147  0
             append( sb, "Display help information on maven-scm-plugin.\nCall\n\u00a0\u00a0mvn\u00a0scm:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 1148  0
             append( sb, "", 0 );
 1149  0
             if ( detail )
 1150  
             {
 1151  0
                 append( sb, "Available parameters:", 1 );
 1152  0
                 append( sb, "", 0 );
 1153  
 
 1154  0
                 append( sb, "detail (Default: false)", 2 );
 1155  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 1156  0
                 append( sb, "Expression: ${detail}", 3 );
 1157  0
                 append( sb, "", 0 );
 1158  
 
 1159  0
                 append( sb, "goal", 2 );
 1160  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 1161  0
                 append( sb, "Expression: ${goal}", 3 );
 1162  0
                 append( sb, "", 0 );
 1163  
 
 1164  0
                 append( sb, "indentSize (Default: 2)", 2 );
 1165  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 1166  0
                 append( sb, "Expression: ${indentSize}", 3 );
 1167  0
                 append( sb, "", 0 );
 1168  
 
 1169  0
                 append( sb, "lineLength (Default: 80)", 2 );
 1170  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 1171  0
                 append( sb, "Expression: ${lineLength}", 3 );
 1172  0
                 append( sb, "", 0 );
 1173  
             }
 1174  
         }
 1175  
 
 1176  0
         if ( goal == null || goal.length() <= 0 || "list".equals( goal ) )
 1177  
         {
 1178  0
             append( sb, "scm:list", 0 );
 1179  0
             append( sb, "Get the list of project files.", 1 );
 1180  0
             append( sb, "", 0 );
 1181  0
             if ( detail )
 1182  
             {
 1183  0
                 append( sb, "Available parameters:", 1 );
 1184  0
                 append( sb, "", 0 );
 1185  
 
 1186  0
                 append( sb, "basedir", 2 );
 1187  0
                 append( sb, "The base directory.", 3 );
 1188  0
                 append( sb, "Required: Yes", 3 );
 1189  0
                 append( sb, "Expression: ${basedir}", 3 );
 1190  0
                 append( sb, "", 0 );
 1191  
 
 1192  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1193  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1194  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1195  0
                 append( sb, "", 0 );
 1196  
 
 1197  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1198  0
                 append( sb, "The SCM connection URL.", 3 );
 1199  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1200  0
                 append( sb, "", 0 );
 1201  
 
 1202  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1203  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1204  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1205  0
                 append( sb, "", 0 );
 1206  
 
 1207  0
                 append( sb, "excludes", 2 );
 1208  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1209  0
                 append( sb, "Expression: ${excludes}", 3 );
 1210  0
                 append( sb, "", 0 );
 1211  
 
 1212  0
                 append( sb, "includes", 2 );
 1213  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1214  0
                 append( sb, "Expression: ${includes}", 3 );
 1215  0
                 append( sb, "", 0 );
 1216  
 
 1217  0
                 append( sb, "passphrase", 2 );
 1218  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1219  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1220  0
                 append( sb, "", 0 );
 1221  
 
 1222  0
                 append( sb, "password", 2 );
 1223  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1224  0
                 append( sb, "Expression: ${password}", 3 );
 1225  0
                 append( sb, "", 0 );
 1226  
 
 1227  0
                 append( sb, "privateKey", 2 );
 1228  0
                 append( sb, "The private key (used by java svn).", 3 );
 1229  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1230  0
                 append( sb, "", 0 );
 1231  
 
 1232  0
                 append( sb, "providerImplementations", 2 );
 1233  0
                 append( sb, "List of provider implementations.", 3 );
 1234  0
                 append( sb, "", 0 );
 1235  
 
 1236  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1237  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1238  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1239  0
                 append( sb, "", 0 );
 1240  
 
 1241  0
                 append( sb, "recursive (Default: true)", 2 );
 1242  0
                 append( sb, "Use recursive mode.", 3 );
 1243  0
                 append( sb, "Expression: ${recursive}", 3 );
 1244  0
                 append( sb, "", 0 );
 1245  
 
 1246  0
                 append( sb, "scmVersion", 2 );
 1247  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 1248  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 1249  0
                 append( sb, "", 0 );
 1250  
 
 1251  0
                 append( sb, "scmVersionType", 2 );
 1252  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 1253  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 1254  0
                 append( sb, "", 0 );
 1255  
 
 1256  0
                 append( sb, "systemProperties", 2 );
 1257  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1258  0
                 append( sb, "", 0 );
 1259  
 
 1260  0
                 append( sb, "tagBase", 2 );
 1261  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1262  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1263  0
                 append( sb, "", 0 );
 1264  
 
 1265  0
                 append( sb, "username", 2 );
 1266  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1267  0
                 append( sb, "Expression: ${username}", 3 );
 1268  0
                 append( sb, "", 0 );
 1269  
 
 1270  0
                 append( sb, "workingDirectory", 2 );
 1271  0
                 append( sb, "The working directory.", 3 );
 1272  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1273  0
                 append( sb, "", 0 );
 1274  
             }
 1275  
         }
 1276  
 
 1277  0
         if ( goal == null || goal.length() <= 0 || "remove".equals( goal ) )
 1278  
         {
 1279  0
             append( sb, "scm:remove", 0 );
 1280  0
             append( sb, "Mark a set of files for deletion.", 1 );
 1281  0
             append( sb, "", 0 );
 1282  0
             if ( detail )
 1283  
             {
 1284  0
                 append( sb, "Available parameters:", 1 );
 1285  0
                 append( sb, "", 0 );
 1286  
 
 1287  0
                 append( sb, "basedir", 2 );
 1288  0
                 append( sb, "The base directory.", 3 );
 1289  0
                 append( sb, "Required: Yes", 3 );
 1290  0
                 append( sb, "Expression: ${basedir}", 3 );
 1291  0
                 append( sb, "", 0 );
 1292  
 
 1293  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1294  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1295  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1296  0
                 append( sb, "", 0 );
 1297  
 
 1298  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1299  0
                 append( sb, "The SCM connection URL.", 3 );
 1300  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1301  0
                 append( sb, "", 0 );
 1302  
 
 1303  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1304  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1305  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1306  0
                 append( sb, "", 0 );
 1307  
 
 1308  0
                 append( sb, "excludes", 2 );
 1309  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1310  0
                 append( sb, "Expression: ${excludes}", 3 );
 1311  0
                 append( sb, "", 0 );
 1312  
 
 1313  0
                 append( sb, "includes", 2 );
 1314  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1315  0
                 append( sb, "Expression: ${includes}", 3 );
 1316  0
                 append( sb, "", 0 );
 1317  
 
 1318  0
                 append( sb, "message", 2 );
 1319  0
                 append( sb, "The commit message.", 3 );
 1320  0
                 append( sb, "Expression: ${message}", 3 );
 1321  0
                 append( sb, "", 0 );
 1322  
 
 1323  0
                 append( sb, "passphrase", 2 );
 1324  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1325  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1326  0
                 append( sb, "", 0 );
 1327  
 
 1328  0
                 append( sb, "password", 2 );
 1329  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1330  0
                 append( sb, "Expression: ${password}", 3 );
 1331  0
                 append( sb, "", 0 );
 1332  
 
 1333  0
                 append( sb, "privateKey", 2 );
 1334  0
                 append( sb, "The private key (used by java svn).", 3 );
 1335  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1336  0
                 append( sb, "", 0 );
 1337  
 
 1338  0
                 append( sb, "providerImplementations", 2 );
 1339  0
                 append( sb, "List of provider implementations.", 3 );
 1340  0
                 append( sb, "", 0 );
 1341  
 
 1342  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1343  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1344  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1345  0
                 append( sb, "", 0 );
 1346  
 
 1347  0
                 append( sb, "systemProperties", 2 );
 1348  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1349  0
                 append( sb, "", 0 );
 1350  
 
 1351  0
                 append( sb, "tagBase", 2 );
 1352  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1353  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1354  0
                 append( sb, "", 0 );
 1355  
 
 1356  0
                 append( sb, "username", 2 );
 1357  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1358  0
                 append( sb, "Expression: ${username}", 3 );
 1359  0
                 append( sb, "", 0 );
 1360  
 
 1361  0
                 append( sb, "workingDirectory", 2 );
 1362  0
                 append( sb, "The working directory.", 3 );
 1363  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1364  0
                 append( sb, "", 0 );
 1365  
             }
 1366  
         }
 1367  
 
 1368  0
         if ( goal == null || goal.length() <= 0 || "status".equals( goal ) )
 1369  
         {
 1370  0
             append( sb, "scm:status", 0 );
 1371  0
             append( sb, "Display the modification status of the files in the configured scm url.", 1 );
 1372  0
             append( sb, "", 0 );
 1373  0
             if ( detail )
 1374  
             {
 1375  0
                 append( sb, "Available parameters:", 1 );
 1376  0
                 append( sb, "", 0 );
 1377  
 
 1378  0
                 append( sb, "basedir", 2 );
 1379  0
                 append( sb, "The base directory.", 3 );
 1380  0
                 append( sb, "Required: Yes", 3 );
 1381  0
                 append( sb, "Expression: ${basedir}", 3 );
 1382  0
                 append( sb, "", 0 );
 1383  
 
 1384  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1385  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1386  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1387  0
                 append( sb, "", 0 );
 1388  
 
 1389  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1390  0
                 append( sb, "The SCM connection URL.", 3 );
 1391  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1392  0
                 append( sb, "", 0 );
 1393  
 
 1394  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1395  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1396  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1397  0
                 append( sb, "", 0 );
 1398  
 
 1399  0
                 append( sb, "excludes", 2 );
 1400  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1401  0
                 append( sb, "Expression: ${excludes}", 3 );
 1402  0
                 append( sb, "", 0 );
 1403  
 
 1404  0
                 append( sb, "includes", 2 );
 1405  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1406  0
                 append( sb, "Expression: ${includes}", 3 );
 1407  0
                 append( sb, "", 0 );
 1408  
 
 1409  0
                 append( sb, "passphrase", 2 );
 1410  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1411  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1412  0
                 append( sb, "", 0 );
 1413  
 
 1414  0
                 append( sb, "password", 2 );
 1415  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1416  0
                 append( sb, "Expression: ${password}", 3 );
 1417  0
                 append( sb, "", 0 );
 1418  
 
 1419  0
                 append( sb, "privateKey", 2 );
 1420  0
                 append( sb, "The private key (used by java svn).", 3 );
 1421  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1422  0
                 append( sb, "", 0 );
 1423  
 
 1424  0
                 append( sb, "providerImplementations", 2 );
 1425  0
                 append( sb, "List of provider implementations.", 3 );
 1426  0
                 append( sb, "", 0 );
 1427  
 
 1428  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1429  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1430  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1431  0
                 append( sb, "", 0 );
 1432  
 
 1433  0
                 append( sb, "systemProperties", 2 );
 1434  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1435  0
                 append( sb, "", 0 );
 1436  
 
 1437  0
                 append( sb, "tagBase", 2 );
 1438  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1439  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1440  0
                 append( sb, "", 0 );
 1441  
 
 1442  0
                 append( sb, "username", 2 );
 1443  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1444  0
                 append( sb, "Expression: ${username}", 3 );
 1445  0
                 append( sb, "", 0 );
 1446  
 
 1447  0
                 append( sb, "workingDirectory", 2 );
 1448  0
                 append( sb, "The working directory.", 3 );
 1449  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1450  0
                 append( sb, "", 0 );
 1451  
             }
 1452  
         }
 1453  
 
 1454  0
         if ( goal == null || goal.length() <= 0 || "tag".equals( goal ) )
 1455  
         {
 1456  0
             append( sb, "scm:tag", 0 );
 1457  0
             append( sb, "Tag the project.", 1 );
 1458  0
             append( sb, "", 0 );
 1459  0
             if ( detail )
 1460  
             {
 1461  0
                 append( sb, "Available parameters:", 1 );
 1462  0
                 append( sb, "", 0 );
 1463  
 
 1464  0
                 append( sb, "addTimestamp (Default: false)", 2 );
 1465  0
                 append( sb, "Use timestamp tagging.", 3 );
 1466  0
                 append( sb, "Expression: ${addTimestamp}", 3 );
 1467  0
                 append( sb, "", 0 );
 1468  
 
 1469  0
                 append( sb, "basedir", 2 );
 1470  0
                 append( sb, "The base directory.", 3 );
 1471  0
                 append( sb, "Required: Yes", 3 );
 1472  0
                 append( sb, "Expression: ${basedir}", 3 );
 1473  0
                 append( sb, "", 0 );
 1474  
 
 1475  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1476  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1477  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1478  0
                 append( sb, "", 0 );
 1479  
 
 1480  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1481  0
                 append( sb, "The SCM connection URL.", 3 );
 1482  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1483  0
                 append( sb, "", 0 );
 1484  
 
 1485  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1486  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1487  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1488  0
                 append( sb, "", 0 );
 1489  
 
 1490  0
                 append( sb, "excludes", 2 );
 1491  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1492  0
                 append( sb, "Expression: ${excludes}", 3 );
 1493  0
                 append( sb, "", 0 );
 1494  
 
 1495  0
                 append( sb, "includes", 2 );
 1496  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1497  0
                 append( sb, "Expression: ${includes}", 3 );
 1498  0
                 append( sb, "", 0 );
 1499  
 
 1500  0
                 append( sb, "message", 2 );
 1501  0
                 append( sb, "The message applied to the tag creation.", 3 );
 1502  0
                 append( sb, "Expression: ${message}", 3 );
 1503  0
                 append( sb, "", 0 );
 1504  
 
 1505  0
                 append( sb, "passphrase", 2 );
 1506  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1507  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1508  0
                 append( sb, "", 0 );
 1509  
 
 1510  0
                 append( sb, "password", 2 );
 1511  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1512  0
                 append( sb, "Expression: ${password}", 3 );
 1513  0
                 append( sb, "", 0 );
 1514  
 
 1515  0
                 append( sb, "privateKey", 2 );
 1516  0
                 append( sb, "The private key (used by java svn).", 3 );
 1517  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1518  0
                 append( sb, "", 0 );
 1519  
 
 1520  0
                 append( sb, "providerImplementations", 2 );
 1521  0
                 append( sb, "List of provider implementations.", 3 );
 1522  0
                 append( sb, "", 0 );
 1523  
 
 1524  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1525  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1526  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1527  0
                 append( sb, "", 0 );
 1528  
 
 1529  0
                 append( sb, "remoteTagging (Default: true)", 2 );
 1530  0
                 append( sb, "currently only implemented with svn scm. Enable a workaround to prevent issue due to svn client > 1.5.0 (http://jira.codehaus.org/browse/SCM-406)", 3 );
 1531  0
                 append( sb, "Expression: ${remoteTagging}", 3 );
 1532  0
                 append( sb, "", 0 );
 1533  
 
 1534  0
                 append( sb, "systemProperties", 2 );
 1535  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1536  0
                 append( sb, "", 0 );
 1537  
 
 1538  0
                 append( sb, "tag", 2 );
 1539  0
                 append( sb, "The tag name.", 3 );
 1540  0
                 append( sb, "Required: Yes", 3 );
 1541  0
                 append( sb, "Expression: ${tag}", 3 );
 1542  0
                 append( sb, "", 0 );
 1543  
 
 1544  0
                 append( sb, "tagBase", 2 );
 1545  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1546  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1547  0
                 append( sb, "", 0 );
 1548  
 
 1549  0
                 append( sb, "timestampFormat (Default: yyyyMMddHHmmss)", 2 );
 1550  0
                 append( sb, "Set the timestamp format.", 3 );
 1551  0
                 append( sb, "Expression: ${timestampFormat}", 3 );
 1552  0
                 append( sb, "", 0 );
 1553  
 
 1554  0
                 append( sb, "timestampPosition (Default: end)", 2 );
 1555  0
                 append( sb, "Define the timestamp position (end or begin).", 3 );
 1556  0
                 append( sb, "Expression: ${timestampPosition}", 3 );
 1557  0
                 append( sb, "", 0 );
 1558  
 
 1559  0
                 append( sb, "timestampPrefix (Default: -)", 2 );
 1560  0
                 append( sb, "Timestamp tag prefix.", 3 );
 1561  0
                 append( sb, "Expression: ${timestampPrefix}", 3 );
 1562  0
                 append( sb, "", 0 );
 1563  
 
 1564  0
                 append( sb, "username", 2 );
 1565  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1566  0
                 append( sb, "Expression: ${username}", 3 );
 1567  0
                 append( sb, "", 0 );
 1568  
 
 1569  0
                 append( sb, "workingDirectory", 2 );
 1570  0
                 append( sb, "The working directory.", 3 );
 1571  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1572  0
                 append( sb, "", 0 );
 1573  
             }
 1574  
         }
 1575  
 
 1576  0
         if ( goal == null || goal.length() <= 0 || "unedit".equals( goal ) )
 1577  
         {
 1578  0
             append( sb, "scm:unedit", 0 );
 1579  0
             append( sb, "Unedit/unlock a set of files.", 1 );
 1580  0
             append( sb, "", 0 );
 1581  0
             if ( detail )
 1582  
             {
 1583  0
                 append( sb, "Available parameters:", 1 );
 1584  0
                 append( sb, "", 0 );
 1585  
 
 1586  0
                 append( sb, "basedir", 2 );
 1587  0
                 append( sb, "The base directory.", 3 );
 1588  0
                 append( sb, "Required: Yes", 3 );
 1589  0
                 append( sb, "Expression: ${basedir}", 3 );
 1590  0
                 append( sb, "", 0 );
 1591  
 
 1592  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1593  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1594  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1595  0
                 append( sb, "", 0 );
 1596  
 
 1597  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1598  0
                 append( sb, "The SCM connection URL.", 3 );
 1599  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1600  0
                 append( sb, "", 0 );
 1601  
 
 1602  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1603  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1604  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1605  0
                 append( sb, "", 0 );
 1606  
 
 1607  0
                 append( sb, "excludes", 2 );
 1608  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1609  0
                 append( sb, "Expression: ${excludes}", 3 );
 1610  0
                 append( sb, "", 0 );
 1611  
 
 1612  0
                 append( sb, "includes", 2 );
 1613  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1614  0
                 append( sb, "Expression: ${includes}", 3 );
 1615  0
                 append( sb, "", 0 );
 1616  
 
 1617  0
                 append( sb, "passphrase", 2 );
 1618  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1619  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1620  0
                 append( sb, "", 0 );
 1621  
 
 1622  0
                 append( sb, "password", 2 );
 1623  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1624  0
                 append( sb, "Expression: ${password}", 3 );
 1625  0
                 append( sb, "", 0 );
 1626  
 
 1627  0
                 append( sb, "privateKey", 2 );
 1628  0
                 append( sb, "The private key (used by java svn).", 3 );
 1629  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1630  0
                 append( sb, "", 0 );
 1631  
 
 1632  0
                 append( sb, "providerImplementations", 2 );
 1633  0
                 append( sb, "List of provider implementations.", 3 );
 1634  0
                 append( sb, "", 0 );
 1635  
 
 1636  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1637  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1638  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1639  0
                 append( sb, "", 0 );
 1640  
 
 1641  0
                 append( sb, "systemProperties", 2 );
 1642  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1643  0
                 append( sb, "", 0 );
 1644  
 
 1645  0
                 append( sb, "tagBase", 2 );
 1646  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1647  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1648  0
                 append( sb, "", 0 );
 1649  
 
 1650  0
                 append( sb, "username", 2 );
 1651  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1652  0
                 append( sb, "Expression: ${username}", 3 );
 1653  0
                 append( sb, "", 0 );
 1654  
 
 1655  0
                 append( sb, "workingDirectory", 2 );
 1656  0
                 append( sb, "The working directory.", 3 );
 1657  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1658  0
                 append( sb, "", 0 );
 1659  
             }
 1660  
         }
 1661  
 
 1662  0
         if ( goal == null || goal.length() <= 0 || "update".equals( goal ) )
 1663  
         {
 1664  0
             append( sb, "scm:update", 0 );
 1665  0
             append( sb, "Update the local working copy with the latest source from the configured scm url.", 1 );
 1666  0
             append( sb, "", 0 );
 1667  0
             if ( detail )
 1668  
             {
 1669  0
                 append( sb, "Available parameters:", 1 );
 1670  0
                 append( sb, "", 0 );
 1671  
 
 1672  0
                 append( sb, "basedir", 2 );
 1673  0
                 append( sb, "The base directory.", 3 );
 1674  0
                 append( sb, "Required: Yes", 3 );
 1675  0
                 append( sb, "Expression: ${basedir}", 3 );
 1676  0
                 append( sb, "", 0 );
 1677  
 
 1678  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1679  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1680  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1681  0
                 append( sb, "", 0 );
 1682  
 
 1683  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1684  0
                 append( sb, "The SCM connection URL.", 3 );
 1685  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1686  0
                 append( sb, "", 0 );
 1687  
 
 1688  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1689  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1690  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1691  0
                 append( sb, "", 0 );
 1692  
 
 1693  0
                 append( sb, "excludes", 2 );
 1694  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1695  0
                 append( sb, "Expression: ${excludes}", 3 );
 1696  0
                 append( sb, "", 0 );
 1697  
 
 1698  0
                 append( sb, "includes", 2 );
 1699  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1700  0
                 append( sb, "Expression: ${includes}", 3 );
 1701  0
                 append( sb, "", 0 );
 1702  
 
 1703  0
                 append( sb, "passphrase", 2 );
 1704  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1705  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1706  0
                 append( sb, "", 0 );
 1707  
 
 1708  0
                 append( sb, "password", 2 );
 1709  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1710  0
                 append( sb, "Expression: ${password}", 3 );
 1711  0
                 append( sb, "", 0 );
 1712  
 
 1713  0
                 append( sb, "privateKey", 2 );
 1714  0
                 append( sb, "The private key (used by java svn).", 3 );
 1715  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1716  0
                 append( sb, "", 0 );
 1717  
 
 1718  0
                 append( sb, "providerImplementations", 2 );
 1719  0
                 append( sb, "List of provider implementations.", 3 );
 1720  0
                 append( sb, "", 0 );
 1721  
 
 1722  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1723  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1724  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1725  0
                 append( sb, "", 0 );
 1726  
 
 1727  0
                 append( sb, "revisionKey (Default: scm.revision)", 2 );
 1728  0
                 append( sb, "The project property where to store the revision name.", 3 );
 1729  0
                 append( sb, "Expression: ${revisionKey}", 3 );
 1730  0
                 append( sb, "", 0 );
 1731  
 
 1732  0
                 append( sb, "runChangelog (Default: false)", 2 );
 1733  0
                 append( sb, "Run Changelog after update.", 3 );
 1734  0
                 append( sb, "Expression: ${runChangelog}", 3 );
 1735  0
                 append( sb, "", 0 );
 1736  
 
 1737  0
                 append( sb, "scmVersion", 2 );
 1738  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 1739  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 1740  0
                 append( sb, "", 0 );
 1741  
 
 1742  0
                 append( sb, "scmVersionType", 2 );
 1743  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 1744  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 1745  0
                 append( sb, "", 0 );
 1746  
 
 1747  0
                 append( sb, "systemProperties", 2 );
 1748  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1749  0
                 append( sb, "", 0 );
 1750  
 
 1751  0
                 append( sb, "tagBase", 2 );
 1752  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1753  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1754  0
                 append( sb, "", 0 );
 1755  
 
 1756  0
                 append( sb, "username", 2 );
 1757  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1758  0
                 append( sb, "Expression: ${username}", 3 );
 1759  0
                 append( sb, "", 0 );
 1760  
 
 1761  0
                 append( sb, "workingDirectory", 2 );
 1762  0
                 append( sb, "The working directory.", 3 );
 1763  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1764  0
                 append( sb, "", 0 );
 1765  
             }
 1766  
         }
 1767  
 
 1768  0
         if ( goal == null || goal.length() <= 0 || "update-subprojects".equals( goal ) )
 1769  
         {
 1770  0
             append( sb, "scm:update-subprojects", 0 );
 1771  0
             append( sb, "Updates all projects in a multi project build. This is useful for users who have adopted the flat project structure where the aggregator project is a sibling of the sub projects rather than sitting in the parent directory.", 1 );
 1772  0
             append( sb, "", 0 );
 1773  0
             if ( detail )
 1774  
             {
 1775  0
                 append( sb, "Available parameters:", 1 );
 1776  0
                 append( sb, "", 0 );
 1777  
 
 1778  0
                 append( sb, "basedir", 2 );
 1779  0
                 append( sb, "The base directory.", 3 );
 1780  0
                 append( sb, "Required: Yes", 3 );
 1781  0
                 append( sb, "Expression: ${basedir}", 3 );
 1782  0
                 append( sb, "", 0 );
 1783  
 
 1784  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1785  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1786  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1787  0
                 append( sb, "", 0 );
 1788  
 
 1789  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1790  0
                 append( sb, "The SCM connection URL.", 3 );
 1791  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1792  0
                 append( sb, "", 0 );
 1793  
 
 1794  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1795  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1796  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1797  0
                 append( sb, "", 0 );
 1798  
 
 1799  0
                 append( sb, "excludes", 2 );
 1800  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1801  0
                 append( sb, "Expression: ${excludes}", 3 );
 1802  0
                 append( sb, "", 0 );
 1803  
 
 1804  0
                 append( sb, "includes", 2 );
 1805  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1806  0
                 append( sb, "Expression: ${includes}", 3 );
 1807  0
                 append( sb, "", 0 );
 1808  
 
 1809  0
                 append( sb, "passphrase", 2 );
 1810  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1811  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1812  0
                 append( sb, "", 0 );
 1813  
 
 1814  0
                 append( sb, "password", 2 );
 1815  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1816  0
                 append( sb, "Expression: ${password}", 3 );
 1817  0
                 append( sb, "", 0 );
 1818  
 
 1819  0
                 append( sb, "privateKey", 2 );
 1820  0
                 append( sb, "The private key (used by java svn).", 3 );
 1821  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1822  0
                 append( sb, "", 0 );
 1823  
 
 1824  0
                 append( sb, "providerImplementations", 2 );
 1825  0
                 append( sb, "List of provider implementations.", 3 );
 1826  0
                 append( sb, "", 0 );
 1827  
 
 1828  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1829  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1830  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1831  0
                 append( sb, "", 0 );
 1832  
 
 1833  0
                 append( sb, "revisionKey (Default: scm.revision)", 2 );
 1834  0
                 append( sb, "The project property where to store the revision name.", 3 );
 1835  0
                 append( sb, "Expression: ${revisionKey}", 3 );
 1836  0
                 append( sb, "", 0 );
 1837  
 
 1838  0
                 append( sb, "scmVersion", 2 );
 1839  0
                 append( sb, "The version (revision number/branch name/tag name).", 3 );
 1840  0
                 append( sb, "Expression: ${scmVersion}", 3 );
 1841  0
                 append( sb, "", 0 );
 1842  
 
 1843  0
                 append( sb, "scmVersionType", 2 );
 1844  0
                 append( sb, "The version type (branch/tag/revision) of scmVersion.", 3 );
 1845  0
                 append( sb, "Expression: ${scmVersionType}", 3 );
 1846  0
                 append( sb, "", 0 );
 1847  
 
 1848  0
                 append( sb, "systemProperties", 2 );
 1849  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1850  0
                 append( sb, "", 0 );
 1851  
 
 1852  0
                 append( sb, "tagBase", 2 );
 1853  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1854  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1855  0
                 append( sb, "", 0 );
 1856  
 
 1857  0
                 append( sb, "username", 2 );
 1858  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1859  0
                 append( sb, "Expression: ${username}", 3 );
 1860  0
                 append( sb, "", 0 );
 1861  
 
 1862  0
                 append( sb, "workingDirectory", 2 );
 1863  0
                 append( sb, "The working directory.", 3 );
 1864  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1865  0
                 append( sb, "", 0 );
 1866  
             }
 1867  
         }
 1868  
 
 1869  0
         if ( goal == null || goal.length() <= 0 || "validate".equals( goal ) )
 1870  
         {
 1871  0
             append( sb, "scm:validate", 0 );
 1872  0
             append( sb, "Validate scm connection string.", 1 );
 1873  0
             append( sb, "", 0 );
 1874  0
             if ( detail )
 1875  
             {
 1876  0
                 append( sb, "Available parameters:", 1 );
 1877  0
                 append( sb, "", 0 );
 1878  
 
 1879  0
                 append( sb, "basedir", 2 );
 1880  0
                 append( sb, "The base directory.", 3 );
 1881  0
                 append( sb, "Required: Yes", 3 );
 1882  0
                 append( sb, "Expression: ${basedir}", 3 );
 1883  0
                 append( sb, "", 0 );
 1884  
 
 1885  0
                 append( sb, "connectionType (Default: connection)", 2 );
 1886  0
                 append( sb, "The type of connection to use (connection or developerConnection).", 3 );
 1887  0
                 append( sb, "Expression: ${connectionType}", 3 );
 1888  0
                 append( sb, "", 0 );
 1889  
 
 1890  0
                 append( sb, "connectionUrl (Default: ${project.scm.connection})", 2 );
 1891  0
                 append( sb, "The SCM connection URL.", 3 );
 1892  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1893  0
                 append( sb, "", 0 );
 1894  
 
 1895  0
                 append( sb, "developerConnectionUrl (Default: ${project.scm.developerConnection})", 2 );
 1896  0
                 append( sb, "The SCM connection URL for developers.", 3 );
 1897  0
                 append( sb, "Expression: ${connectionUrl}", 3 );
 1898  0
                 append( sb, "", 0 );
 1899  
 
 1900  0
                 append( sb, "excludes", 2 );
 1901  0
                 append( sb, "Comma separated list of excludes file pattern.", 3 );
 1902  0
                 append( sb, "Expression: ${excludes}", 3 );
 1903  0
                 append( sb, "", 0 );
 1904  
 
 1905  0
                 append( sb, "includes", 2 );
 1906  0
                 append( sb, "Comma separated list of includes file pattern.", 3 );
 1907  0
                 append( sb, "Expression: ${includes}", 3 );
 1908  0
                 append( sb, "", 0 );
 1909  
 
 1910  0
                 append( sb, "passphrase", 2 );
 1911  0
                 append( sb, "The passphrase (used by java svn).", 3 );
 1912  0
                 append( sb, "Expression: ${passphrase}", 3 );
 1913  0
                 append( sb, "", 0 );
 1914  
 
 1915  0
                 append( sb, "password", 2 );
 1916  0
                 append( sb, "The user password (used by svn, starteam and perforce protocol).", 3 );
 1917  0
                 append( sb, "Expression: ${password}", 3 );
 1918  0
                 append( sb, "", 0 );
 1919  
 
 1920  0
                 append( sb, "privateKey", 2 );
 1921  0
                 append( sb, "The private key (used by java svn).", 3 );
 1922  0
                 append( sb, "Expression: ${privateKey}", 3 );
 1923  0
                 append( sb, "", 0 );
 1924  
 
 1925  0
                 append( sb, "providerImplementations", 2 );
 1926  0
                 append( sb, "List of provider implementations.", 3 );
 1927  0
                 append( sb, "", 0 );
 1928  
 
 1929  0
                 append( sb, "pushChanges (Default: true)", 2 );
 1930  0
                 append( sb, "Should distributed changes be pushed to the central repository? For many distributed SCMs like Git, a change like a commit is only stored in your local copy of the repository. Pushing the change allows your to more easily share it with other users.", 3 );
 1931  0
                 append( sb, "Expression: ${pushChanges}", 3 );
 1932  0
                 append( sb, "", 0 );
 1933  
 
 1934  0
                 append( sb, "scmConnection (Default: ${project.scm.connection})", 2 );
 1935  0
                 append( sb, "The scm connection url.", 3 );
 1936  0
                 append( sb, "Expression: ${scmConnection}", 3 );
 1937  0
                 append( sb, "", 0 );
 1938  
 
 1939  0
                 append( sb, "scmDeveloperConnection (Default: ${project.scm.developerConnection})", 2 );
 1940  0
                 append( sb, "The scm connection url for developers.", 3 );
 1941  0
                 append( sb, "Expression: ${scmDeveloperConnection}", 3 );
 1942  0
                 append( sb, "", 0 );
 1943  
 
 1944  0
                 append( sb, "systemProperties", 2 );
 1945  0
                 append( sb, "List of System properties to pass to the JUnit tests.", 3 );
 1946  0
                 append( sb, "", 0 );
 1947  
 
 1948  0
                 append( sb, "tagBase", 2 );
 1949  0
                 append( sb, "The url of tags base directory (used by svn protocol). It is not necessary to set it if you use the standard svn layout (branches/tags/trunk).", 3 );
 1950  0
                 append( sb, "Expression: ${tagBase}", 3 );
 1951  0
                 append( sb, "", 0 );
 1952  
 
 1953  0
                 append( sb, "username", 2 );
 1954  0
                 append( sb, "The user name (used by svn, starteam and perforce protocol).", 3 );
 1955  0
                 append( sb, "Expression: ${username}", 3 );
 1956  0
                 append( sb, "", 0 );
 1957  
 
 1958  0
                 append( sb, "workingDirectory", 2 );
 1959  0
                 append( sb, "The working directory.", 3 );
 1960  0
                 append( sb, "Expression: ${workingDirectory}", 3 );
 1961  0
                 append( sb, "", 0 );
 1962  
             }
 1963  
         }
 1964  
 
 1965  0
         if ( getLog().isInfoEnabled() )
 1966  
         {
 1967  0
             getLog().info( sb.toString() );
 1968  
         }
 1969  0
     }
 1970  
 
 1971  
     /**
 1972  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 1973  
      *
 1974  
      * @param str String to repeat
 1975  
      * @param repeat number of times to repeat str
 1976  
      * @return String with repeated String
 1977  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 1978  
      * @throws NullPointerException if str is <code>null</code>
 1979  
      */
 1980  
     private static String repeat( String str, int repeat )
 1981  
     {
 1982  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 1983  
 
 1984  0
         for ( int i = 0; i < repeat; i++ )
 1985  
         {
 1986  0
             buffer.append( str );
 1987  
         }
 1988  
 
 1989  0
         return buffer.toString();
 1990  
     }
 1991  
 
 1992  
     /** 
 1993  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 1994  
      * <b>Note</b>: The last character is always a new line.
 1995  
      * 
 1996  
      * @param sb The buffer to append the description, not <code>null</code>.
 1997  
      * @param description The description, not <code>null</code>.
 1998  
      * @param indent The base indentation level of each line, must not be negative.
 1999  
      */
 2000  
     private void append( StringBuffer sb, String description, int indent )
 2001  
     {
 2002  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 2003  
         {
 2004  0
             sb.append( it.next().toString() ).append( '\n' );
 2005  
         }
 2006  0
     }
 2007  
 
 2008  
     /** 
 2009  
      * Splits the specified text into lines of convenient display length.
 2010  
      * 
 2011  
      * @param text The text to split into lines, must not be <code>null</code>.
 2012  
      * @param indent The base indentation level of each line, must not be negative.
 2013  
      * @param indentSize The size of each indentation, must not be negative.
 2014  
      * @param lineLength The length of the line, must not be negative.
 2015  
      * @return The sequence of display lines, never <code>null</code>.
 2016  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 2017  
      */
 2018  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 2019  
     {
 2020  0
         List<String> lines = new ArrayList<String>();
 2021  
 
 2022  0
         String ind = repeat( "\t", indent );
 2023  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 2024  0
         for ( int i = 0; i < plainLines.length; i++ )
 2025  
         {
 2026  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 2027  
         }
 2028  
 
 2029  0
         return lines;
 2030  
     }
 2031  
 
 2032  
     /** 
 2033  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 2034  
      * 
 2035  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 2036  
      * @param line The line to add, must not be <code>null</code>.
 2037  
      * @param indentSize The size of each indentation, must not be negative.
 2038  
      * @param lineLength The length of the line, must not be negative.
 2039  
      */
 2040  
     private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
 2041  
     {
 2042  0
         int lineIndent = getIndentLevel( line );
 2043  0
         StringBuffer buf = new StringBuffer( 256 );
 2044  0
         String[] tokens = line.split( " +" );
 2045  0
         for ( int i = 0; i < tokens.length; i++ )
 2046  
         {
 2047  0
             String token = tokens[i];
 2048  0
             if ( i > 0 )
 2049  
             {
 2050  0
                 if ( buf.length() + token.length() >= lineLength )
 2051  
                 {
 2052  0
                     lines.add( buf.toString() );
 2053  0
                     buf.setLength( 0 );
 2054  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 2055  
                 }
 2056  
                 else
 2057  
                 {
 2058  0
                     buf.append( ' ' );
 2059  
                 }
 2060  
             }
 2061  0
             for ( int j = 0; j < token.length(); j++ )
 2062  
             {
 2063  0
                 char c = token.charAt( j );
 2064  0
                 if ( c == '\t' )
 2065  
                 {
 2066  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 2067  
                 }
 2068  0
                 else if ( c == '\u00A0' )
 2069  
                 {
 2070  0
                     buf.append( ' ' );
 2071  
                 }
 2072  
                 else
 2073  
                 {
 2074  0
                     buf.append( c );
 2075  
                 }
 2076  
             }
 2077  
         }
 2078  0
         lines.add( buf.toString() );
 2079  0
     }
 2080  
 
 2081  
     /** 
 2082  
      * Gets the indentation level of the specified line.
 2083  
      * 
 2084  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 2085  
      * @return The indentation level of the line.
 2086  
      */
 2087  
     private static int getIndentLevel( String line )
 2088  
     {
 2089  0
         int level = 0;
 2090  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 2091  
         {
 2092  0
             level++;
 2093  
         }
 2094  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 2095  
         {
 2096  0
             if ( line.charAt( i ) == '\t' )
 2097  
             {
 2098  0
                 level++;
 2099  0
                 break;
 2100  
             }
 2101  
         }
 2102  0
         return level;
 2103  
     }
 2104  
 }