View Javadoc

1   package org.apache.maven.plugin.dependency;
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-dependency-plugin.<br/> Call <pre>  mvn dependency:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
12   *
13   * @version generated on Wed Jul 06 14:00:54 IST 2011
14   * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.7)
15   * @goal help
16   * @requiresProject false
17   * @threadSafe
18   */
19  public class HelpMojo
20      extends AbstractMojo
21  {
22      /**
23       * If <code>true</code>, display all settable properties for each goal.
24       * 
25       * @parameter expression="${detail}" default-value="false"
26       */
27      private boolean detail;
28  
29      /**
30       * The name of the goal for which to show help. If unspecified, all goals will be displayed.
31       * 
32       * @parameter expression="${goal}"
33       */
34      private java.lang.String goal;
35  
36      /**
37       * The maximum length of a display line, should be positive.
38       * 
39       * @parameter expression="${lineLength}" default-value="80"
40       */
41      private int lineLength;
42  
43      /**
44       * The number of spaces per indentation level, should be positive.
45       * 
46       * @parameter expression="${indentSize}" default-value="2"
47       */
48      private int indentSize;
49  
50  
51      /** {@inheritDoc} */
52      public void execute()
53          throws MojoExecutionException
54      {
55          if ( lineLength <= 0 )
56          {
57              getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
58              lineLength = 80;
59          }
60          if ( indentSize <= 0 )
61          {
62              getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
63              indentSize = 2;
64          }
65  
66          StringBuffer sb = new StringBuffer();
67  
68          append( sb, "org.apache.maven.plugins:maven-dependency-plugin:2.3", 0 );
69          append( sb, "", 0 );
70  
71          append( sb, "Maven Dependency Plugin", 0 );
72          append( sb, "Provides utility goals to work with dependencies like copying, unpacking, analyzing, resolving and many more.", 1 );
73          append( sb, "", 0 );
74  
75          if ( goal == null || goal.length() <= 0 )
76          {
77              append( sb, "This plugin has 21 goals:", 0 );
78              append( sb, "", 0 );
79          }
80  
81          if ( goal == null || goal.length() <= 0 || "analyze".equals( goal ) )
82          {
83              append( sb, "dependency:analyze", 0 );
84              append( sb, "Analyzes the dependencies of this project and determines which are: used and declared; used and undeclared; unused and declared. This goal is intended to be used standalone, thus it always executes the test-compile phase - use the dependency:analyze-only goal instead when participating in the build lifecycle.", 1 );
85              append( sb, "", 0 );
86              if ( detail )
87              {
88                  append( sb, "Available parameters:", 1 );
89                  append( sb, "", 0 );
90  
91                  append( sb, "analyzer (Default: default)", 2 );
92                  append( sb, "Project dependency analyzer to use (plexus component role-hint).", 3 );
93                  append( sb, "Expression: ${analyzer}", 3 );
94                  append( sb, "", 0 );
95  
96                  append( sb, "failOnWarning (Default: false)", 2 );
97                  append( sb, "Whether to fail the build if a dependency warning is found.", 3 );
98                  append( sb, "Expression: ${failOnWarning}", 3 );
99                  append( sb, "", 0 );
100 
101                 append( sb, "ignoreNonCompile (Default: false)", 2 );
102                 append( sb, "Ignore Runtime,Provide,Test,System scopes for unused dependency analysis", 3 );
103                 append( sb, "Expression: ${ignoreNonCompile}", 3 );
104                 append( sb, "", 0 );
105 
106                 append( sb, "outputXML (Default: false)", 2 );
107                 append( sb, "Output the xml for the missing dependencies", 3 );
108                 append( sb, "Expression: ${outputXML}", 3 );
109                 append( sb, "", 0 );
110 
111                 append( sb, "scriptableFlag (Default: $$$%%%)", 2 );
112                 append( sb, "Flag to use for scriptable output", 3 );
113                 append( sb, "Expression: ${scriptableFlag}", 3 );
114                 append( sb, "", 0 );
115 
116                 append( sb, "scriptableOutput (Default: false)", 2 );
117                 append( sb, "Output scriptable values", 3 );
118                 append( sb, "Expression: ${scriptableOutput}", 3 );
119                 append( sb, "", 0 );
120 
121                 append( sb, "verbose (Default: false)", 2 );
122                 append( sb, "Output used dependencies", 3 );
123                 append( sb, "Expression: ${verbose}", 3 );
124                 append( sb, "", 0 );
125             }
126         }
127 
128         if ( goal == null || goal.length() <= 0 || "analyze-dep-mgt".equals( goal ) )
129         {
130             append( sb, "dependency:analyze-dep-mgt", 0 );
131             append( sb, "This mojo looks at the dependencies after final resolution and looks for mismatches in your dependencyManagement section. In versions of maven prior to 2.0.6, it was possible to inherit versions that didn\'t match your dependencyManagement. See MNG-1577 for more info. This mojo is also useful for just detecting projects that override the dependencyManagement directly. Set ignoreDirect to false to detect these otherwise normal conditions.", 1 );
132             append( sb, "", 0 );
133             if ( detail )
134             {
135                 append( sb, "Available parameters:", 1 );
136                 append( sb, "", 0 );
137 
138                 append( sb, "failBuild (Default: false)", 2 );
139                 append( sb, "Fail the build if a problem is detected.", 3 );
140                 append( sb, "Expression: ${mdep.analyze.failBuild}", 3 );
141                 append( sb, "", 0 );
142 
143                 append( sb, "ignoreDirect (Default: true)", 2 );
144                 append( sb, "Ignore Direct Dependency Overrides of dependencyManagement section.", 3 );
145                 append( sb, "Expression: ${mdep.analyze.ignore.direct}", 3 );
146                 append( sb, "", 0 );
147             }
148         }
149 
150         if ( goal == null || goal.length() <= 0 || "analyze-duplicate".equals( goal ) )
151         {
152             append( sb, "dependency:analyze-duplicate", 0 );
153             append( sb, "Analyzes the <dependencies/> and <dependencyManagement/> tags in the pom.xml and determines the duplicate declared dependencies.", 1 );
154             append( sb, "", 0 );
155             if ( detail )
156             {
157                 append( sb, "Available parameters:", 1 );
158                 append( sb, "", 0 );
159             }
160         }
161 
162         if ( goal == null || goal.length() <= 0 || "analyze-only".equals( goal ) )
163         {
164             append( sb, "dependency:analyze-only", 0 );
165             append( sb, "Analyzes the dependencies of this project and determines which are: used and declared; used and undeclared; unused and declared. This goal is intended to be used in the build lifecycle, thus it assumes that the test-compile phase has been executed - use the dependency:analyze goal instead when running standalone.", 1 );
166             append( sb, "", 0 );
167             if ( detail )
168             {
169                 append( sb, "Available parameters:", 1 );
170                 append( sb, "", 0 );
171 
172                 append( sb, "analyzer (Default: default)", 2 );
173                 append( sb, "Project dependency analyzer to use (plexus component role-hint).", 3 );
174                 append( sb, "Expression: ${analyzer}", 3 );
175                 append( sb, "", 0 );
176 
177                 append( sb, "failOnWarning (Default: false)", 2 );
178                 append( sb, "Whether to fail the build if a dependency warning is found.", 3 );
179                 append( sb, "Expression: ${failOnWarning}", 3 );
180                 append( sb, "", 0 );
181 
182                 append( sb, "ignoreNonCompile (Default: false)", 2 );
183                 append( sb, "Ignore Runtime,Provide,Test,System scopes for unused dependency analysis", 3 );
184                 append( sb, "Expression: ${ignoreNonCompile}", 3 );
185                 append( sb, "", 0 );
186 
187                 append( sb, "outputXML (Default: false)", 2 );
188                 append( sb, "Output the xml for the missing dependencies", 3 );
189                 append( sb, "Expression: ${outputXML}", 3 );
190                 append( sb, "", 0 );
191 
192                 append( sb, "scriptableFlag (Default: $$$%%%)", 2 );
193                 append( sb, "Flag to use for scriptable output", 3 );
194                 append( sb, "Expression: ${scriptableFlag}", 3 );
195                 append( sb, "", 0 );
196 
197                 append( sb, "scriptableOutput (Default: false)", 2 );
198                 append( sb, "Output scriptable values", 3 );
199                 append( sb, "Expression: ${scriptableOutput}", 3 );
200                 append( sb, "", 0 );
201 
202                 append( sb, "verbose (Default: false)", 2 );
203                 append( sb, "Output used dependencies", 3 );
204                 append( sb, "Expression: ${verbose}", 3 );
205                 append( sb, "", 0 );
206             }
207         }
208 
209         if ( goal == null || goal.length() <= 0 || "analyze-report".equals( goal ) )
210         {
211             append( sb, "dependency:analyze-report", 0 );
212             append( sb, "Analyzes the dependencies of this project and produces a report that summarizes which are: used and declared; used and undeclared; unused and declared.", 1 );
213             append( sb, "", 0 );
214             if ( detail )
215             {
216                 append( sb, "Available parameters:", 1 );
217                 append( sb, "", 0 );
218 
219                 append( sb, "ignoreNonCompile (Default: false)", 2 );
220                 append( sb, "Ignore Runtime,Provide,Test,System scopes for unused dependency analysis", 3 );
221                 append( sb, "Expression: ${ignoreNonCompile}", 3 );
222                 append( sb, "", 0 );
223             }
224         }
225 
226         if ( goal == null || goal.length() <= 0 || "build-classpath".equals( goal ) )
227         {
228             append( sb, "dependency:build-classpath", 0 );
229             append( sb, "This goal will output a classpath string of dependencies from the local repository to a file or log.", 1 );
230             append( sb, "", 0 );
231             if ( detail )
232             {
233                 append( sb, "Available parameters:", 1 );
234                 append( sb, "", 0 );
235 
236                 append( sb, "attach (Default: false)", 2 );
237                 append( sb, "Attach the classpath file to the main artifact so it can be installed and deployed.", 3 );
238                 append( sb, "", 0 );
239 
240                 append( sb, "classifier", 2 );
241                 append( sb, "Specify classifier to look for. Example: sources", 3 );
242                 append( sb, "Expression: ${classifier}", 3 );
243                 append( sb, "", 0 );
244 
245                 append( sb, "cpFile", 2 );
246                 append( sb, "Deprecated. use outputFile instead", 3 );
247                 append( sb, "", 0 );
248                 append( sb, "The file to write the classpath string. If undefined, it just prints the classpath as [INFO]. This parameter is deprecated. Use outputFile instead.", 3 );
249                 append( sb, "Expression: ${mdep.cpFile}", 3 );
250                 append( sb, "", 0 );
251 
252                 append( sb, "excludeArtifactIds", 2 );
253                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
254                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
255                 append( sb, "", 0 );
256 
257                 append( sb, "excludeClassifiers", 2 );
258                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
259                 append( sb, "Expression: ${excludeClassifiers}", 3 );
260                 append( sb, "", 0 );
261 
262                 append( sb, "excludeGroupIds", 2 );
263                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
264                 append( sb, "Expression: ${excludeGroupIds}", 3 );
265                 append( sb, "", 0 );
266 
267                 append( sb, "excludeScope", 2 );
268                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
269                 append( sb, "Expression: ${excludeScope}", 3 );
270                 append( sb, "", 0 );
271 
272                 append( sb, "excludeTransitive (Default: false)", 2 );
273                 append( sb, "If we should exclude transitive dependencies", 3 );
274                 append( sb, "Expression: ${excludeTransitive}", 3 );
275                 append( sb, "", 0 );
276 
277                 append( sb, "excludeTypes", 2 );
278                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
279                 append( sb, "Expression: ${excludeTypes}", 3 );
280                 append( sb, "", 0 );
281 
282                 append( sb, "fileSeparator", 2 );
283                 append( sb, "Override the char used between the paths. This field is initialized to contain the first character of the value of the system property file.separator. On UNIX systems the value of this field is \'/\'; on Microsoft Windows systems it is \'\\\'. The default is File.separator", 3 );
284                 append( sb, "Expression: ${mdep.fileSeparator}", 3 );
285                 append( sb, "", 0 );
286 
287                 append( sb, "includeArtifactIds", 2 );
288                 append( sb, "Comma separated list of Artifact names to include.", 3 );
289                 append( sb, "Expression: ${includeArtifactIds}", 3 );
290                 append( sb, "", 0 );
291 
292                 append( sb, "includeClassifiers", 2 );
293                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
294                 append( sb, "Expression: ${includeClassifiers}", 3 );
295                 append( sb, "", 0 );
296 
297                 append( sb, "includeGroupIds", 2 );
298                 append( sb, "Comma separated list of GroupIds to include.", 3 );
299                 append( sb, "Expression: ${includeGroupIds}", 3 );
300                 append( sb, "", 0 );
301 
302                 append( sb, "includeScope", 2 );
303                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
304                 append( sb, "Expression: ${includeScope}", 3 );
305                 append( sb, "", 0 );
306 
307                 append( sb, "includeTypes", 2 );
308                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
309                 append( sb, "Expression: ${includeTypes}", 3 );
310                 append( sb, "", 0 );
311 
312                 append( sb, "localRepoProperty", 2 );
313                 append( sb, "Replace the absolute path to the local repo with this property. This field is ignored it prefix is declared. The value will be forced to \'${M2_REPO}\' if no value is provided AND the attach flag is true.", 3 );
314                 append( sb, "Expression: ${mdep.localRepoProperty}", 3 );
315                 append( sb, "", 0 );
316 
317                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
318                 append( sb, "Directory to store flag files", 3 );
319                 append( sb, "Expression: ${markersDirectory}", 3 );
320                 append( sb, "", 0 );
321 
322                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
323                 append( sb, "Output absolute filename for resolved artifacts", 3 );
324                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
325                 append( sb, "", 0 );
326 
327                 append( sb, "outputFile", 2 );
328                 append( sb, "The file to write the classpath string. If undefined, it just prints the classpath as [INFO].", 3 );
329                 append( sb, "Expression: ${mdep.outputFile}", 3 );
330                 append( sb, "", 0 );
331 
332                 append( sb, "outputFilterFile (Default: false)", 2 );
333                 append( sb, "Write out the classpath in a format compatible with filtering (classpath=xxxxx)", 3 );
334                 append( sb, "Expression: ${mdep.outputFilterFile}", 3 );
335                 append( sb, "", 0 );
336 
337                 append( sb, "overWriteIfNewer (Default: true)", 2 );
338                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
339                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
340                 append( sb, "", 0 );
341 
342                 append( sb, "overWriteReleases (Default: false)", 2 );
343                 append( sb, "Overwrite release artifacts", 3 );
344                 append( sb, "Expression: ${overWriteReleases}", 3 );
345                 append( sb, "", 0 );
346 
347                 append( sb, "overWriteSnapshots (Default: false)", 2 );
348                 append( sb, "Overwrite snapshot artifacts", 3 );
349                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
350                 append( sb, "", 0 );
351 
352                 append( sb, "pathSeparator", 2 );
353                 append( sb, "Override the char used between path folders. The system-dependent path-separator character. This field is initialized to contain the first character of the value of the system property path.separator. This character is used to separate filenames in a sequence of files given as a path list. On UNIX systems, this character is \':\'; on Microsoft Windows systems it is \';\'.", 3 );
354                 append( sb, "Expression: ${mdep.pathSeparator}", 3 );
355                 append( sb, "", 0 );
356 
357                 append( sb, "prefix", 2 );
358                 append( sb, "The prefix to prepend on each dependent artifact. If undefined, the paths refer to the actual files store in the local repository (the stipVersion parameter does nothing then).", 3 );
359                 append( sb, "Expression: ${mdep.prefix}", 3 );
360                 append( sb, "", 0 );
361 
362                 append( sb, "prependGroupId (Default: false)", 2 );
363                 append( sb, "Prepend the groupId during copy.", 3 );
364                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
365                 append( sb, "", 0 );
366 
367                 append( sb, "regenerateFile (Default: false)", 2 );
368                 append( sb, "If \'true\', it skips the up-to-date-check, and always regenerates the classpath file.", 3 );
369                 append( sb, "Expression: ${mdep.regenerateFile}", 3 );
370                 append( sb, "", 0 );
371 
372                 append( sb, "silent (Default: false)", 2 );
373                 append( sb, "If the plugin should be silent.", 3 );
374                 append( sb, "Expression: ${silent}", 3 );
375                 append( sb, "", 0 );
376 
377                 append( sb, "stripVersion (Default: false)", 2 );
378                 append( sb, "Strip artifact version during copy (only works if prefix is set)", 3 );
379                 append( sb, "Expression: ${mdep.stripVersion}", 3 );
380                 append( sb, "", 0 );
381 
382                 append( sb, "type (Default: java-source)", 2 );
383                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
384                 append( sb, "Expression: ${type}", 3 );
385                 append( sb, "", 0 );
386             }
387         }
388 
389         if ( goal == null || goal.length() <= 0 || "copy".equals( goal ) )
390         {
391             append( sb, "dependency:copy", 0 );
392             append( sb, "Goal that copies a list of artifacts from the repository to defined locations.", 1 );
393             append( sb, "", 0 );
394             if ( detail )
395             {
396                 append( sb, "Available parameters:", 1 );
397                 append( sb, "", 0 );
398 
399                 append( sb, "artifactItems", 2 );
400                 append( sb, "Collection of ArtifactItems to work on. (ArtifactItem contains groupId, artifactId, version, type, classifier, location, destFileName, markerFile and overwrite.) See Usage for details.", 3 );
401                 append( sb, "Required: Yes", 3 );
402                 append( sb, "", 0 );
403 
404                 append( sb, "localRepositoryDirectory", 2 );
405                 append( sb, "Path to override default local repository during plugin\'s execution. To remove all downloaded artifacts as part of the build, set this value to a location under your project\'s target directory", 3 );
406                 append( sb, "", 0 );
407 
408                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
409                 append( sb, "Output absolute filename for resolved artifacts", 3 );
410                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
411                 append( sb, "", 0 );
412 
413                 append( sb, "outputDirectory (Default: ${project.build.directory}/dependency)", 2 );
414                 append( sb, "Default location used for mojo unless overridden in ArtifactItem", 3 );
415                 append( sb, "Expression: ${outputDirectory}", 3 );
416                 append( sb, "", 0 );
417 
418                 append( sb, "overWriteIfNewer (Default: true)", 2 );
419                 append( sb, "Overwrite if newer", 3 );
420                 append( sb, "Expression: ${mdep.overIfNewer}", 3 );
421                 append( sb, "", 0 );
422 
423                 append( sb, "overWriteReleases (Default: false)", 2 );
424                 append( sb, "Overwrite release artifacts", 3 );
425                 append( sb, "Expression: ${mdep.overWriteReleases}", 3 );
426                 append( sb, "", 0 );
427 
428                 append( sb, "overWriteSnapshots (Default: false)", 2 );
429                 append( sb, "Overwrite snapshot artifacts", 3 );
430                 append( sb, "Expression: ${mdep.overWriteSnapshots}", 3 );
431                 append( sb, "", 0 );
432 
433                 append( sb, "silent (Default: false)", 2 );
434                 append( sb, "If the plugin should be silent.", 3 );
435                 append( sb, "Expression: ${silent}", 3 );
436                 append( sb, "", 0 );
437 
438                 append( sb, "skip (Default: false)", 2 );
439                 append( sb, "Skip the execution", 3 );
440                 append( sb, "Expression: ${mdep.skip}", 3 );
441                 append( sb, "", 0 );
442 
443                 append( sb, "stripVersion (Default: false)", 2 );
444                 append( sb, "Strip artifact version during copy", 3 );
445                 append( sb, "Expression: ${mdep.stripVersion}", 3 );
446                 append( sb, "", 0 );
447             }
448         }
449 
450         if ( goal == null || goal.length() <= 0 || "copy-dependencies".equals( goal ) )
451         {
452             append( sb, "dependency:copy-dependencies", 0 );
453             append( sb, "Goal that copies the project dependencies from the repository to a defined location.", 1 );
454             append( sb, "", 0 );
455             if ( detail )
456             {
457                 append( sb, "Available parameters:", 1 );
458                 append( sb, "", 0 );
459 
460                 append( sb, "classifier", 2 );
461                 append( sb, "Specify classifier to look for. Example: sources", 3 );
462                 append( sb, "Expression: ${classifier}", 3 );
463                 append( sb, "", 0 );
464 
465                 append( sb, "copyPom (Default: false)", 2 );
466                 append( sb, "Also copy the pom of each artifact.", 3 );
467                 append( sb, "Expression: ${mdep.copyPom}", 3 );
468                 append( sb, "", 0 );
469 
470                 append( sb, "excludeArtifactIds", 2 );
471                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
472                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
473                 append( sb, "", 0 );
474 
475                 append( sb, "excludeClassifiers", 2 );
476                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
477                 append( sb, "Expression: ${excludeClassifiers}", 3 );
478                 append( sb, "", 0 );
479 
480                 append( sb, "excludeGroupIds", 2 );
481                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
482                 append( sb, "Expression: ${excludeGroupIds}", 3 );
483                 append( sb, "", 0 );
484 
485                 append( sb, "excludeScope", 2 );
486                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
487                 append( sb, "Expression: ${excludeScope}", 3 );
488                 append( sb, "", 0 );
489 
490                 append( sb, "excludeTransitive (Default: false)", 2 );
491                 append( sb, "If we should exclude transitive dependencies", 3 );
492                 append( sb, "Expression: ${excludeTransitive}", 3 );
493                 append( sb, "", 0 );
494 
495                 append( sb, "excludeTypes", 2 );
496                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
497                 append( sb, "Expression: ${excludeTypes}", 3 );
498                 append( sb, "", 0 );
499 
500                 append( sb, "failOnMissingClassifierArtifact (Default: true)", 2 );
501                 append( sb, "This only applies if the classifier parameter is used.", 3 );
502                 append( sb, "Expression: ${mdep.failOnMissingClassifierArtifact}", 3 );
503                 append( sb, "", 0 );
504 
505                 append( sb, "includeArtifactIds", 2 );
506                 append( sb, "Comma separated list of Artifact names to include.", 3 );
507                 append( sb, "Expression: ${includeArtifactIds}", 3 );
508                 append( sb, "", 0 );
509 
510                 append( sb, "includeClassifiers", 2 );
511                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
512                 append( sb, "Expression: ${includeClassifiers}", 3 );
513                 append( sb, "", 0 );
514 
515                 append( sb, "includeGroupIds", 2 );
516                 append( sb, "Comma separated list of GroupIds to include.", 3 );
517                 append( sb, "Expression: ${includeGroupIds}", 3 );
518                 append( sb, "", 0 );
519 
520                 append( sb, "includeScope", 2 );
521                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
522                 append( sb, "Expression: ${includeScope}", 3 );
523                 append( sb, "", 0 );
524 
525                 append( sb, "includeTypes", 2 );
526                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
527                 append( sb, "Expression: ${includeTypes}", 3 );
528                 append( sb, "", 0 );
529 
530                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
531                 append( sb, "Directory to store flag files", 3 );
532                 append( sb, "Expression: ${markersDirectory}", 3 );
533                 append( sb, "", 0 );
534 
535                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
536                 append( sb, "Output absolute filename for resolved artifacts", 3 );
537                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
538                 append( sb, "", 0 );
539 
540                 append( sb, "outputDirectory (Default: ${project.build.directory}/dependency)", 2 );
541                 append( sb, "Default location used for mojo unless overridden in ArtifactItem", 3 );
542                 append( sb, "Expression: ${outputDirectory}", 3 );
543                 append( sb, "", 0 );
544 
545                 append( sb, "overWriteIfNewer (Default: true)", 2 );
546                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
547                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
548                 append( sb, "", 0 );
549 
550                 append( sb, "overWriteReleases (Default: false)", 2 );
551                 append( sb, "Overwrite release artifacts", 3 );
552                 append( sb, "Expression: ${overWriteReleases}", 3 );
553                 append( sb, "", 0 );
554 
555                 append( sb, "overWriteSnapshots (Default: false)", 2 );
556                 append( sb, "Overwrite snapshot artifacts", 3 );
557                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
558                 append( sb, "", 0 );
559 
560                 append( sb, "prependGroupId (Default: false)", 2 );
561                 append( sb, "Prepend the groupId during copy.", 3 );
562                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
563                 append( sb, "", 0 );
564 
565                 append( sb, "silent (Default: false)", 2 );
566                 append( sb, "If the plugin should be silent.", 3 );
567                 append( sb, "Expression: ${silent}", 3 );
568                 append( sb, "", 0 );
569 
570                 append( sb, "stripVersion (Default: false)", 2 );
571                 append( sb, "Strip artifact version during copy", 3 );
572                 append( sb, "Expression: ${mdep.stripVersion}", 3 );
573                 append( sb, "", 0 );
574 
575                 append( sb, "type (Default: java-source)", 2 );
576                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
577                 append( sb, "Expression: ${type}", 3 );
578                 append( sb, "", 0 );
579 
580                 append( sb, "useRepositoryLayout (Default: false)", 2 );
581                 append( sb, "Place each artifact in the same directory layout as a default repository.\nexample: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar", 3 );
582                 append( sb, "Expression: ${mdep.useRepositoryLayout}", 3 );
583                 append( sb, "", 0 );
584 
585                 append( sb, "useSubDirectoryPerArtifact (Default: false)", 2 );
586                 append( sb, "Place each file in a separate subdirectory. (example /outputDirectory/junit-3.8.1-jar)", 3 );
587                 append( sb, "Expression: ${mdep.useSubDirectoryPerArtifact}", 3 );
588                 append( sb, "", 0 );
589 
590                 append( sb, "useSubDirectoryPerScope (Default: false)", 2 );
591                 append( sb, "Place each type of file in a separate subdirectory. (example /outputDirectory/runtime /outputDirectory/provided etc)", 3 );
592                 append( sb, "Expression: ${mdep.useSubDirectoryPerScope}", 3 );
593                 append( sb, "", 0 );
594 
595                 append( sb, "useSubDirectoryPerType (Default: false)", 2 );
596                 append( sb, "Place each type of file in a separate subdirectory. (example /outputDirectory/jars /outputDirectory/wars etc)", 3 );
597                 append( sb, "Expression: ${mdep.useSubDirectoryPerType}", 3 );
598                 append( sb, "", 0 );
599             }
600         }
601 
602         if ( goal == null || goal.length() <= 0 || "get".equals( goal ) )
603         {
604             append( sb, "dependency:get", 0 );
605             append( sb, "Downloads a single artifact transitively from a specified remote repository.", 1 );
606             append( sb, "", 0 );
607             if ( detail )
608             {
609                 append( sb, "Available parameters:", 1 );
610                 append( sb, "", 0 );
611 
612                 append( sb, "artifact", 2 );
613                 append( sb, "A string of the form groupId:artifactId:version[:packaging][:classifier].", 3 );
614                 append( sb, "Expression: ${artifact}", 3 );
615                 append( sb, "", 0 );
616 
617                 append( sb, "artifactId", 2 );
618                 append( sb, "The artifactId of the artifact to download", 3 );
619                 append( sb, "Expression: ${artifactId}", 3 );
620                 append( sb, "", 0 );
621 
622                 append( sb, "classifier", 2 );
623                 append( sb, "The classifier of the artifact to download. Ignored if artifact is used.", 3 );
624                 append( sb, "Expression: ${classifier}", 3 );
625                 append( sb, "", 0 );
626 
627                 append( sb, "groupId", 2 );
628                 append( sb, "The groupId of the artifact to download", 3 );
629                 append( sb, "Expression: ${groupId}", 3 );
630                 append( sb, "", 0 );
631 
632                 append( sb, "packaging (Default: jar)", 2 );
633                 append( sb, "The packaging of the artifact to download", 3 );
634                 append( sb, "Expression: ${packaging}", 3 );
635                 append( sb, "", 0 );
636 
637                 append( sb, "repositoryId (Default: temp)", 2 );
638                 append( sb, "The id of the repository from which we\'ll download the artifact", 3 );
639                 append( sb, "Expression: ${repoId}", 3 );
640                 append( sb, "", 0 );
641 
642                 append( sb, "repositoryUrl", 2 );
643                 append( sb, "The url of the repository from which we\'ll download the artifact", 3 );
644                 append( sb, "Required: Yes", 3 );
645                 append( sb, "Expression: ${repoUrl}", 3 );
646                 append( sb, "", 0 );
647 
648                 append( sb, "transitive (Default: true)", 2 );
649                 append( sb, "Download transitively, retrieving the specified artifact and all of its dependencies.", 3 );
650                 append( sb, "Expression: {$transitive}", 3 );
651                 append( sb, "", 0 );
652 
653                 append( sb, "version", 2 );
654                 append( sb, "The version of the artifact to download", 3 );
655                 append( sb, "Expression: ${version}", 3 );
656                 append( sb, "", 0 );
657             }
658         }
659 
660         if ( goal == null || goal.length() <= 0 || "go-offline".equals( goal ) )
661         {
662             append( sb, "dependency:go-offline", 0 );
663             append( sb, "Goal that resolves all project dependencies, including plugins and reports and their dependencies.", 1 );
664             append( sb, "", 0 );
665             if ( detail )
666             {
667                 append( sb, "Available parameters:", 1 );
668                 append( sb, "", 0 );
669 
670                 append( sb, "appendOutput (Default: false)", 2 );
671                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
672                 append( sb, "Expression: ${appendOutput}", 3 );
673                 append( sb, "", 0 );
674 
675                 append( sb, "classifier", 2 );
676                 append( sb, "Specify classifier to look for. Example: sources", 3 );
677                 append( sb, "Expression: ${classifier}", 3 );
678                 append( sb, "", 0 );
679 
680                 append( sb, "excludeArtifactIds", 2 );
681                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
682                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
683                 append( sb, "", 0 );
684 
685                 append( sb, "excludeClassifiers", 2 );
686                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
687                 append( sb, "Expression: ${excludeClassifiers}", 3 );
688                 append( sb, "", 0 );
689 
690                 append( sb, "excludeGroupIds", 2 );
691                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
692                 append( sb, "Expression: ${excludeGroupIds}", 3 );
693                 append( sb, "", 0 );
694 
695                 append( sb, "excludeScope", 2 );
696                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
697                 append( sb, "Expression: ${excludeScope}", 3 );
698                 append( sb, "", 0 );
699 
700                 append( sb, "excludeTransitive (Default: false)", 2 );
701                 append( sb, "If we should exclude transitive dependencies", 3 );
702                 append( sb, "Expression: ${excludeTransitive}", 3 );
703                 append( sb, "", 0 );
704 
705                 append( sb, "excludeTypes", 2 );
706                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
707                 append( sb, "Expression: ${excludeTypes}", 3 );
708                 append( sb, "", 0 );
709 
710                 append( sb, "includeArtifactIds", 2 );
711                 append( sb, "Comma separated list of Artifact names to include.", 3 );
712                 append( sb, "Expression: ${includeArtifactIds}", 3 );
713                 append( sb, "", 0 );
714 
715                 append( sb, "includeClassifiers", 2 );
716                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
717                 append( sb, "Expression: ${includeClassifiers}", 3 );
718                 append( sb, "", 0 );
719 
720                 append( sb, "includeGroupIds", 2 );
721                 append( sb, "Comma separated list of GroupIds to include.", 3 );
722                 append( sb, "Expression: ${includeGroupIds}", 3 );
723                 append( sb, "", 0 );
724 
725                 append( sb, "includeScope", 2 );
726                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
727                 append( sb, "Expression: ${includeScope}", 3 );
728                 append( sb, "", 0 );
729 
730                 append( sb, "includeTypes", 2 );
731                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
732                 append( sb, "Expression: ${includeTypes}", 3 );
733                 append( sb, "", 0 );
734 
735                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
736                 append( sb, "Directory to store flag files", 3 );
737                 append( sb, "Expression: ${markersDirectory}", 3 );
738                 append( sb, "", 0 );
739 
740                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
741                 append( sb, "Output absolute filename for resolved artifacts", 3 );
742                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
743                 append( sb, "", 0 );
744 
745                 append( sb, "outputFile", 2 );
746                 append( sb, "If specified, this parameter will cause the dependencies to be written to the path specified, instead of writing to the console.", 3 );
747                 append( sb, "Expression: ${outputFile}", 3 );
748                 append( sb, "", 0 );
749 
750                 append( sb, "overWriteIfNewer (Default: true)", 2 );
751                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
752                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
753                 append( sb, "", 0 );
754 
755                 append( sb, "overWriteReleases (Default: false)", 2 );
756                 append( sb, "Overwrite release artifacts", 3 );
757                 append( sb, "Expression: ${overWriteReleases}", 3 );
758                 append( sb, "", 0 );
759 
760                 append( sb, "overWriteSnapshots (Default: false)", 2 );
761                 append( sb, "Overwrite snapshot artifacts", 3 );
762                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
763                 append( sb, "", 0 );
764 
765                 append( sb, "prependGroupId (Default: false)", 2 );
766                 append( sb, "Prepend the groupId during copy.", 3 );
767                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
768                 append( sb, "", 0 );
769 
770                 append( sb, "silent (Default: false)", 2 );
771                 append( sb, "If the plugin should be silent.", 3 );
772                 append( sb, "Expression: ${silent}", 3 );
773                 append( sb, "", 0 );
774 
775                 append( sb, "type (Default: java-source)", 2 );
776                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
777                 append( sb, "Expression: ${type}", 3 );
778                 append( sb, "", 0 );
779             }
780         }
781 
782         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
783         {
784             append( sb, "dependency:help", 0 );
785             append( sb, "Display help information on maven-dependency-plugin.\nCall\n\u00a0\u00a0mvn\u00a0dependency:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
786             append( sb, "", 0 );
787             if ( detail )
788             {
789                 append( sb, "Available parameters:", 1 );
790                 append( sb, "", 0 );
791 
792                 append( sb, "detail (Default: false)", 2 );
793                 append( sb, "If true, display all settable properties for each goal.", 3 );
794                 append( sb, "Expression: ${detail}", 3 );
795                 append( sb, "", 0 );
796 
797                 append( sb, "goal", 2 );
798                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
799                 append( sb, "Expression: ${goal}", 3 );
800                 append( sb, "", 0 );
801 
802                 append( sb, "indentSize (Default: 2)", 2 );
803                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
804                 append( sb, "Expression: ${indentSize}", 3 );
805                 append( sb, "", 0 );
806 
807                 append( sb, "lineLength (Default: 80)", 2 );
808                 append( sb, "The maximum length of a display line, should be positive.", 3 );
809                 append( sb, "Expression: ${lineLength}", 3 );
810                 append( sb, "", 0 );
811             }
812         }
813 
814         if ( goal == null || goal.length() <= 0 || "list".equals( goal ) )
815         {
816             append( sb, "dependency:list", 0 );
817             append( sb, "Displays the list of dependencies for this project.", 1 );
818             append( sb, "", 0 );
819             if ( detail )
820             {
821                 append( sb, "Available parameters:", 1 );
822                 append( sb, "", 0 );
823 
824                 append( sb, "appendOutput (Default: false)", 2 );
825                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
826                 append( sb, "Expression: ${appendOutput}", 3 );
827                 append( sb, "", 0 );
828 
829                 append( sb, "classifier", 2 );
830                 append( sb, "Specify classifier to look for. Example: sources", 3 );
831                 append( sb, "Expression: ${classifier}", 3 );
832                 append( sb, "", 0 );
833 
834                 append( sb, "excludeArtifactIds", 2 );
835                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
836                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
837                 append( sb, "", 0 );
838 
839                 append( sb, "excludeClassifiers", 2 );
840                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
841                 append( sb, "Expression: ${excludeClassifiers}", 3 );
842                 append( sb, "", 0 );
843 
844                 append( sb, "excludeGroupIds", 2 );
845                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
846                 append( sb, "Expression: ${excludeGroupIds}", 3 );
847                 append( sb, "", 0 );
848 
849                 append( sb, "excludeScope", 2 );
850                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
851                 append( sb, "Expression: ${excludeScope}", 3 );
852                 append( sb, "", 0 );
853 
854                 append( sb, "excludeTransitive (Default: false)", 2 );
855                 append( sb, "If we should exclude transitive dependencies", 3 );
856                 append( sb, "Expression: ${excludeTransitive}", 3 );
857                 append( sb, "", 0 );
858 
859                 append( sb, "excludeTypes", 2 );
860                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
861                 append( sb, "Expression: ${excludeTypes}", 3 );
862                 append( sb, "", 0 );
863 
864                 append( sb, "includeArtifactIds", 2 );
865                 append( sb, "Comma separated list of Artifact names to include.", 3 );
866                 append( sb, "Expression: ${includeArtifactIds}", 3 );
867                 append( sb, "", 0 );
868 
869                 append( sb, "includeClassifiers", 2 );
870                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
871                 append( sb, "Expression: ${includeClassifiers}", 3 );
872                 append( sb, "", 0 );
873 
874                 append( sb, "includeGroupIds", 2 );
875                 append( sb, "Comma separated list of GroupIds to include.", 3 );
876                 append( sb, "Expression: ${includeGroupIds}", 3 );
877                 append( sb, "", 0 );
878 
879                 append( sb, "includeScope", 2 );
880                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
881                 append( sb, "Expression: ${includeScope}", 3 );
882                 append( sb, "", 0 );
883 
884                 append( sb, "includeTypes", 2 );
885                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
886                 append( sb, "Expression: ${includeTypes}", 3 );
887                 append( sb, "", 0 );
888 
889                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
890                 append( sb, "Directory to store flag files", 3 );
891                 append( sb, "Expression: ${markersDirectory}", 3 );
892                 append( sb, "", 0 );
893 
894                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
895                 append( sb, "Output absolute filename for resolved artifacts", 3 );
896                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
897                 append( sb, "", 0 );
898 
899                 append( sb, "outputFile", 2 );
900                 append( sb, "If specified, this parameter will cause the dependencies to be written to the path specified, instead of writing to the console.", 3 );
901                 append( sb, "Expression: ${outputFile}", 3 );
902                 append( sb, "", 0 );
903 
904                 append( sb, "outputScope (Default: true)", 2 );
905                 append( sb, "If we should display the scope when resolving", 3 );
906                 append( sb, "Expression: ${mdep.outputScope}", 3 );
907                 append( sb, "", 0 );
908 
909                 append( sb, "overWriteIfNewer (Default: true)", 2 );
910                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
911                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
912                 append( sb, "", 0 );
913 
914                 append( sb, "overWriteReleases (Default: false)", 2 );
915                 append( sb, "Overwrite release artifacts", 3 );
916                 append( sb, "Expression: ${overWriteReleases}", 3 );
917                 append( sb, "", 0 );
918 
919                 append( sb, "overWriteSnapshots (Default: false)", 2 );
920                 append( sb, "Overwrite snapshot artifacts", 3 );
921                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
922                 append( sb, "", 0 );
923 
924                 append( sb, "prependGroupId (Default: false)", 2 );
925                 append( sb, "Prepend the groupId during copy.", 3 );
926                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
927                 append( sb, "", 0 );
928 
929                 append( sb, "silent (Default: false)", 2 );
930                 append( sb, "If the plugin should be silent.", 3 );
931                 append( sb, "Expression: ${silent}", 3 );
932                 append( sb, "", 0 );
933 
934                 append( sb, "type (Default: java-source)", 2 );
935                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
936                 append( sb, "Expression: ${type}", 3 );
937                 append( sb, "", 0 );
938             }
939         }
940 
941         if ( goal == null || goal.length() <= 0 || "list-repositories".equals( goal ) )
942         {
943             append( sb, "dependency:list-repositories", 0 );
944             append( sb, "Goal that resolves all project dependencies and then lists the repositories used by the build and by the transitive dependencies", 1 );
945             append( sb, "", 0 );
946             if ( detail )
947             {
948                 append( sb, "Available parameters:", 1 );
949                 append( sb, "", 0 );
950 
951                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
952                 append( sb, "Output absolute filename for resolved artifacts", 3 );
953                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
954                 append( sb, "", 0 );
955 
956                 append( sb, "silent (Default: false)", 2 );
957                 append( sb, "If the plugin should be silent.", 3 );
958                 append( sb, "Expression: ${silent}", 3 );
959                 append( sb, "", 0 );
960             }
961         }
962 
963         if ( goal == null || goal.length() <= 0 || "properties".equals( goal ) )
964         {
965             append( sb, "dependency:properties", 0 );
966             append( sb, "Goal that sets a property pointing to the artifact file for each project dependency. For each dependency (direct and transitive) a project property will be set which follows the form groupId:artifactId:type:[classifier] and contains the path to the resolved artifact.", 1 );
967             append( sb, "", 0 );
968             if ( detail )
969             {
970                 append( sb, "Available parameters:", 1 );
971                 append( sb, "", 0 );
972             }
973         }
974 
975         if ( goal == null || goal.length() <= 0 || "purge-local-repository".equals( goal ) )
976         {
977             append( sb, "dependency:purge-local-repository", 0 );
978             append( sb, "Remove the project dependencies from the local repository, and optionally re-resolve them.", 1 );
979             append( sb, "", 0 );
980             if ( detail )
981             {
982                 append( sb, "Available parameters:", 1 );
983                 append( sb, "", 0 );
984 
985                 append( sb, "actTransitively (Default: true)", 2 );
986                 append( sb, "Whether this mojo should act on all transitive dependencies. Default value is true.", 3 );
987                 append( sb, "Expression: ${actTransitively}", 3 );
988                 append( sb, "", 0 );
989 
990                 append( sb, "exclude", 2 );
991                 append( sb, "Comma-separated list of groupId:artifactId entries, which should be used to exclude artifacts from deletion/refresh. This is a command-line alternative to the excludes parameter, since List parameters are not currently compatible with CLI specification.", 3 );
992                 append( sb, "Expression: ${exclude}", 3 );
993                 append( sb, "", 0 );
994 
995                 append( sb, "excludes", 2 );
996                 append( sb, "The list of dependencies in the form of groupId:artifactId which should NOT be deleted/refreshed. This is useful for third-party artifacts.", 3 );
997                 append( sb, "", 0 );
998 
999                 append( sb, "reResolve (Default: true)", 2 );
1000                 append( sb, "Whether to re-resolve the artifacts once they have been deleted from the local repository. If you are running this mojo from the command-line, you may want to disable this. By default, artifacts will be re-resolved.", 3 );
1001                 append( sb, "Expression: ${reResolve}", 3 );
1002                 append( sb, "", 0 );
1003 
1004                 append( sb, "resolutionFuzziness (Default: file)", 2 );
1005                 append( sb, "Determines how liberally the plugin will delete an artifact from the local repository. Values are:\n\n-\tfile (default) - Eliminate only the artifact\'s file.\n-\tversion - Eliminate all files associated with the artifact\'s version.\n-\tartifactId - Eliminate all files associated with the artifact\'s artifactId.\n-\tgroupId - Eliminate all files associated with the artifact\'s groupId.\n", 3 );
1006                 append( sb, "Expression: ${resolutionFuzziness}", 3 );
1007                 append( sb, "", 0 );
1008 
1009                 append( sb, "verbose (Default: false)", 2 );
1010                 append( sb, "Whether this plugin should output verbose messages. Default is false.", 3 );
1011                 append( sb, "Expression: ${verbose}", 3 );
1012                 append( sb, "", 0 );
1013             }
1014         }
1015 
1016         if ( goal == null || goal.length() <= 0 || "resolve".equals( goal ) )
1017         {
1018             append( sb, "dependency:resolve", 0 );
1019             append( sb, "Goal that resolves the project dependencies from the repository.", 1 );
1020             append( sb, "", 0 );
1021             if ( detail )
1022             {
1023                 append( sb, "Available parameters:", 1 );
1024                 append( sb, "", 0 );
1025 
1026                 append( sb, "appendOutput (Default: false)", 2 );
1027                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
1028                 append( sb, "Expression: ${appendOutput}", 3 );
1029                 append( sb, "", 0 );
1030 
1031                 append( sb, "classifier", 2 );
1032                 append( sb, "Specify classifier to look for. Example: sources", 3 );
1033                 append( sb, "Expression: ${classifier}", 3 );
1034                 append( sb, "", 0 );
1035 
1036                 append( sb, "excludeArtifactIds", 2 );
1037                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
1038                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
1039                 append( sb, "", 0 );
1040 
1041                 append( sb, "excludeClassifiers", 2 );
1042                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1043                 append( sb, "Expression: ${excludeClassifiers}", 3 );
1044                 append( sb, "", 0 );
1045 
1046                 append( sb, "excludeGroupIds", 2 );
1047                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
1048                 append( sb, "Expression: ${excludeGroupIds}", 3 );
1049                 append( sb, "", 0 );
1050 
1051                 append( sb, "excludeScope", 2 );
1052                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
1053                 append( sb, "Expression: ${excludeScope}", 3 );
1054                 append( sb, "", 0 );
1055 
1056                 append( sb, "excludeTransitive (Default: false)", 2 );
1057                 append( sb, "If we should exclude transitive dependencies", 3 );
1058                 append( sb, "Expression: ${excludeTransitive}", 3 );
1059                 append( sb, "", 0 );
1060 
1061                 append( sb, "excludeTypes", 2 );
1062                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1063                 append( sb, "Expression: ${excludeTypes}", 3 );
1064                 append( sb, "", 0 );
1065 
1066                 append( sb, "includeArtifactIds", 2 );
1067                 append( sb, "Comma separated list of Artifact names to include.", 3 );
1068                 append( sb, "Expression: ${includeArtifactIds}", 3 );
1069                 append( sb, "", 0 );
1070 
1071                 append( sb, "includeClassifiers", 2 );
1072                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
1073                 append( sb, "Expression: ${includeClassifiers}", 3 );
1074                 append( sb, "", 0 );
1075 
1076                 append( sb, "includeGroupIds", 2 );
1077                 append( sb, "Comma separated list of GroupIds to include.", 3 );
1078                 append( sb, "Expression: ${includeGroupIds}", 3 );
1079                 append( sb, "", 0 );
1080 
1081                 append( sb, "includeScope", 2 );
1082                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
1083                 append( sb, "Expression: ${includeScope}", 3 );
1084                 append( sb, "", 0 );
1085 
1086                 append( sb, "includeTypes", 2 );
1087                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
1088                 append( sb, "Expression: ${includeTypes}", 3 );
1089                 append( sb, "", 0 );
1090 
1091                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
1092                 append( sb, "Directory to store flag files", 3 );
1093                 append( sb, "Expression: ${markersDirectory}", 3 );
1094                 append( sb, "", 0 );
1095 
1096                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
1097                 append( sb, "Output absolute filename for resolved artifacts", 3 );
1098                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
1099                 append( sb, "", 0 );
1100 
1101                 append( sb, "outputFile", 2 );
1102                 append( sb, "If specified, this parameter will cause the dependencies to be written to the path specified, instead of writing to the console.", 3 );
1103                 append( sb, "Expression: ${outputFile}", 3 );
1104                 append( sb, "", 0 );
1105 
1106                 append( sb, "outputScope (Default: true)", 2 );
1107                 append( sb, "If we should display the scope when resolving", 3 );
1108                 append( sb, "Expression: ${mdep.outputScope}", 3 );
1109                 append( sb, "", 0 );
1110 
1111                 append( sb, "overWriteIfNewer (Default: true)", 2 );
1112                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
1113                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
1114                 append( sb, "", 0 );
1115 
1116                 append( sb, "overWriteReleases (Default: false)", 2 );
1117                 append( sb, "Overwrite release artifacts", 3 );
1118                 append( sb, "Expression: ${overWriteReleases}", 3 );
1119                 append( sb, "", 0 );
1120 
1121                 append( sb, "overWriteSnapshots (Default: false)", 2 );
1122                 append( sb, "Overwrite snapshot artifacts", 3 );
1123                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
1124                 append( sb, "", 0 );
1125 
1126                 append( sb, "prependGroupId (Default: false)", 2 );
1127                 append( sb, "Prepend the groupId during copy.", 3 );
1128                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
1129                 append( sb, "", 0 );
1130 
1131                 append( sb, "silent (Default: false)", 2 );
1132                 append( sb, "If the plugin should be silent.", 3 );
1133                 append( sb, "Expression: ${silent}", 3 );
1134                 append( sb, "", 0 );
1135 
1136                 append( sb, "type (Default: java-source)", 2 );
1137                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
1138                 append( sb, "Expression: ${type}", 3 );
1139                 append( sb, "", 0 );
1140             }
1141         }
1142 
1143         if ( goal == null || goal.length() <= 0 || "resolve-plugins".equals( goal ) )
1144         {
1145             append( sb, "dependency:resolve-plugins", 0 );
1146             append( sb, "Goal that resolves all project plugins and reports and their dependencies.", 1 );
1147             append( sb, "", 0 );
1148             if ( detail )
1149             {
1150                 append( sb, "Available parameters:", 1 );
1151                 append( sb, "", 0 );
1152 
1153                 append( sb, "appendOutput (Default: false)", 2 );
1154                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
1155                 append( sb, "Expression: ${appendOutput}", 3 );
1156                 append( sb, "", 0 );
1157 
1158                 append( sb, "classifier", 2 );
1159                 append( sb, "Specify classifier to look for. Example: sources", 3 );
1160                 append( sb, "Expression: ${classifier}", 3 );
1161                 append( sb, "", 0 );
1162 
1163                 append( sb, "excludeArtifactIds", 2 );
1164                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
1165                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
1166                 append( sb, "", 0 );
1167 
1168                 append( sb, "excludeClassifiers", 2 );
1169                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1170                 append( sb, "Expression: ${excludeClassifiers}", 3 );
1171                 append( sb, "", 0 );
1172 
1173                 append( sb, "excludeGroupIds", 2 );
1174                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
1175                 append( sb, "Expression: ${excludeGroupIds}", 3 );
1176                 append( sb, "", 0 );
1177 
1178                 append( sb, "excludeScope", 2 );
1179                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
1180                 append( sb, "Expression: ${excludeScope}", 3 );
1181                 append( sb, "", 0 );
1182 
1183                 append( sb, "excludeTransitive (Default: false)", 2 );
1184                 append( sb, "If we should exclude transitive dependencies", 3 );
1185                 append( sb, "Expression: ${excludeTransitive}", 3 );
1186                 append( sb, "", 0 );
1187 
1188                 append( sb, "excludeTypes", 2 );
1189                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1190                 append( sb, "Expression: ${excludeTypes}", 3 );
1191                 append( sb, "", 0 );
1192 
1193                 append( sb, "includeArtifactIds", 2 );
1194                 append( sb, "Comma separated list of Artifact names to include.", 3 );
1195                 append( sb, "Expression: ${includeArtifactIds}", 3 );
1196                 append( sb, "", 0 );
1197 
1198                 append( sb, "includeClassifiers", 2 );
1199                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
1200                 append( sb, "Expression: ${includeClassifiers}", 3 );
1201                 append( sb, "", 0 );
1202 
1203                 append( sb, "includeGroupIds", 2 );
1204                 append( sb, "Comma separated list of GroupIds to include.", 3 );
1205                 append( sb, "Expression: ${includeGroupIds}", 3 );
1206                 append( sb, "", 0 );
1207 
1208                 append( sb, "includeScope", 2 );
1209                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
1210                 append( sb, "Expression: ${includeScope}", 3 );
1211                 append( sb, "", 0 );
1212 
1213                 append( sb, "includeTypes", 2 );
1214                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
1215                 append( sb, "Expression: ${includeTypes}", 3 );
1216                 append( sb, "", 0 );
1217 
1218                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
1219                 append( sb, "Directory to store flag files", 3 );
1220                 append( sb, "Expression: ${markersDirectory}", 3 );
1221                 append( sb, "", 0 );
1222 
1223                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
1224                 append( sb, "Output absolute filename for resolved artifacts", 3 );
1225                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
1226                 append( sb, "", 0 );
1227 
1228                 append( sb, "outputFile", 2 );
1229                 append( sb, "If specified, this parameter will cause the dependencies to be written to the path specified, instead of writing to the console.", 3 );
1230                 append( sb, "Expression: ${outputFile}", 3 );
1231                 append( sb, "", 0 );
1232 
1233                 append( sb, "overWriteIfNewer (Default: true)", 2 );
1234                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
1235                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
1236                 append( sb, "", 0 );
1237 
1238                 append( sb, "overWriteReleases (Default: false)", 2 );
1239                 append( sb, "Overwrite release artifacts", 3 );
1240                 append( sb, "Expression: ${overWriteReleases}", 3 );
1241                 append( sb, "", 0 );
1242 
1243                 append( sb, "overWriteSnapshots (Default: false)", 2 );
1244                 append( sb, "Overwrite snapshot artifacts", 3 );
1245                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
1246                 append( sb, "", 0 );
1247 
1248                 append( sb, "prependGroupId (Default: false)", 2 );
1249                 append( sb, "Prepend the groupId during copy.", 3 );
1250                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
1251                 append( sb, "", 0 );
1252 
1253                 append( sb, "silent (Default: false)", 2 );
1254                 append( sb, "If the plugin should be silent.", 3 );
1255                 append( sb, "Expression: ${silent}", 3 );
1256                 append( sb, "", 0 );
1257 
1258                 append( sb, "type (Default: java-source)", 2 );
1259                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
1260                 append( sb, "Expression: ${type}", 3 );
1261                 append( sb, "", 0 );
1262             }
1263         }
1264 
1265         if ( goal == null || goal.length() <= 0 || "sources".equals( goal ) )
1266         {
1267             append( sb, "dependency:sources", 0 );
1268             append( sb, "Goal that resolves the project source dependencies from the repository.", 1 );
1269             append( sb, "", 0 );
1270             if ( detail )
1271             {
1272                 append( sb, "Available parameters:", 1 );
1273                 append( sb, "", 0 );
1274 
1275                 append( sb, "appendOutput (Default: false)", 2 );
1276                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
1277                 append( sb, "Expression: ${appendOutput}", 3 );
1278                 append( sb, "", 0 );
1279 
1280                 append( sb, "classifier", 2 );
1281                 append( sb, "Specify classifier to look for. Example: sources", 3 );
1282                 append( sb, "Expression: ${classifier}", 3 );
1283                 append( sb, "", 0 );
1284 
1285                 append( sb, "excludeArtifactIds", 2 );
1286                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
1287                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
1288                 append( sb, "", 0 );
1289 
1290                 append( sb, "excludeClassifiers", 2 );
1291                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1292                 append( sb, "Expression: ${excludeClassifiers}", 3 );
1293                 append( sb, "", 0 );
1294 
1295                 append( sb, "excludeGroupIds", 2 );
1296                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
1297                 append( sb, "Expression: ${excludeGroupIds}", 3 );
1298                 append( sb, "", 0 );
1299 
1300                 append( sb, "excludeScope", 2 );
1301                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
1302                 append( sb, "Expression: ${excludeScope}", 3 );
1303                 append( sb, "", 0 );
1304 
1305                 append( sb, "excludeTransitive (Default: false)", 2 );
1306                 append( sb, "If we should exclude transitive dependencies", 3 );
1307                 append( sb, "Expression: ${excludeTransitive}", 3 );
1308                 append( sb, "", 0 );
1309 
1310                 append( sb, "excludeTypes", 2 );
1311                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1312                 append( sb, "Expression: ${excludeTypes}", 3 );
1313                 append( sb, "", 0 );
1314 
1315                 append( sb, "includeArtifactIds", 2 );
1316                 append( sb, "Comma separated list of Artifact names to include.", 3 );
1317                 append( sb, "Expression: ${includeArtifactIds}", 3 );
1318                 append( sb, "", 0 );
1319 
1320                 append( sb, "includeClassifiers", 2 );
1321                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
1322                 append( sb, "Expression: ${includeClassifiers}", 3 );
1323                 append( sb, "", 0 );
1324 
1325                 append( sb, "includeGroupIds", 2 );
1326                 append( sb, "Comma separated list of GroupIds to include.", 3 );
1327                 append( sb, "Expression: ${includeGroupIds}", 3 );
1328                 append( sb, "", 0 );
1329 
1330                 append( sb, "includeScope", 2 );
1331                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
1332                 append( sb, "Expression: ${includeScope}", 3 );
1333                 append( sb, "", 0 );
1334 
1335                 append( sb, "includeTypes", 2 );
1336                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
1337                 append( sb, "Expression: ${includeTypes}", 3 );
1338                 append( sb, "", 0 );
1339 
1340                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
1341                 append( sb, "Directory to store flag files", 3 );
1342                 append( sb, "Expression: ${markersDirectory}", 3 );
1343                 append( sb, "", 0 );
1344 
1345                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
1346                 append( sb, "Output absolute filename for resolved artifacts", 3 );
1347                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
1348                 append( sb, "", 0 );
1349 
1350                 append( sb, "outputFile", 2 );
1351                 append( sb, "If specified, this parameter will cause the dependencies to be written to the path specified, instead of writing to the console.", 3 );
1352                 append( sb, "Expression: ${outputFile}", 3 );
1353                 append( sb, "", 0 );
1354 
1355                 append( sb, "overWriteIfNewer (Default: true)", 2 );
1356                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
1357                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
1358                 append( sb, "", 0 );
1359 
1360                 append( sb, "overWriteReleases (Default: false)", 2 );
1361                 append( sb, "Overwrite release artifacts", 3 );
1362                 append( sb, "Expression: ${overWriteReleases}", 3 );
1363                 append( sb, "", 0 );
1364 
1365                 append( sb, "overWriteSnapshots (Default: false)", 2 );
1366                 append( sb, "Overwrite snapshot artifacts", 3 );
1367                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
1368                 append( sb, "", 0 );
1369 
1370                 append( sb, "prependGroupId (Default: false)", 2 );
1371                 append( sb, "Prepend the groupId during copy.", 3 );
1372                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
1373                 append( sb, "", 0 );
1374 
1375                 append( sb, "silent (Default: false)", 2 );
1376                 append( sb, "If the plugin should be silent.", 3 );
1377                 append( sb, "Expression: ${silent}", 3 );
1378                 append( sb, "", 0 );
1379 
1380                 append( sb, "type (Default: java-source)", 2 );
1381                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
1382                 append( sb, "Expression: ${type}", 3 );
1383                 append( sb, "", 0 );
1384             }
1385         }
1386 
1387         if ( goal == null || goal.length() <= 0 || "tree".equals( goal ) )
1388         {
1389             append( sb, "dependency:tree", 0 );
1390             append( sb, "Displays the dependency tree for this project.", 1 );
1391             append( sb, "", 0 );
1392             if ( detail )
1393             {
1394                 append( sb, "Available parameters:", 1 );
1395                 append( sb, "", 0 );
1396 
1397                 append( sb, "appendOutput (Default: false)", 2 );
1398                 append( sb, "Whether to append outputs into the output file or overwrite it.", 3 );
1399                 append( sb, "Expression: ${appendOutput}", 3 );
1400                 append( sb, "", 0 );
1401 
1402                 append( sb, "excludes", 2 );
1403                 append( sb, "A comma-separated list of artifacts to filter from the serialized dependency tree, or null not to filter any artifacts from the dependency tree. The artifact syntax is defined by StrictPatternExcludesArtifactFilter.", 3 );
1404                 append( sb, "Expression: ${excludes}", 3 );
1405                 append( sb, "", 0 );
1406 
1407                 append( sb, "includes", 2 );
1408                 append( sb, "A comma-separated list of artifacts to filter the serialized dependency tree by, or null not to filter the dependency tree. The artifact syntax is defined by StrictPatternIncludesArtifactFilter.", 3 );
1409                 append( sb, "Expression: ${includes}", 3 );
1410                 append( sb, "", 0 );
1411 
1412                 append( sb, "output", 2 );
1413                 append( sb, "Deprecated. use outputFile instead.", 3 );
1414                 append( sb, "", 0 );
1415                 append( sb, "If specified, this parameter will cause the dependency tree to be written to the path specified, instead of writing to the console.", 3 );
1416                 append( sb, "Expression: ${output}", 3 );
1417                 append( sb, "", 0 );
1418 
1419                 append( sb, "outputFile", 2 );
1420                 append( sb, "If specified, this parameter will cause the dependency tree to be written to the path specified, instead of writing to the console.", 3 );
1421                 append( sb, "Expression: ${outputFile}", 3 );
1422                 append( sb, "", 0 );
1423 
1424                 append( sb, "outputType (Default: text)", 2 );
1425                 append( sb, "If specified, this parameter will cause the dependency tree to be written using the specified format. Currently supported format are text, dot, graphml and tgf. These formats can be plotted to image files. An example of how to plot a dot file using pygraphviz can be found here", 3 );
1426                 append( sb, "Expression: ${outputType}", 3 );
1427                 append( sb, "", 0 );
1428 
1429                 append( sb, "scope", 2 );
1430                 append( sb, "The scope to filter by when resolving the dependency tree, or null to include dependencies from all scopes. Note that this feature does not currently work due to MNG-3236.", 3 );
1431                 append( sb, "Expression: ${scope}", 3 );
1432                 append( sb, "", 0 );
1433 
1434                 append( sb, "tokens (Default: standard)", 2 );
1435                 append( sb, "The token set name to use when outputting the dependency tree. Possible values are whitespace, standard or extended, which use whitespace, standard or extended ASCII sets respectively.", 3 );
1436                 append( sb, "Expression: ${tokens}", 3 );
1437                 append( sb, "", 0 );
1438 
1439                 append( sb, "verbose (Default: false)", 2 );
1440                 append( sb, "Whether to include omitted nodes in the serialized dependency tree.", 3 );
1441                 append( sb, "Expression: ${verbose}", 3 );
1442                 append( sb, "", 0 );
1443             }
1444         }
1445 
1446         if ( goal == null || goal.length() <= 0 || "unpack".equals( goal ) )
1447         {
1448             append( sb, "dependency:unpack", 0 );
1449             append( sb, "Goal that retrieves a list of artifacts from the repository and unpacks them in a defined location.", 1 );
1450             append( sb, "", 0 );
1451             if ( detail )
1452             {
1453                 append( sb, "Available parameters:", 1 );
1454                 append( sb, "", 0 );
1455 
1456                 append( sb, "artifactItems", 2 );
1457                 append( sb, "Collection of ArtifactItems to work on. (ArtifactItem contains groupId, artifactId, version, type, classifier, location, destFileName, markerFile and overwrite.) See Usage for details.", 3 );
1458                 append( sb, "Required: Yes", 3 );
1459                 append( sb, "", 0 );
1460 
1461                 append( sb, "excludes", 2 );
1462                 append( sb, "A comma separated list of file patterns to exclude when unpacking the artifact. i.e. **\\/*.xml,**\\/*.properties NOTE: Excludes patterns override the includes. (component code = return isIncluded( name ) AND !isExcluded( name );)", 3 );
1463                 append( sb, "Expression: ${mdep.unpack.excludes}", 3 );
1464                 append( sb, "", 0 );
1465 
1466                 append( sb, "includes", 2 );
1467                 append( sb, "A comma separated list of file patterns to include when unpacking the artifact. i.e. **\\/*.xml,**\\/*.properties NOTE: Excludes patterns override the includes. (component code = return isIncluded( name ) AND !isExcluded( name );)", 3 );
1468                 append( sb, "Expression: ${mdep.unpack.includes}", 3 );
1469                 append( sb, "", 0 );
1470 
1471                 append( sb, "localRepositoryDirectory", 2 );
1472                 append( sb, "Path to override default local repository during plugin\'s execution. To remove all downloaded artifacts as part of the build, set this value to a location under your project\'s target directory", 3 );
1473                 append( sb, "", 0 );
1474 
1475                 append( sb, "markersDirectory", 2 );
1476                 append( sb, "Directory to store flag files after unpack", 3 );
1477                 append( sb, "Expression: ${project.build.directory}/dependency-maven-plugin-markers", 3 );
1478                 append( sb, "", 0 );
1479 
1480                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
1481                 append( sb, "Output absolute filename for resolved artifacts", 3 );
1482                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
1483                 append( sb, "", 0 );
1484 
1485                 append( sb, "outputDirectory (Default: ${project.build.directory}/dependency)", 2 );
1486                 append( sb, "Default location used for mojo unless overridden in ArtifactItem", 3 );
1487                 append( sb, "Expression: ${outputDirectory}", 3 );
1488                 append( sb, "", 0 );
1489 
1490                 append( sb, "overWriteIfNewer (Default: true)", 2 );
1491                 append( sb, "Overwrite if newer", 3 );
1492                 append( sb, "Expression: ${mdep.overIfNewer}", 3 );
1493                 append( sb, "", 0 );
1494 
1495                 append( sb, "overWriteReleases (Default: false)", 2 );
1496                 append( sb, "Overwrite release artifacts", 3 );
1497                 append( sb, "Expression: ${mdep.overWriteReleases}", 3 );
1498                 append( sb, "", 0 );
1499 
1500                 append( sb, "overWriteSnapshots (Default: false)", 2 );
1501                 append( sb, "Overwrite snapshot artifacts", 3 );
1502                 append( sb, "Expression: ${mdep.overWriteSnapshots}", 3 );
1503                 append( sb, "", 0 );
1504 
1505                 append( sb, "silent (Default: false)", 2 );
1506                 append( sb, "If the plugin should be silent.", 3 );
1507                 append( sb, "Expression: ${silent}", 3 );
1508                 append( sb, "", 0 );
1509 
1510                 append( sb, "skip (Default: false)", 2 );
1511                 append( sb, "Skip the execution", 3 );
1512                 append( sb, "Expression: ${mdep.skip}", 3 );
1513                 append( sb, "", 0 );
1514             }
1515         }
1516 
1517         if ( goal == null || goal.length() <= 0 || "unpack-dependencies".equals( goal ) )
1518         {
1519             append( sb, "dependency:unpack-dependencies", 0 );
1520             append( sb, "Goal that unpacks the project dependencies from the repository to a defined location.", 1 );
1521             append( sb, "", 0 );
1522             if ( detail )
1523             {
1524                 append( sb, "Available parameters:", 1 );
1525                 append( sb, "", 0 );
1526 
1527                 append( sb, "classifier", 2 );
1528                 append( sb, "Specify classifier to look for. Example: sources", 3 );
1529                 append( sb, "Expression: ${classifier}", 3 );
1530                 append( sb, "", 0 );
1531 
1532                 append( sb, "copyPom (Default: false)", 2 );
1533                 append( sb, "Also copy the pom of each artifact.", 3 );
1534                 append( sb, "Expression: ${mdep.copyPom}", 3 );
1535                 append( sb, "", 0 );
1536 
1537                 append( sb, "excludeArtifactIds", 2 );
1538                 append( sb, "Comma separated list of Artifact names too exclude.", 3 );
1539                 append( sb, "Expression: ${excludeArtifactIds}", 3 );
1540                 append( sb, "", 0 );
1541 
1542                 append( sb, "excludeClassifiers", 2 );
1543                 append( sb, "Comma Separated list of Classifiers to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1544                 append( sb, "Expression: ${excludeClassifiers}", 3 );
1545                 append( sb, "", 0 );
1546 
1547                 append( sb, "excludeGroupIds", 2 );
1548                 append( sb, "Comma separated list of GroupId Names to exclude.", 3 );
1549                 append( sb, "Expression: ${excludeGroupIds}", 3 );
1550                 append( sb, "", 0 );
1551 
1552                 append( sb, "excludes", 2 );
1553                 append( sb, "A comma separated list of file patterns to exclude when unpacking the artifact. i.e. **\\/*.xml,**\\/*.properties NOTE: Excludes patterns override the includes. (component code = return isIncluded( name ) AND !isExcluded( name );)", 3 );
1554                 append( sb, "Expression: ${mdep.unpack.excludes}", 3 );
1555                 append( sb, "", 0 );
1556 
1557                 append( sb, "excludeScope", 2 );
1558                 append( sb, "Scope to exclude. An Empty string indicates no scopes (default).", 3 );
1559                 append( sb, "Expression: ${excludeScope}", 3 );
1560                 append( sb, "", 0 );
1561 
1562                 append( sb, "excludeTransitive (Default: false)", 2 );
1563                 append( sb, "If we should exclude transitive dependencies", 3 );
1564                 append( sb, "Expression: ${excludeTransitive}", 3 );
1565                 append( sb, "", 0 );
1566 
1567                 append( sb, "excludeTypes", 2 );
1568                 append( sb, "Comma Separated list of Types to exclude. Empty String indicates don\'t exclude anything (default).", 3 );
1569                 append( sb, "Expression: ${excludeTypes}", 3 );
1570                 append( sb, "", 0 );
1571 
1572                 append( sb, "failOnMissingClassifierArtifact (Default: true)", 2 );
1573                 append( sb, "This only applies if the classifier parameter is used.", 3 );
1574                 append( sb, "Expression: ${mdep.failOnMissingClassifierArtifact}", 3 );
1575                 append( sb, "", 0 );
1576 
1577                 append( sb, "includeArtifactIds", 2 );
1578                 append( sb, "Comma separated list of Artifact names to include.", 3 );
1579                 append( sb, "Expression: ${includeArtifactIds}", 3 );
1580                 append( sb, "", 0 );
1581 
1582                 append( sb, "includeClassifiers", 2 );
1583                 append( sb, "Comma Separated list of Classifiers to include. Empty String indicates include everything (default).", 3 );
1584                 append( sb, "Expression: ${includeClassifiers}", 3 );
1585                 append( sb, "", 0 );
1586 
1587                 append( sb, "includeGroupIds", 2 );
1588                 append( sb, "Comma separated list of GroupIds to include.", 3 );
1589                 append( sb, "Expression: ${includeGroupIds}", 3 );
1590                 append( sb, "", 0 );
1591 
1592                 append( sb, "includes", 2 );
1593                 append( sb, "A comma separated list of file patterns to include when unpacking the artifact. i.e. **\\/*.xml,**\\/*.properties NOTE: Excludes patterns override the includes. (component code = return isIncluded( name ) AND !isExcluded( name );)", 3 );
1594                 append( sb, "Expression: ${mdep.unpack.includes}", 3 );
1595                 append( sb, "", 0 );
1596 
1597                 append( sb, "includeScope", 2 );
1598                 append( sb, "Scope to include. An Empty string indicates all scopes (default).", 3 );
1599                 append( sb, "Expression: ${includeScope}", 3 );
1600                 append( sb, "", 0 );
1601 
1602                 append( sb, "includeTypes", 2 );
1603                 append( sb, "Comma Separated list of Types to include. Empty String indicates include everything (default).", 3 );
1604                 append( sb, "Expression: ${includeTypes}", 3 );
1605                 append( sb, "", 0 );
1606 
1607                 append( sb, "markersDirectory (Default: ${project.build.directory}/dependency-maven-plugin-markers)", 2 );
1608                 append( sb, "Directory to store flag files", 3 );
1609                 append( sb, "Expression: ${markersDirectory}", 3 );
1610                 append( sb, "", 0 );
1611 
1612                 append( sb, "outputAbsoluteArtifactFilename (Default: false)", 2 );
1613                 append( sb, "Output absolute filename for resolved artifacts", 3 );
1614                 append( sb, "Expression: ${outputAbsoluteArtifactFilename}", 3 );
1615                 append( sb, "", 0 );
1616 
1617                 append( sb, "outputDirectory (Default: ${project.build.directory}/dependency)", 2 );
1618                 append( sb, "Default location used for mojo unless overridden in ArtifactItem", 3 );
1619                 append( sb, "Expression: ${outputDirectory}", 3 );
1620                 append( sb, "", 0 );
1621 
1622                 append( sb, "overWriteIfNewer (Default: true)", 2 );
1623                 append( sb, "Overwrite artifacts that don\'t exist or are older than the source.", 3 );
1624                 append( sb, "Expression: ${overWriteIfNewer}", 3 );
1625                 append( sb, "", 0 );
1626 
1627                 append( sb, "overWriteReleases (Default: false)", 2 );
1628                 append( sb, "Overwrite release artifacts", 3 );
1629                 append( sb, "Expression: ${overWriteReleases}", 3 );
1630                 append( sb, "", 0 );
1631 
1632                 append( sb, "overWriteSnapshots (Default: false)", 2 );
1633                 append( sb, "Overwrite snapshot artifacts", 3 );
1634                 append( sb, "Expression: ${overWriteSnapshots}", 3 );
1635                 append( sb, "", 0 );
1636 
1637                 append( sb, "prependGroupId (Default: false)", 2 );
1638                 append( sb, "Prepend the groupId during copy.", 3 );
1639                 append( sb, "Expression: ${mdep.prependGroupId}", 3 );
1640                 append( sb, "", 0 );
1641 
1642                 append( sb, "silent (Default: false)", 2 );
1643                 append( sb, "If the plugin should be silent.", 3 );
1644                 append( sb, "Expression: ${silent}", 3 );
1645                 append( sb, "", 0 );
1646 
1647                 append( sb, "stripVersion (Default: false)", 2 );
1648                 append( sb, "Strip artifact version during copy", 3 );
1649                 append( sb, "Expression: ${mdep.stripVersion}", 3 );
1650                 append( sb, "", 0 );
1651 
1652                 append( sb, "type (Default: java-source)", 2 );
1653                 append( sb, "Specify type to look for when constructing artifact based on classifier. Example: java-source,jar,war", 3 );
1654                 append( sb, "Expression: ${type}", 3 );
1655                 append( sb, "", 0 );
1656 
1657                 append( sb, "useRepositoryLayout (Default: false)", 2 );
1658                 append( sb, "Place each artifact in the same directory layout as a default repository.\nexample: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar", 3 );
1659                 append( sb, "Expression: ${mdep.useRepositoryLayout}", 3 );
1660                 append( sb, "", 0 );
1661 
1662                 append( sb, "useSubDirectoryPerArtifact (Default: false)", 2 );
1663                 append( sb, "Place each file in a separate subdirectory. (example /outputDirectory/junit-3.8.1-jar)", 3 );
1664                 append( sb, "Expression: ${mdep.useSubDirectoryPerArtifact}", 3 );
1665                 append( sb, "", 0 );
1666 
1667                 append( sb, "useSubDirectoryPerScope (Default: false)", 2 );
1668                 append( sb, "Place each type of file in a separate subdirectory. (example /outputDirectory/runtime /outputDirectory/provided etc)", 3 );
1669                 append( sb, "Expression: ${mdep.useSubDirectoryPerScope}", 3 );
1670                 append( sb, "", 0 );
1671 
1672                 append( sb, "useSubDirectoryPerType (Default: false)", 2 );
1673                 append( sb, "Place each type of file in a separate subdirectory. (example /outputDirectory/jars /outputDirectory/wars etc)", 3 );
1674                 append( sb, "Expression: ${mdep.useSubDirectoryPerType}", 3 );
1675                 append( sb, "", 0 );
1676             }
1677         }
1678 
1679         if ( getLog().isInfoEnabled() )
1680         {
1681             getLog().info( sb.toString() );
1682         }
1683     }
1684 
1685     /**
1686      * <p>Repeat a String <code>n</code> times to form a new string.</p>
1687      *
1688      * @param str String to repeat
1689      * @param repeat number of times to repeat str
1690      * @return String with repeated String
1691      * @throws NegativeArraySizeException if <code>repeat < 0</code>
1692      * @throws NullPointerException if str is <code>null</code>
1693      */
1694     private static String repeat( String str, int repeat )
1695     {
1696         StringBuffer buffer = new StringBuffer( repeat * str.length() );
1697 
1698         for ( int i = 0; i < repeat; i++ )
1699         {
1700             buffer.append( str );
1701         }
1702 
1703         return buffer.toString();
1704     }
1705 
1706     /** 
1707      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
1708      * <b>Note</b>: The last character is always a new line.
1709      * 
1710      * @param sb The buffer to append the description, not <code>null</code>.
1711      * @param description The description, not <code>null</code>.
1712      * @param indent The base indentation level of each line, must not be negative.
1713      */
1714     private void append( StringBuffer sb, String description, int indent )
1715     {
1716         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
1717         {
1718             sb.append( it.next().toString() ).append( '\n' );
1719         }
1720     }
1721 
1722     /** 
1723      * Splits the specified text into lines of convenient display length.
1724      * 
1725      * @param text The text to split into lines, must not be <code>null</code>.
1726      * @param indent The base indentation level of each line, must not be negative.
1727      * @param indentSize The size of each indentation, must not be negative.
1728      * @param lineLength The length of the line, must not be negative.
1729      * @return The sequence of display lines, never <code>null</code>.
1730      * @throws NegativeArraySizeException if <code>indent < 0</code>
1731      */
1732     private static List toLines( String text, int indent, int indentSize, int lineLength )
1733     {
1734         List lines = new ArrayList();
1735 
1736         String ind = repeat( "\t", indent );
1737         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
1738         for ( int i = 0; i < plainLines.length; i++ )
1739         {
1740             toLines( lines, ind + plainLines[i], indentSize, lineLength );
1741         }
1742 
1743         return lines;
1744     }
1745 
1746     /** 
1747      * Adds the specified line to the output sequence, performing line wrapping if necessary.
1748      * 
1749      * @param lines The sequence of display lines, must not be <code>null</code>.
1750      * @param line The line to add, must not be <code>null</code>.
1751      * @param indentSize The size of each indentation, must not be negative.
1752      * @param lineLength The length of the line, must not be negative.
1753      */
1754     private static void toLines( List lines, String line, int indentSize, int lineLength )
1755     {
1756         int lineIndent = getIndentLevel( line );
1757         StringBuffer buf = new StringBuffer( 256 );
1758         String[] tokens = line.split( " +" );
1759         for ( int i = 0; i < tokens.length; i++ )
1760         {
1761             String token = tokens[i];
1762             if ( i > 0 )
1763             {
1764                 if ( buf.length() + token.length() >= lineLength )
1765                 {
1766                     lines.add( buf.toString() );
1767                     buf.setLength( 0 );
1768                     buf.append( repeat( " ", lineIndent * indentSize ) );
1769                 }
1770                 else
1771                 {
1772                     buf.append( ' ' );
1773                 }
1774             }
1775             for ( int j = 0; j < token.length(); j++ )
1776             {
1777                 char c = token.charAt( j );
1778                 if ( c == '\t' )
1779                 {
1780                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
1781                 }
1782                 else if ( c == '\u00A0' )
1783                 {
1784                     buf.append( ' ' );
1785                 }
1786                 else
1787                 {
1788                     buf.append( c );
1789                 }
1790             }
1791         }
1792         lines.add( buf.toString() );
1793     }
1794 
1795     /** 
1796      * Gets the indentation level of the specified line.
1797      * 
1798      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
1799      * @return The indentation level of the line.
1800      */
1801     private static int getIndentLevel( String line )
1802     {
1803         int level = 0;
1804         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
1805         {
1806             level++;
1807         }
1808         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
1809         {
1810             if ( line.charAt( i ) == '\t' )
1811             {
1812                 level++;
1813                 break;
1814             }
1815         }
1816         return level;
1817     }
1818 }