View Javadoc

1   package org.jomc.mojo;
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-jomc-plugin.<br/> Call <pre>  mvn jomc:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
12   *
13   * @version generated on Sun Jun 03 10:05:25 CEST 2012
14   * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.9)
15   * @goal help
16   * @requiresProject false
17   * @threadSafe
18   */
19  @SuppressWarnings( "all" )
20  public class HelpMojo
21      extends AbstractMojo
22  {
23      /**
24       * If <code>true</code>, display all settable properties for each goal.
25       * 
26       * @parameter expression="${detail}" default-value="false"
27       */
28      private boolean detail;
29  
30      /**
31       * The name of the goal for which to show help. If unspecified, all goals will be displayed.
32       * 
33       * @parameter expression="${goal}"
34       */
35      private java.lang.String goal;
36  
37      /**
38       * The maximum length of a display line, should be positive.
39       * 
40       * @parameter expression="${lineLength}" default-value="80"
41       */
42      private int lineLength;
43  
44      /**
45       * The number of spaces per indentation level, should be positive.
46       * 
47       * @parameter expression="${indentSize}" default-value="2"
48       */
49      private int indentSize;
50  
51  
52      /** {@inheritDoc} */
53      public void execute()
54          throws MojoExecutionException
55      {
56          if ( lineLength <= 0 )
57          {
58              getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
59              lineLength = 80;
60          }
61          if ( indentSize <= 0 )
62          {
63              getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
64              indentSize = 2;
65          }
66  
67          StringBuffer sb = new StringBuffer();
68  
69          append( sb, "org.jomc:maven-jomc-plugin:1.3", 0 );
70          append( sb, "", 0 );
71  
72          append( sb, "Maven JOMC Plugin", 0 );
73          append( sb, "Object management and configuration tools for Apache Maven.", 1 );
74          append( sb, "", 0 );
75  
76          if ( goal == null || goal.length() <= 0 )
77          {
78              append( sb, "This plugin has 21 goals:", 0 );
79              append( sb, "", 0 );
80          }
81  
82          if ( goal == null || goal.length() <= 0 || "attach-main-module".equals( goal ) )
83          {
84              append( sb, "jomc:attach-main-module", 0 );
85              append( sb, "Attaches a project\'s main module artifact.", 1 );
86              append( sb, "", 0 );
87              if ( detail )
88              {
89                  append( sb, "Available parameters:", 1 );
90                  append( sb, "", 0 );
91  
92                  append( sb, "attachMainModuleExecutionStrategy (Default: once-per-session)", 2 );
93                  append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
94                  append( sb, "Expression: ${jomc.attachMainModuleExecutionStrategy}", 3 );
95                  append( sb, "", 0 );
96  
97                  append( sb, "mainModuleArtifactClassifier (Default: jomc-module)", 2 );
98                  append( sb, "Classifier of the attached module artifact.", 3 );
99                  append( sb, "Expression: ${jomc.mainModuleArtifactClassifier}", 3 );
100                 append( sb, "", 0 );
101 
102                 append( sb, "mainModuleArtifactFile (Default: ${project.build.outputDirectory}/META-INF/jomc.xml)", 2 );
103                 append( sb, "File of the attached module artifact.", 3 );
104                 append( sb, "Expression: ${jomc.mainModuleArtifactFile}", 3 );
105                 append( sb, "", 0 );
106 
107                 append( sb, "mainModuleArtifactType (Default: xml)", 2 );
108                 append( sb, "Type of the attached module artifact.", 3 );
109                 append( sb, "Expression: ${jomc.mainModuleArtifactType}", 3 );
110                 append( sb, "", 0 );
111 
112                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
113                 append( sb, "Directory holding the session related files of the project.", 3 );
114                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
115                 append( sb, "", 0 );
116 
117                 append( sb, "verbose (Default: false)", 2 );
118                 append( sb, "Controls verbosity of the plugin.", 3 );
119                 append( sb, "Expression: ${jomc.verbose}", 3 );
120                 append( sb, "", 0 );
121             }
122         }
123 
124         if ( goal == null || goal.length() <= 0 || "attach-test-module".equals( goal ) )
125         {
126             append( sb, "jomc:attach-test-module", 0 );
127             append( sb, "Attaches a project\'s test module artifact.", 1 );
128             append( sb, "", 0 );
129             if ( detail )
130             {
131                 append( sb, "Available parameters:", 1 );
132                 append( sb, "", 0 );
133 
134                 append( sb, "attachTestModuleExecutionStrategy (Default: once-per-session)", 2 );
135                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
136                 append( sb, "Expression: ${jomc.attachTestModuleExecutionStrategy}", 3 );
137                 append( sb, "", 0 );
138 
139                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
140                 append( sb, "Directory holding the session related files of the project.", 3 );
141                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
142                 append( sb, "", 0 );
143 
144                 append( sb, "testModuleArtifactClassifier (Default: jomc-test-module)", 2 );
145                 append( sb, "Classifier of the attached module artifact.", 3 );
146                 append( sb, "Expression: ${jomc.testModuleArtifactClassifier}", 3 );
147                 append( sb, "", 0 );
148 
149                 append( sb, "testModuleArtifactFile (Default: ${project.build.testOutputDirectory}/META-INF/jomc.xml)", 2 );
150                 append( sb, "File of the attached module artifact.", 3 );
151                 append( sb, "Expression: ${jomc.testModuleArtifactFile}", 3 );
152                 append( sb, "", 0 );
153 
154                 append( sb, "testModuleArtifactType (Default: xml)", 2 );
155                 append( sb, "Type of the attached module artifact.", 3 );
156                 append( sb, "Expression: ${jomc.testModuleArtifactType}", 3 );
157                 append( sb, "", 0 );
158 
159                 append( sb, "verbose (Default: false)", 2 );
160                 append( sb, "Controls verbosity of the plugin.", 3 );
161                 append( sb, "Expression: ${jomc.verbose}", 3 );
162                 append( sb, "", 0 );
163             }
164         }
165 
166         if ( goal == null || goal.length() <= 0 || "commit-main-classes".equals( goal ) )
167         {
168             append( sb, "jomc:commit-main-classes", 0 );
169             append( sb, "Commits model objects to a projects\' main classes.", 1 );
170             append( sb, "", 0 );
171             if ( detail )
172             {
173                 append( sb, "Available parameters:", 1 );
174                 append( sb, "", 0 );
175 
176                 append( sb, "classesDirectory", 2 );
177                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
178                 append( sb, "", 0 );
179 
180                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
181                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
182                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
183                 append( sb, "", 0 );
184 
185                 append( sb, "classProcessingEnabled (Default: true)", 2 );
186                 append( sb, "Controls processing of class files.", 3 );
187                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
188                 append( sb, "", 0 );
189 
190                 append( sb, "commitMainClassesExecutionStrategy (Default: once-per-session)", 2 );
191                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
192                 append( sb, "Expression: ${jomc.commitMainClassesExecutionStrategy}", 3 );
193                 append( sb, "", 0 );
194 
195                 append( sb, "defaultTemplateEncoding", 2 );
196                 append( sb, "The encoding to use for reading templates.", 3 );
197                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
198                 append( sb, "", 0 );
199 
200                 append( sb, "defaultTemplateProfile", 2 );
201                 append( sb, "The default template profile to use when accessing templates.", 3 );
202                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
203                 append( sb, "", 0 );
204 
205                 append( sb, "indentation", 2 );
206                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
207                 append( sb, "Expression: ${jomc.indentation}", 3 );
208                 append( sb, "", 0 );
209 
210                 append( sb, "lineSeparator", 2 );
211                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
212                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
213                 append( sb, "", 0 );
214 
215                 append( sb, "locale", 2 );
216                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
217                 append( sb, "", 0 );
218 
219                 append( sb, "model (Default: http://jomc.org/model)", 2 );
220                 append( sb, "The identifier of the model to process.", 3 );
221                 append( sb, "Expression: ${jomc.model}", 3 );
222                 append( sb, "", 0 );
223 
224                 append( sb, "modelContextAttributes", 2 );
225                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
226                 append( sb, "", 0 );
227 
228                 append( sb, "modelContextFactoryClassName", 2 );
229                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
230                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
231                 append( sb, "", 0 );
232 
233                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
234                 append( sb, "Controls model object class path resolution.", 3 );
235                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
236                 append( sb, "", 0 );
237 
238                 append( sb, "modelObjectStylesheet", 2 );
239                 append( sb, "XSLT document to use for transforming model objects.\nThe value of the parameter is a location to search a XSLT document at. First the value is used to search the class path of the plugin. If a class path resource is found, a XSLT document is loaded from that resource. If no class path resource is found, an attempt is made to parse the value to an URL. Succeeding that, an XSLT document is loaded from that URL (since version 1.2). Failing that, the value is interpreted as a file name of a XSLT document to load relative to the base directory of the project. If that file exists, a XSLT document is loaded from that file. If no XSLT document is found at the given location, a build failure is produced.\n\nNote: When upgrading to version 1.2, any project dependencies holding XSLT documents referenced by this parameter need to be added to the plugins\' dependencies.\n\nDeprecated: As of JOMC 1.2, please use the \'modelObjectStylesheetResources\' parameter. This parameter will be removed in version 2.0.\n", 3 );
240                 append( sb, "", 0 );
241 
242                 append( sb, "modelObjectStylesheetResources", 2 );
243                 append( sb, "XSLT documents to use for transforming model objects.\n<modelObjectStylesheetResources>\n\u00a0\u00a0<modelObjectStylesheetResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0XSLT\u00a0document.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0XSLT\u00a0document\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0\u00a0\u00a0<transformationParameterResources>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0</transformationParameterResources>\n\u00a0\u00a0\u00a0\u00a0<transformationParameters>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationParameter>\n\u00a0\u00a0\u00a0\u00a0</transformationParameters>\n\u00a0\u00a0\u00a0\u00a0<transformationOutputProperties>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0</transformationOutputProperties>\n\u00a0\u00a0</modelObjectStylesheetResource>\n</modelObjectStylesheetResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
244                 append( sb, "", 0 );
245 
246                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
247                 append( sb, "Controls processing of models.", 3 );
248                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
249                 append( sb, "", 0 );
250 
251                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
252                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
253                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
254                 append( sb, "", 0 );
255 
256                 append( sb, "modletLocation", 2 );
257                 append( sb, "The location to search for modlets.", 3 );
258                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
259                 append( sb, "", 0 );
260 
261                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
262                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
263                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
264                 append( sb, "", 0 );
265 
266                 append( sb, "modletSchemaSystemId", 2 );
267                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
268                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
269                 append( sb, "", 0 );
270 
271                 append( sb, "moduleLocation", 2 );
272                 append( sb, "The location to search for modules.", 3 );
273                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
274                 append( sb, "", 0 );
275 
276                 append( sb, "moduleName (Default: ${project.name})", 2 );
277                 append( sb, "Name of the module to process.", 3 );
278                 append( sb, "Expression: ${jomc.moduleName}", 3 );
279                 append( sb, "", 0 );
280 
281                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
282                 append( sb, "Output directory of the project.", 3 );
283                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
284                 append( sb, "", 0 );
285 
286                 append( sb, "platformProviderLocation", 2 );
287                 append( sb, "The location to search for platform providers.", 3 );
288                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
289                 append( sb, "", 0 );
290 
291                 append( sb, "providerLocation", 2 );
292                 append( sb, "The location to search for providers.", 3 );
293                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
294                 append( sb, "", 0 );
295 
296                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
297                 append( sb, "Directory holding the reports of the project.", 3 );
298                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
299                 append( sb, "", 0 );
300 
301                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
302                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
303                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
304                 append( sb, "", 0 );
305 
306                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
307                 append( sb, "Controls processing of resource files.", 3 );
308                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
309                 append( sb, "", 0 );
310 
311                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
312                 append( sb, "Directory holding the session related files of the project.", 3 );
313                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
314                 append( sb, "", 0 );
315 
316                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
317                 append( sb, "Directory holding the source files of the project.", 3 );
318                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
319                 append( sb, "", 0 );
320 
321                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
322                 append( sb, "The encoding to use for reading and writing files.", 3 );
323                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
324                 append( sb, "", 0 );
325 
326                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
327                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
328                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
329                 append( sb, "", 0 );
330 
331                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
332                 append( sb, "Controls processing of source code files.", 3 );
333                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
334                 append( sb, "", 0 );
335 
336                 append( sb, "templateEncoding", 2 );
337                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
338                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
339                 append( sb, "", 0 );
340 
341                 append( sb, "templateLocation", 2 );
342                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
343                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
344                 append( sb, "", 0 );
345 
346                 append( sb, "templateParameterResources", 2 );
347                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
348                 append( sb, "", 0 );
349 
350                 append( sb, "templateParameters", 2 );
351                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
352                 append( sb, "", 0 );
353 
354                 append( sb, "templateProfile", 2 );
355                 append( sb, "The template profile to use when accessing templates.", 3 );
356                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
357                 append( sb, "", 0 );
358 
359                 append( sb, "testClassesDirectory", 2 );
360                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
361                 append( sb, "", 0 );
362 
363                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
364                 append( sb, "Name of the test module to process.", 3 );
365                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
366                 append( sb, "", 0 );
367 
368                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
369                 append( sb, "Test output directory of the project.", 3 );
370                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
371                 append( sb, "", 0 );
372 
373                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
374                 append( sb, "Directory holding the test source files of the project.", 3 );
375                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
376                 append( sb, "", 0 );
377 
378                 append( sb, "transformationOutputProperties", 2 );
379                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
380                 append( sb, "", 0 );
381 
382                 append( sb, "transformationParameterResources", 2 );
383                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
384                 append( sb, "", 0 );
385 
386                 append( sb, "transformationParameters", 2 );
387                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
388                 append( sb, "", 0 );
389 
390                 append( sb, "transformerLocation", 2 );
391                 append( sb, "The location to search for transformers.", 3 );
392                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
393                 append( sb, "", 0 );
394 
395                 append( sb, "velocityProperties", 2 );
396                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
397                 append( sb, "", 0 );
398 
399                 append( sb, "velocityPropertyResources", 2 );
400                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
401                 append( sb, "", 0 );
402 
403                 append( sb, "verbose (Default: false)", 2 );
404                 append( sb, "Controls verbosity of the plugin.", 3 );
405                 append( sb, "Expression: ${jomc.verbose}", 3 );
406                 append( sb, "", 0 );
407             }
408         }
409 
410         if ( goal == null || goal.length() <= 0 || "commit-test-classes".equals( goal ) )
411         {
412             append( sb, "jomc:commit-test-classes", 0 );
413             append( sb, "Commits model objects to a projects\' test classes.", 1 );
414             append( sb, "", 0 );
415             if ( detail )
416             {
417                 append( sb, "Available parameters:", 1 );
418                 append( sb, "", 0 );
419 
420                 append( sb, "classesDirectory", 2 );
421                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
422                 append( sb, "", 0 );
423 
424                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
425                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
426                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
427                 append( sb, "", 0 );
428 
429                 append( sb, "classProcessingEnabled (Default: true)", 2 );
430                 append( sb, "Controls processing of class files.", 3 );
431                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
432                 append( sb, "", 0 );
433 
434                 append( sb, "commitTestClassesExecutionStrategy (Default: once-per-session)", 2 );
435                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
436                 append( sb, "Expression: ${jomc.commitTestClassesExecutionStrategy}", 3 );
437                 append( sb, "", 0 );
438 
439                 append( sb, "defaultTemplateEncoding", 2 );
440                 append( sb, "The encoding to use for reading templates.", 3 );
441                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
442                 append( sb, "", 0 );
443 
444                 append( sb, "defaultTemplateProfile", 2 );
445                 append( sb, "The default template profile to use when accessing templates.", 3 );
446                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
447                 append( sb, "", 0 );
448 
449                 append( sb, "indentation", 2 );
450                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
451                 append( sb, "Expression: ${jomc.indentation}", 3 );
452                 append( sb, "", 0 );
453 
454                 append( sb, "lineSeparator", 2 );
455                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
456                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
457                 append( sb, "", 0 );
458 
459                 append( sb, "locale", 2 );
460                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
461                 append( sb, "", 0 );
462 
463                 append( sb, "model (Default: http://jomc.org/model)", 2 );
464                 append( sb, "The identifier of the model to process.", 3 );
465                 append( sb, "Expression: ${jomc.model}", 3 );
466                 append( sb, "", 0 );
467 
468                 append( sb, "modelContextAttributes", 2 );
469                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
470                 append( sb, "", 0 );
471 
472                 append( sb, "modelContextFactoryClassName", 2 );
473                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
474                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
475                 append( sb, "", 0 );
476 
477                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
478                 append( sb, "Controls model object class path resolution.", 3 );
479                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
480                 append( sb, "", 0 );
481 
482                 append( sb, "modelObjectStylesheet", 2 );
483                 append( sb, "XSLT document to use for transforming model objects.\nThe value of the parameter is a location to search a XSLT document at. First the value is used to search the class path of the plugin. If a class path resource is found, a XSLT document is loaded from that resource. If no class path resource is found, an attempt is made to parse the value to an URL. Succeeding that, an XSLT document is loaded from that URL (since version 1.2). Failing that, the value is interpreted as a file name of a XSLT document to load relative to the base directory of the project. If that file exists, a XSLT document is loaded from that file. If no XSLT document is found at the given location, a build failure is produced.\n\nNote: When upgrading to version 1.2, any project dependencies holding XSLT documents referenced by this parameter need to be added to the plugins\' dependencies.\n\nDeprecated: As of JOMC 1.2, please use the \'modelObjectStylesheetResources\' parameter. This parameter will be removed in version 2.0.\n", 3 );
484                 append( sb, "", 0 );
485 
486                 append( sb, "modelObjectStylesheetResources", 2 );
487                 append( sb, "XSLT documents to use for transforming model objects.\n<modelObjectStylesheetResources>\n\u00a0\u00a0<modelObjectStylesheetResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0XSLT\u00a0document.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0XSLT\u00a0document\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0\u00a0\u00a0<transformationParameterResources>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0</transformationParameterResources>\n\u00a0\u00a0\u00a0\u00a0<transformationParameters>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationParameter>\n\u00a0\u00a0\u00a0\u00a0</transformationParameters>\n\u00a0\u00a0\u00a0\u00a0<transformationOutputProperties>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0</transformationOutputProperties>\n\u00a0\u00a0</modelObjectStylesheetResource>\n</modelObjectStylesheetResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
488                 append( sb, "", 0 );
489 
490                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
491                 append( sb, "Controls processing of models.", 3 );
492                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
493                 append( sb, "", 0 );
494 
495                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
496                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
497                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
498                 append( sb, "", 0 );
499 
500                 append( sb, "modletLocation", 2 );
501                 append( sb, "The location to search for modlets.", 3 );
502                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
503                 append( sb, "", 0 );
504 
505                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
506                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
507                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
508                 append( sb, "", 0 );
509 
510                 append( sb, "modletSchemaSystemId", 2 );
511                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
512                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
513                 append( sb, "", 0 );
514 
515                 append( sb, "moduleLocation", 2 );
516                 append( sb, "The location to search for modules.", 3 );
517                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
518                 append( sb, "", 0 );
519 
520                 append( sb, "moduleName (Default: ${project.name})", 2 );
521                 append( sb, "Name of the module to process.", 3 );
522                 append( sb, "Expression: ${jomc.moduleName}", 3 );
523                 append( sb, "", 0 );
524 
525                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
526                 append( sb, "Output directory of the project.", 3 );
527                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
528                 append( sb, "", 0 );
529 
530                 append( sb, "platformProviderLocation", 2 );
531                 append( sb, "The location to search for platform providers.", 3 );
532                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
533                 append( sb, "", 0 );
534 
535                 append( sb, "providerLocation", 2 );
536                 append( sb, "The location to search for providers.", 3 );
537                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
538                 append( sb, "", 0 );
539 
540                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
541                 append( sb, "Directory holding the reports of the project.", 3 );
542                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
543                 append( sb, "", 0 );
544 
545                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
546                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
547                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
548                 append( sb, "", 0 );
549 
550                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
551                 append( sb, "Controls processing of resource files.", 3 );
552                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
553                 append( sb, "", 0 );
554 
555                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
556                 append( sb, "Directory holding the session related files of the project.", 3 );
557                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
558                 append( sb, "", 0 );
559 
560                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
561                 append( sb, "Directory holding the source files of the project.", 3 );
562                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
563                 append( sb, "", 0 );
564 
565                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
566                 append( sb, "The encoding to use for reading and writing files.", 3 );
567                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
568                 append( sb, "", 0 );
569 
570                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
571                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
572                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
573                 append( sb, "", 0 );
574 
575                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
576                 append( sb, "Controls processing of source code files.", 3 );
577                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
578                 append( sb, "", 0 );
579 
580                 append( sb, "templateEncoding", 2 );
581                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
582                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
583                 append( sb, "", 0 );
584 
585                 append( sb, "templateLocation", 2 );
586                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
587                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
588                 append( sb, "", 0 );
589 
590                 append( sb, "templateParameterResources", 2 );
591                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
592                 append( sb, "", 0 );
593 
594                 append( sb, "templateParameters", 2 );
595                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
596                 append( sb, "", 0 );
597 
598                 append( sb, "templateProfile", 2 );
599                 append( sb, "The template profile to use when accessing templates.", 3 );
600                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
601                 append( sb, "", 0 );
602 
603                 append( sb, "testClassesDirectory", 2 );
604                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
605                 append( sb, "", 0 );
606 
607                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
608                 append( sb, "Name of the test module to process.", 3 );
609                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
610                 append( sb, "", 0 );
611 
612                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
613                 append( sb, "Test output directory of the project.", 3 );
614                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
615                 append( sb, "", 0 );
616 
617                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
618                 append( sb, "Directory holding the test source files of the project.", 3 );
619                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
620                 append( sb, "", 0 );
621 
622                 append( sb, "transformationOutputProperties", 2 );
623                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
624                 append( sb, "", 0 );
625 
626                 append( sb, "transformationParameterResources", 2 );
627                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
628                 append( sb, "", 0 );
629 
630                 append( sb, "transformationParameters", 2 );
631                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
632                 append( sb, "", 0 );
633 
634                 append( sb, "transformerLocation", 2 );
635                 append( sb, "The location to search for transformers.", 3 );
636                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
637                 append( sb, "", 0 );
638 
639                 append( sb, "velocityProperties", 2 );
640                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
641                 append( sb, "", 0 );
642 
643                 append( sb, "velocityPropertyResources", 2 );
644                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
645                 append( sb, "", 0 );
646 
647                 append( sb, "verbose (Default: false)", 2 );
648                 append( sb, "Controls verbosity of the plugin.", 3 );
649                 append( sb, "Expression: ${jomc.verbose}", 3 );
650                 append( sb, "", 0 );
651             }
652         }
653 
654         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
655         {
656             append( sb, "jomc:help", 0 );
657             append( sb, "Display help information on maven-jomc-plugin.\nCall\n\u00a0\u00a0mvn\u00a0jomc:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
658             append( sb, "", 0 );
659             if ( detail )
660             {
661                 append( sb, "Available parameters:", 1 );
662                 append( sb, "", 0 );
663 
664                 append( sb, "detail (Default: false)", 2 );
665                 append( sb, "If true, display all settable properties for each goal.", 3 );
666                 append( sb, "Expression: ${detail}", 3 );
667                 append( sb, "", 0 );
668 
669                 append( sb, "goal", 2 );
670                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
671                 append( sb, "Expression: ${goal}", 3 );
672                 append( sb, "", 0 );
673 
674                 append( sb, "indentSize (Default: 2)", 2 );
675                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
676                 append( sb, "Expression: ${indentSize}", 3 );
677                 append( sb, "", 0 );
678 
679                 append( sb, "lineLength (Default: 80)", 2 );
680                 append( sb, "The maximum length of a display line, should be positive.", 3 );
681                 append( sb, "Expression: ${lineLength}", 3 );
682                 append( sb, "", 0 );
683             }
684         }
685 
686         if ( goal == null || goal.length() <= 0 || "manage-main-sources".equals( goal ) )
687         {
688             append( sb, "jomc:manage-main-sources", 0 );
689             append( sb, "Manages a projects\' main source files.", 1 );
690             append( sb, "", 0 );
691             if ( detail )
692             {
693                 append( sb, "Available parameters:", 1 );
694                 append( sb, "", 0 );
695 
696                 append( sb, "classesDirectory", 2 );
697                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
698                 append( sb, "", 0 );
699 
700                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
701                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
702                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
703                 append( sb, "", 0 );
704 
705                 append( sb, "classProcessingEnabled (Default: true)", 2 );
706                 append( sb, "Controls processing of class files.", 3 );
707                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
708                 append( sb, "", 0 );
709 
710                 append( sb, "defaultTemplateEncoding", 2 );
711                 append( sb, "The encoding to use for reading templates.", 3 );
712                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
713                 append( sb, "", 0 );
714 
715                 append( sb, "defaultTemplateProfile", 2 );
716                 append( sb, "The default template profile to use when accessing templates.", 3 );
717                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
718                 append( sb, "", 0 );
719 
720                 append( sb, "indentation", 2 );
721                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
722                 append( sb, "Expression: ${jomc.indentation}", 3 );
723                 append( sb, "", 0 );
724 
725                 append( sb, "lineSeparator", 2 );
726                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
727                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
728                 append( sb, "", 0 );
729 
730                 append( sb, "locale", 2 );
731                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
732                 append( sb, "", 0 );
733 
734                 append( sb, "manageMainSourcesExecutionStrategy (Default: once-per-session)", 2 );
735                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
736                 append( sb, "Expression: ${jomc.manageMainSourcesExecutionStrategy}", 3 );
737                 append( sb, "", 0 );
738 
739                 append( sb, "model (Default: http://jomc.org/model)", 2 );
740                 append( sb, "The identifier of the model to process.", 3 );
741                 append( sb, "Expression: ${jomc.model}", 3 );
742                 append( sb, "", 0 );
743 
744                 append( sb, "modelContextAttributes", 2 );
745                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
746                 append( sb, "", 0 );
747 
748                 append( sb, "modelContextFactoryClassName", 2 );
749                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
750                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
751                 append( sb, "", 0 );
752 
753                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
754                 append( sb, "Controls model object class path resolution.", 3 );
755                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
756                 append( sb, "", 0 );
757 
758                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
759                 append( sb, "Controls processing of models.", 3 );
760                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
761                 append( sb, "", 0 );
762 
763                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
764                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
765                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
766                 append( sb, "", 0 );
767 
768                 append( sb, "modletLocation", 2 );
769                 append( sb, "The location to search for modlets.", 3 );
770                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
771                 append( sb, "", 0 );
772 
773                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
774                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
775                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
776                 append( sb, "", 0 );
777 
778                 append( sb, "modletSchemaSystemId", 2 );
779                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
780                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
781                 append( sb, "", 0 );
782 
783                 append( sb, "moduleLocation", 2 );
784                 append( sb, "The location to search for modules.", 3 );
785                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
786                 append( sb, "", 0 );
787 
788                 append( sb, "moduleName (Default: ${project.name})", 2 );
789                 append( sb, "Name of the module to process.", 3 );
790                 append( sb, "Expression: ${jomc.moduleName}", 3 );
791                 append( sb, "", 0 );
792 
793                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
794                 append( sb, "Output directory of the project.", 3 );
795                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
796                 append( sb, "", 0 );
797 
798                 append( sb, "platformProviderLocation", 2 );
799                 append( sb, "The location to search for platform providers.", 3 );
800                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
801                 append( sb, "", 0 );
802 
803                 append( sb, "providerLocation", 2 );
804                 append( sb, "The location to search for providers.", 3 );
805                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
806                 append( sb, "", 0 );
807 
808                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
809                 append( sb, "Directory holding the reports of the project.", 3 );
810                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
811                 append( sb, "", 0 );
812 
813                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
814                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
815                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
816                 append( sb, "", 0 );
817 
818                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
819                 append( sb, "Controls processing of resource files.", 3 );
820                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
821                 append( sb, "", 0 );
822 
823                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
824                 append( sb, "Directory holding the session related files of the project.", 3 );
825                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
826                 append( sb, "", 0 );
827 
828                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
829                 append( sb, "Directory holding the source files of the project.", 3 );
830                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
831                 append( sb, "", 0 );
832 
833                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
834                 append( sb, "The encoding to use for reading and writing files.", 3 );
835                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
836                 append( sb, "", 0 );
837 
838                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
839                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
840                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
841                 append( sb, "", 0 );
842 
843                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
844                 append( sb, "Controls processing of source code files.", 3 );
845                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
846                 append( sb, "", 0 );
847 
848                 append( sb, "templateEncoding", 2 );
849                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
850                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
851                 append( sb, "", 0 );
852 
853                 append( sb, "templateLocation", 2 );
854                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
855                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
856                 append( sb, "", 0 );
857 
858                 append( sb, "templateParameterResources", 2 );
859                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
860                 append( sb, "", 0 );
861 
862                 append( sb, "templateParameters", 2 );
863                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
864                 append( sb, "", 0 );
865 
866                 append( sb, "templateProfile", 2 );
867                 append( sb, "The template profile to use when accessing templates.", 3 );
868                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
869                 append( sb, "", 0 );
870 
871                 append( sb, "testClassesDirectory", 2 );
872                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
873                 append( sb, "", 0 );
874 
875                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
876                 append( sb, "Name of the test module to process.", 3 );
877                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
878                 append( sb, "", 0 );
879 
880                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
881                 append( sb, "Test output directory of the project.", 3 );
882                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
883                 append( sb, "", 0 );
884 
885                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
886                 append( sb, "Directory holding the test source files of the project.", 3 );
887                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
888                 append( sb, "", 0 );
889 
890                 append( sb, "transformationOutputProperties", 2 );
891                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
892                 append( sb, "", 0 );
893 
894                 append( sb, "transformationParameterResources", 2 );
895                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
896                 append( sb, "", 0 );
897 
898                 append( sb, "transformationParameters", 2 );
899                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
900                 append( sb, "", 0 );
901 
902                 append( sb, "transformerLocation", 2 );
903                 append( sb, "The location to search for transformers.", 3 );
904                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
905                 append( sb, "", 0 );
906 
907                 append( sb, "velocityProperties", 2 );
908                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
909                 append( sb, "", 0 );
910 
911                 append( sb, "velocityPropertyResources", 2 );
912                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
913                 append( sb, "", 0 );
914 
915                 append( sb, "verbose (Default: false)", 2 );
916                 append( sb, "Controls verbosity of the plugin.", 3 );
917                 append( sb, "Expression: ${jomc.verbose}", 3 );
918                 append( sb, "", 0 );
919             }
920         }
921 
922         if ( goal == null || goal.length() <= 0 || "manage-test-sources".equals( goal ) )
923         {
924             append( sb, "jomc:manage-test-sources", 0 );
925             append( sb, "Manages a projects\' test source files.", 1 );
926             append( sb, "", 0 );
927             if ( detail )
928             {
929                 append( sb, "Available parameters:", 1 );
930                 append( sb, "", 0 );
931 
932                 append( sb, "classesDirectory", 2 );
933                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
934                 append( sb, "", 0 );
935 
936                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
937                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
938                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
939                 append( sb, "", 0 );
940 
941                 append( sb, "classProcessingEnabled (Default: true)", 2 );
942                 append( sb, "Controls processing of class files.", 3 );
943                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
944                 append( sb, "", 0 );
945 
946                 append( sb, "defaultTemplateEncoding", 2 );
947                 append( sb, "The encoding to use for reading templates.", 3 );
948                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
949                 append( sb, "", 0 );
950 
951                 append( sb, "defaultTemplateProfile", 2 );
952                 append( sb, "The default template profile to use when accessing templates.", 3 );
953                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
954                 append( sb, "", 0 );
955 
956                 append( sb, "indentation", 2 );
957                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
958                 append( sb, "Expression: ${jomc.indentation}", 3 );
959                 append( sb, "", 0 );
960 
961                 append( sb, "lineSeparator", 2 );
962                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
963                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
964                 append( sb, "", 0 );
965 
966                 append( sb, "locale", 2 );
967                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
968                 append( sb, "", 0 );
969 
970                 append( sb, "manageTestSourcesExecutionStrategy (Default: once-per-session)", 2 );
971                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
972                 append( sb, "Expression: ${jomc.manageTestSourcesExecutionStrategy}", 3 );
973                 append( sb, "", 0 );
974 
975                 append( sb, "model (Default: http://jomc.org/model)", 2 );
976                 append( sb, "The identifier of the model to process.", 3 );
977                 append( sb, "Expression: ${jomc.model}", 3 );
978                 append( sb, "", 0 );
979 
980                 append( sb, "modelContextAttributes", 2 );
981                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
982                 append( sb, "", 0 );
983 
984                 append( sb, "modelContextFactoryClassName", 2 );
985                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
986                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
987                 append( sb, "", 0 );
988 
989                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
990                 append( sb, "Controls model object class path resolution.", 3 );
991                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
992                 append( sb, "", 0 );
993 
994                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
995                 append( sb, "Controls processing of models.", 3 );
996                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
997                 append( sb, "", 0 );
998 
999                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1000                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1001                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1002                 append( sb, "", 0 );
1003 
1004                 append( sb, "modletLocation", 2 );
1005                 append( sb, "The location to search for modlets.", 3 );
1006                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1007                 append( sb, "", 0 );
1008 
1009                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1010                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1011                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1012                 append( sb, "", 0 );
1013 
1014                 append( sb, "modletSchemaSystemId", 2 );
1015                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1016                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1017                 append( sb, "", 0 );
1018 
1019                 append( sb, "moduleLocation", 2 );
1020                 append( sb, "The location to search for modules.", 3 );
1021                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1022                 append( sb, "", 0 );
1023 
1024                 append( sb, "moduleName (Default: ${project.name})", 2 );
1025                 append( sb, "Name of the module to process.", 3 );
1026                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1027                 append( sb, "", 0 );
1028 
1029                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1030                 append( sb, "Output directory of the project.", 3 );
1031                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1032                 append( sb, "", 0 );
1033 
1034                 append( sb, "platformProviderLocation", 2 );
1035                 append( sb, "The location to search for platform providers.", 3 );
1036                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1037                 append( sb, "", 0 );
1038 
1039                 append( sb, "providerLocation", 2 );
1040                 append( sb, "The location to search for providers.", 3 );
1041                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1042                 append( sb, "", 0 );
1043 
1044                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1045                 append( sb, "Directory holding the reports of the project.", 3 );
1046                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1047                 append( sb, "", 0 );
1048 
1049                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1050                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1051                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1052                 append( sb, "", 0 );
1053 
1054                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1055                 append( sb, "Controls processing of resource files.", 3 );
1056                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1057                 append( sb, "", 0 );
1058 
1059                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1060                 append( sb, "Directory holding the session related files of the project.", 3 );
1061                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1062                 append( sb, "", 0 );
1063 
1064                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1065                 append( sb, "Directory holding the source files of the project.", 3 );
1066                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1067                 append( sb, "", 0 );
1068 
1069                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1070                 append( sb, "The encoding to use for reading and writing files.", 3 );
1071                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1072                 append( sb, "", 0 );
1073 
1074                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1075                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1076                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1077                 append( sb, "", 0 );
1078 
1079                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1080                 append( sb, "Controls processing of source code files.", 3 );
1081                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1082                 append( sb, "", 0 );
1083 
1084                 append( sb, "templateEncoding", 2 );
1085                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1086                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1087                 append( sb, "", 0 );
1088 
1089                 append( sb, "templateLocation", 2 );
1090                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
1091                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1092                 append( sb, "", 0 );
1093 
1094                 append( sb, "templateParameterResources", 2 );
1095                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1096                 append( sb, "", 0 );
1097 
1098                 append( sb, "templateParameters", 2 );
1099                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
1100                 append( sb, "", 0 );
1101 
1102                 append( sb, "templateProfile", 2 );
1103                 append( sb, "The template profile to use when accessing templates.", 3 );
1104                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1105                 append( sb, "", 0 );
1106 
1107                 append( sb, "testClassesDirectory", 2 );
1108                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1109                 append( sb, "", 0 );
1110 
1111                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1112                 append( sb, "Name of the test module to process.", 3 );
1113                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1114                 append( sb, "", 0 );
1115 
1116                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1117                 append( sb, "Test output directory of the project.", 3 );
1118                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1119                 append( sb, "", 0 );
1120 
1121                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1122                 append( sb, "Directory holding the test source files of the project.", 3 );
1123                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1124                 append( sb, "", 0 );
1125 
1126                 append( sb, "transformationOutputProperties", 2 );
1127                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
1128                 append( sb, "", 0 );
1129 
1130                 append( sb, "transformationParameterResources", 2 );
1131                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1132                 append( sb, "", 0 );
1133 
1134                 append( sb, "transformationParameters", 2 );
1135                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
1136                 append( sb, "", 0 );
1137 
1138                 append( sb, "transformerLocation", 2 );
1139                 append( sb, "The location to search for transformers.", 3 );
1140                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1141                 append( sb, "", 0 );
1142 
1143                 append( sb, "velocityProperties", 2 );
1144                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
1145                 append( sb, "", 0 );
1146 
1147                 append( sb, "velocityPropertyResources", 2 );
1148                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1149                 append( sb, "", 0 );
1150 
1151                 append( sb, "verbose (Default: false)", 2 );
1152                 append( sb, "Controls verbosity of the plugin.", 3 );
1153                 append( sb, "Expression: ${jomc.verbose}", 3 );
1154                 append( sb, "", 0 );
1155             }
1156         }
1157 
1158         if ( goal == null || goal.length() <= 0 || "show-main-instance".equals( goal ) )
1159         {
1160             append( sb, "jomc:show-main-instance", 0 );
1161             append( sb, "Displays a project\'s main instance.", 1 );
1162             append( sb, "", 0 );
1163             if ( detail )
1164             {
1165                 append( sb, "Available parameters:", 1 );
1166                 append( sb, "", 0 );
1167 
1168                 append( sb, "classesDirectory", 2 );
1169                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1170                 append( sb, "", 0 );
1171 
1172                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1173                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1174                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1175                 append( sb, "", 0 );
1176 
1177                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1178                 append( sb, "Controls processing of class files.", 3 );
1179                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1180                 append( sb, "", 0 );
1181 
1182                 append( sb, "defaultTemplateEncoding", 2 );
1183                 append( sb, "The encoding to use for reading templates.", 3 );
1184                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
1185                 append( sb, "", 0 );
1186 
1187                 append( sb, "defaultTemplateProfile", 2 );
1188                 append( sb, "The default template profile to use when accessing templates.", 3 );
1189                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1190                 append( sb, "", 0 );
1191 
1192                 append( sb, "document", 2 );
1193                 append( sb, "File to write the model to.", 3 );
1194                 append( sb, "Expression: ${jomc.document}", 3 );
1195                 append( sb, "", 0 );
1196 
1197                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1198                 append( sb, "Encoding of the document to write.", 3 );
1199                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1200                 append( sb, "", 0 );
1201 
1202                 append( sb, "identifier", 2 );
1203                 append( sb, "Identifier of the instance to show.", 3 );
1204                 append( sb, "Required: Yes", 3 );
1205                 append( sb, "Expression: ${jomc.identifier}", 3 );
1206                 append( sb, "", 0 );
1207 
1208                 append( sb, "indentation", 2 );
1209                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1210                 append( sb, "Expression: ${jomc.indentation}", 3 );
1211                 append( sb, "", 0 );
1212 
1213                 append( sb, "lineSeparator", 2 );
1214                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1215                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1216                 append( sb, "", 0 );
1217 
1218                 append( sb, "locale", 2 );
1219                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
1220                 append( sb, "", 0 );
1221 
1222                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1223                 append( sb, "The identifier of the model to process.", 3 );
1224                 append( sb, "Expression: ${jomc.model}", 3 );
1225                 append( sb, "", 0 );
1226 
1227                 append( sb, "modelContextAttributes", 2 );
1228                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
1229                 append( sb, "", 0 );
1230 
1231                 append( sb, "modelContextFactoryClassName", 2 );
1232                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1233                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1234                 append( sb, "", 0 );
1235 
1236                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1237                 append( sb, "Controls model object class path resolution.", 3 );
1238                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1239                 append( sb, "", 0 );
1240 
1241                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1242                 append( sb, "Controls processing of models.", 3 );
1243                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1244                 append( sb, "", 0 );
1245 
1246                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1247                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1248                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1249                 append( sb, "", 0 );
1250 
1251                 append( sb, "modletLocation", 2 );
1252                 append( sb, "The location to search for modlets.", 3 );
1253                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1254                 append( sb, "", 0 );
1255 
1256                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1257                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1258                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1259                 append( sb, "", 0 );
1260 
1261                 append( sb, "modletSchemaSystemId", 2 );
1262                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1263                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1264                 append( sb, "", 0 );
1265 
1266                 append( sb, "moduleLocation", 2 );
1267                 append( sb, "The location to search for modules.", 3 );
1268                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1269                 append( sb, "", 0 );
1270 
1271                 append( sb, "moduleName (Default: ${project.name})", 2 );
1272                 append( sb, "Name of the module to process.", 3 );
1273                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1274                 append( sb, "", 0 );
1275 
1276                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1277                 append( sb, "Output directory of the project.", 3 );
1278                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1279                 append( sb, "", 0 );
1280 
1281                 append( sb, "platformProviderLocation", 2 );
1282                 append( sb, "The location to search for platform providers.", 3 );
1283                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1284                 append( sb, "", 0 );
1285 
1286                 append( sb, "providerLocation", 2 );
1287                 append( sb, "The location to search for providers.", 3 );
1288                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1289                 append( sb, "", 0 );
1290 
1291                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1292                 append( sb, "Directory holding the reports of the project.", 3 );
1293                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1294                 append( sb, "", 0 );
1295 
1296                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1297                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1298                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1299                 append( sb, "", 0 );
1300 
1301                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1302                 append( sb, "Controls processing of resource files.", 3 );
1303                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1304                 append( sb, "", 0 );
1305 
1306                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1307                 append( sb, "Directory holding the session related files of the project.", 3 );
1308                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1309                 append( sb, "", 0 );
1310 
1311                 append( sb, "showMainInstanceExecutionStrategy (Default: once-per-session)", 2 );
1312                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1313                 append( sb, "Expression: ${jomc.showMainInstanceExecutionStrategy}", 3 );
1314                 append( sb, "", 0 );
1315 
1316                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1317                 append( sb, "Directory holding the source files of the project.", 3 );
1318                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1319                 append( sb, "", 0 );
1320 
1321                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1322                 append( sb, "The encoding to use for reading and writing files.", 3 );
1323                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1324                 append( sb, "", 0 );
1325 
1326                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1327                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1328                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1329                 append( sb, "", 0 );
1330 
1331                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1332                 append( sb, "Controls processing of source code files.", 3 );
1333                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1334                 append( sb, "", 0 );
1335 
1336                 append( sb, "templateEncoding", 2 );
1337                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1338                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1339                 append( sb, "", 0 );
1340 
1341                 append( sb, "templateLocation", 2 );
1342                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
1343                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1344                 append( sb, "", 0 );
1345 
1346                 append( sb, "templateParameterResources", 2 );
1347                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1348                 append( sb, "", 0 );
1349 
1350                 append( sb, "templateParameters", 2 );
1351                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
1352                 append( sb, "", 0 );
1353 
1354                 append( sb, "templateProfile", 2 );
1355                 append( sb, "The template profile to use when accessing templates.", 3 );
1356                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1357                 append( sb, "", 0 );
1358 
1359                 append( sb, "testClassesDirectory", 2 );
1360                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1361                 append( sb, "", 0 );
1362 
1363                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1364                 append( sb, "Name of the test module to process.", 3 );
1365                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1366                 append( sb, "", 0 );
1367 
1368                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1369                 append( sb, "Test output directory of the project.", 3 );
1370                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1371                 append( sb, "", 0 );
1372 
1373                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1374                 append( sb, "Directory holding the test source files of the project.", 3 );
1375                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1376                 append( sb, "", 0 );
1377 
1378                 append( sb, "transformationOutputProperties", 2 );
1379                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
1380                 append( sb, "", 0 );
1381 
1382                 append( sb, "transformationParameterResources", 2 );
1383                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1384                 append( sb, "", 0 );
1385 
1386                 append( sb, "transformationParameters", 2 );
1387                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
1388                 append( sb, "", 0 );
1389 
1390                 append( sb, "transformerLocation", 2 );
1391                 append( sb, "The location to search for transformers.", 3 );
1392                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1393                 append( sb, "", 0 );
1394 
1395                 append( sb, "velocityProperties", 2 );
1396                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
1397                 append( sb, "", 0 );
1398 
1399                 append( sb, "velocityPropertyResources", 2 );
1400                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1401                 append( sb, "", 0 );
1402 
1403                 append( sb, "verbose (Default: false)", 2 );
1404                 append( sb, "Controls verbosity of the plugin.", 3 );
1405                 append( sb, "Expression: ${jomc.verbose}", 3 );
1406                 append( sb, "", 0 );
1407             }
1408         }
1409 
1410         if ( goal == null || goal.length() <= 0 || "show-main-model".equals( goal ) )
1411         {
1412             append( sb, "jomc:show-main-model", 0 );
1413             append( sb, "Displays a project\'s main model.", 1 );
1414             append( sb, "", 0 );
1415             if ( detail )
1416             {
1417                 append( sb, "Available parameters:", 1 );
1418                 append( sb, "", 0 );
1419 
1420                 append( sb, "classesDirectory", 2 );
1421                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1422                 append( sb, "", 0 );
1423 
1424                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1425                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1426                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1427                 append( sb, "", 0 );
1428 
1429                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1430                 append( sb, "Controls processing of class files.", 3 );
1431                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1432                 append( sb, "", 0 );
1433 
1434                 append( sb, "defaultTemplateEncoding", 2 );
1435                 append( sb, "The encoding to use for reading templates.", 3 );
1436                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
1437                 append( sb, "", 0 );
1438 
1439                 append( sb, "defaultTemplateProfile", 2 );
1440                 append( sb, "The default template profile to use when accessing templates.", 3 );
1441                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1442                 append( sb, "", 0 );
1443 
1444                 append( sb, "document", 2 );
1445                 append( sb, "File to write the model to.", 3 );
1446                 append( sb, "Expression: ${jomc.document}", 3 );
1447                 append( sb, "", 0 );
1448 
1449                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1450                 append( sb, "Encoding of the document to write.", 3 );
1451                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1452                 append( sb, "", 0 );
1453 
1454                 append( sb, "indentation", 2 );
1455                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1456                 append( sb, "Expression: ${jomc.indentation}", 3 );
1457                 append( sb, "", 0 );
1458 
1459                 append( sb, "lineSeparator", 2 );
1460                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1461                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1462                 append( sb, "", 0 );
1463 
1464                 append( sb, "locale", 2 );
1465                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
1466                 append( sb, "", 0 );
1467 
1468                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1469                 append( sb, "The identifier of the model to process.", 3 );
1470                 append( sb, "Expression: ${jomc.model}", 3 );
1471                 append( sb, "", 0 );
1472 
1473                 append( sb, "modelContextAttributes", 2 );
1474                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
1475                 append( sb, "", 0 );
1476 
1477                 append( sb, "modelContextFactoryClassName", 2 );
1478                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1479                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1480                 append( sb, "", 0 );
1481 
1482                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1483                 append( sb, "Controls model object class path resolution.", 3 );
1484                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1485                 append( sb, "", 0 );
1486 
1487                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1488                 append( sb, "Controls processing of models.", 3 );
1489                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1490                 append( sb, "", 0 );
1491 
1492                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1493                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1494                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1495                 append( sb, "", 0 );
1496 
1497                 append( sb, "modletLocation", 2 );
1498                 append( sb, "The location to search for modlets.", 3 );
1499                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1500                 append( sb, "", 0 );
1501 
1502                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1503                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1504                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1505                 append( sb, "", 0 );
1506 
1507                 append( sb, "modletSchemaSystemId", 2 );
1508                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1509                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1510                 append( sb, "", 0 );
1511 
1512                 append( sb, "moduleLocation", 2 );
1513                 append( sb, "The location to search for modules.", 3 );
1514                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1515                 append( sb, "", 0 );
1516 
1517                 append( sb, "moduleName (Default: ${project.name})", 2 );
1518                 append( sb, "Name of the module to process.", 3 );
1519                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1520                 append( sb, "", 0 );
1521 
1522                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1523                 append( sb, "Output directory of the project.", 3 );
1524                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1525                 append( sb, "", 0 );
1526 
1527                 append( sb, "platformProviderLocation", 2 );
1528                 append( sb, "The location to search for platform providers.", 3 );
1529                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1530                 append( sb, "", 0 );
1531 
1532                 append( sb, "providerLocation", 2 );
1533                 append( sb, "The location to search for providers.", 3 );
1534                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1535                 append( sb, "", 0 );
1536 
1537                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1538                 append( sb, "Directory holding the reports of the project.", 3 );
1539                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1540                 append( sb, "", 0 );
1541 
1542                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1543                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1544                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1545                 append( sb, "", 0 );
1546 
1547                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1548                 append( sb, "Controls processing of resource files.", 3 );
1549                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1550                 append( sb, "", 0 );
1551 
1552                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1553                 append( sb, "Directory holding the session related files of the project.", 3 );
1554                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1555                 append( sb, "", 0 );
1556 
1557                 append( sb, "showMainModelExecutionStrategy (Default: once-per-session)", 2 );
1558                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1559                 append( sb, "Expression: ${jomc.showMainModelExecutionStrategy}", 3 );
1560                 append( sb, "", 0 );
1561 
1562                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1563                 append( sb, "Directory holding the source files of the project.", 3 );
1564                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1565                 append( sb, "", 0 );
1566 
1567                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1568                 append( sb, "The encoding to use for reading and writing files.", 3 );
1569                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1570                 append( sb, "", 0 );
1571 
1572                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1573                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1574                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1575                 append( sb, "", 0 );
1576 
1577                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1578                 append( sb, "Controls processing of source code files.", 3 );
1579                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1580                 append( sb, "", 0 );
1581 
1582                 append( sb, "templateEncoding", 2 );
1583                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1584                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1585                 append( sb, "", 0 );
1586 
1587                 append( sb, "templateLocation", 2 );
1588                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
1589                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1590                 append( sb, "", 0 );
1591 
1592                 append( sb, "templateParameterResources", 2 );
1593                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1594                 append( sb, "", 0 );
1595 
1596                 append( sb, "templateParameters", 2 );
1597                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
1598                 append( sb, "", 0 );
1599 
1600                 append( sb, "templateProfile", 2 );
1601                 append( sb, "The template profile to use when accessing templates.", 3 );
1602                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1603                 append( sb, "", 0 );
1604 
1605                 append( sb, "testClassesDirectory", 2 );
1606                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1607                 append( sb, "", 0 );
1608 
1609                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1610                 append( sb, "Name of the test module to process.", 3 );
1611                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1612                 append( sb, "", 0 );
1613 
1614                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1615                 append( sb, "Test output directory of the project.", 3 );
1616                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1617                 append( sb, "", 0 );
1618 
1619                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1620                 append( sb, "Directory holding the test source files of the project.", 3 );
1621                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1622                 append( sb, "", 0 );
1623 
1624                 append( sb, "transformationOutputProperties", 2 );
1625                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
1626                 append( sb, "", 0 );
1627 
1628                 append( sb, "transformationParameterResources", 2 );
1629                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1630                 append( sb, "", 0 );
1631 
1632                 append( sb, "transformationParameters", 2 );
1633                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
1634                 append( sb, "", 0 );
1635 
1636                 append( sb, "transformerLocation", 2 );
1637                 append( sb, "The location to search for transformers.", 3 );
1638                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1639                 append( sb, "", 0 );
1640 
1641                 append( sb, "velocityProperties", 2 );
1642                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
1643                 append( sb, "", 0 );
1644 
1645                 append( sb, "velocityPropertyResources", 2 );
1646                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1647                 append( sb, "", 0 );
1648 
1649                 append( sb, "verbose (Default: false)", 2 );
1650                 append( sb, "Controls verbosity of the plugin.", 3 );
1651                 append( sb, "Expression: ${jomc.verbose}", 3 );
1652                 append( sb, "", 0 );
1653             }
1654         }
1655 
1656         if ( goal == null || goal.length() <= 0 || "show-main-specification".equals( goal ) )
1657         {
1658             append( sb, "jomc:show-main-specification", 0 );
1659             append( sb, "Displays a project\'s main specification.", 1 );
1660             append( sb, "", 0 );
1661             if ( detail )
1662             {
1663                 append( sb, "Available parameters:", 1 );
1664                 append( sb, "", 0 );
1665 
1666                 append( sb, "classesDirectory", 2 );
1667                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1668                 append( sb, "", 0 );
1669 
1670                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1671                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1672                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1673                 append( sb, "", 0 );
1674 
1675                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1676                 append( sb, "Controls processing of class files.", 3 );
1677                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1678                 append( sb, "", 0 );
1679 
1680                 append( sb, "defaultTemplateEncoding", 2 );
1681                 append( sb, "The encoding to use for reading templates.", 3 );
1682                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
1683                 append( sb, "", 0 );
1684 
1685                 append( sb, "defaultTemplateProfile", 2 );
1686                 append( sb, "The default template profile to use when accessing templates.", 3 );
1687                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1688                 append( sb, "", 0 );
1689 
1690                 append( sb, "document", 2 );
1691                 append( sb, "File to write the model to.", 3 );
1692                 append( sb, "Expression: ${jomc.document}", 3 );
1693                 append( sb, "", 0 );
1694 
1695                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1696                 append( sb, "Encoding of the document to write.", 3 );
1697                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1698                 append( sb, "", 0 );
1699 
1700                 append( sb, "identifier", 2 );
1701                 append( sb, "Identifier of the specification to show.", 3 );
1702                 append( sb, "Required: Yes", 3 );
1703                 append( sb, "Expression: ${jomc.identifier}", 3 );
1704                 append( sb, "", 0 );
1705 
1706                 append( sb, "indentation", 2 );
1707                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1708                 append( sb, "Expression: ${jomc.indentation}", 3 );
1709                 append( sb, "", 0 );
1710 
1711                 append( sb, "lineSeparator", 2 );
1712                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1713                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1714                 append( sb, "", 0 );
1715 
1716                 append( sb, "locale", 2 );
1717                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
1718                 append( sb, "", 0 );
1719 
1720                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1721                 append( sb, "The identifier of the model to process.", 3 );
1722                 append( sb, "Expression: ${jomc.model}", 3 );
1723                 append( sb, "", 0 );
1724 
1725                 append( sb, "modelContextAttributes", 2 );
1726                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
1727                 append( sb, "", 0 );
1728 
1729                 append( sb, "modelContextFactoryClassName", 2 );
1730                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1731                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1732                 append( sb, "", 0 );
1733 
1734                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1735                 append( sb, "Controls model object class path resolution.", 3 );
1736                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1737                 append( sb, "", 0 );
1738 
1739                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1740                 append( sb, "Controls processing of models.", 3 );
1741                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1742                 append( sb, "", 0 );
1743 
1744                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1745                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1746                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1747                 append( sb, "", 0 );
1748 
1749                 append( sb, "modletLocation", 2 );
1750                 append( sb, "The location to search for modlets.", 3 );
1751                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1752                 append( sb, "", 0 );
1753 
1754                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1755                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1756                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1757                 append( sb, "", 0 );
1758 
1759                 append( sb, "modletSchemaSystemId", 2 );
1760                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1761                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1762                 append( sb, "", 0 );
1763 
1764                 append( sb, "moduleLocation", 2 );
1765                 append( sb, "The location to search for modules.", 3 );
1766                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1767                 append( sb, "", 0 );
1768 
1769                 append( sb, "moduleName (Default: ${project.name})", 2 );
1770                 append( sb, "Name of the module to process.", 3 );
1771                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1772                 append( sb, "", 0 );
1773 
1774                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1775                 append( sb, "Output directory of the project.", 3 );
1776                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1777                 append( sb, "", 0 );
1778 
1779                 append( sb, "platformProviderLocation", 2 );
1780                 append( sb, "The location to search for platform providers.", 3 );
1781                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1782                 append( sb, "", 0 );
1783 
1784                 append( sb, "providerLocation", 2 );
1785                 append( sb, "The location to search for providers.", 3 );
1786                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1787                 append( sb, "", 0 );
1788 
1789                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1790                 append( sb, "Directory holding the reports of the project.", 3 );
1791                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1792                 append( sb, "", 0 );
1793 
1794                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1795                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1796                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1797                 append( sb, "", 0 );
1798 
1799                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1800                 append( sb, "Controls processing of resource files.", 3 );
1801                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1802                 append( sb, "", 0 );
1803 
1804                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1805                 append( sb, "Directory holding the session related files of the project.", 3 );
1806                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1807                 append( sb, "", 0 );
1808 
1809                 append( sb, "showMainSpecificationExecutionStrategy (Default: once-per-session)", 2 );
1810                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1811                 append( sb, "Expression: ${jomc.showMainSpecificationExecutionStrategy}", 3 );
1812                 append( sb, "", 0 );
1813 
1814                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1815                 append( sb, "Directory holding the source files of the project.", 3 );
1816                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1817                 append( sb, "", 0 );
1818 
1819                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1820                 append( sb, "The encoding to use for reading and writing files.", 3 );
1821                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1822                 append( sb, "", 0 );
1823 
1824                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1825                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1826                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1827                 append( sb, "", 0 );
1828 
1829                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1830                 append( sb, "Controls processing of source code files.", 3 );
1831                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1832                 append( sb, "", 0 );
1833 
1834                 append( sb, "templateEncoding", 2 );
1835                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1836                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1837                 append( sb, "", 0 );
1838 
1839                 append( sb, "templateLocation", 2 );
1840                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
1841                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1842                 append( sb, "", 0 );
1843 
1844                 append( sb, "templateParameterResources", 2 );
1845                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1846                 append( sb, "", 0 );
1847 
1848                 append( sb, "templateParameters", 2 );
1849                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
1850                 append( sb, "", 0 );
1851 
1852                 append( sb, "templateProfile", 2 );
1853                 append( sb, "The template profile to use when accessing templates.", 3 );
1854                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1855                 append( sb, "", 0 );
1856 
1857                 append( sb, "testClassesDirectory", 2 );
1858                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1859                 append( sb, "", 0 );
1860 
1861                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1862                 append( sb, "Name of the test module to process.", 3 );
1863                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1864                 append( sb, "", 0 );
1865 
1866                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1867                 append( sb, "Test output directory of the project.", 3 );
1868                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1869                 append( sb, "", 0 );
1870 
1871                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1872                 append( sb, "Directory holding the test source files of the project.", 3 );
1873                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1874                 append( sb, "", 0 );
1875 
1876                 append( sb, "transformationOutputProperties", 2 );
1877                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
1878                 append( sb, "", 0 );
1879 
1880                 append( sb, "transformationParameterResources", 2 );
1881                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1882                 append( sb, "", 0 );
1883 
1884                 append( sb, "transformationParameters", 2 );
1885                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
1886                 append( sb, "", 0 );
1887 
1888                 append( sb, "transformerLocation", 2 );
1889                 append( sb, "The location to search for transformers.", 3 );
1890                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1891                 append( sb, "", 0 );
1892 
1893                 append( sb, "velocityProperties", 2 );
1894                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
1895                 append( sb, "", 0 );
1896 
1897                 append( sb, "velocityPropertyResources", 2 );
1898                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
1899                 append( sb, "", 0 );
1900 
1901                 append( sb, "verbose (Default: false)", 2 );
1902                 append( sb, "Controls verbosity of the plugin.", 3 );
1903                 append( sb, "Expression: ${jomc.verbose}", 3 );
1904                 append( sb, "", 0 );
1905             }
1906         }
1907 
1908         if ( goal == null || goal.length() <= 0 || "show-test-instance".equals( goal ) )
1909         {
1910             append( sb, "jomc:show-test-instance", 0 );
1911             append( sb, "Displays a project\'s test instance.", 1 );
1912             append( sb, "", 0 );
1913             if ( detail )
1914             {
1915                 append( sb, "Available parameters:", 1 );
1916                 append( sb, "", 0 );
1917 
1918                 append( sb, "classesDirectory", 2 );
1919                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
1920                 append( sb, "", 0 );
1921 
1922                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1923                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1924                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1925                 append( sb, "", 0 );
1926 
1927                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1928                 append( sb, "Controls processing of class files.", 3 );
1929                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1930                 append( sb, "", 0 );
1931 
1932                 append( sb, "defaultTemplateEncoding", 2 );
1933                 append( sb, "The encoding to use for reading templates.", 3 );
1934                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
1935                 append( sb, "", 0 );
1936 
1937                 append( sb, "defaultTemplateProfile", 2 );
1938                 append( sb, "The default template profile to use when accessing templates.", 3 );
1939                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1940                 append( sb, "", 0 );
1941 
1942                 append( sb, "document", 2 );
1943                 append( sb, "File to write the model to.", 3 );
1944                 append( sb, "Expression: ${jomc.document}", 3 );
1945                 append( sb, "", 0 );
1946 
1947                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1948                 append( sb, "Encoding of the document to write.", 3 );
1949                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1950                 append( sb, "", 0 );
1951 
1952                 append( sb, "identifier", 2 );
1953                 append( sb, "Identifier of the instance to show.", 3 );
1954                 append( sb, "Required: Yes", 3 );
1955                 append( sb, "Expression: ${jomc.identifier}", 3 );
1956                 append( sb, "", 0 );
1957 
1958                 append( sb, "indentation", 2 );
1959                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1960                 append( sb, "Expression: ${jomc.indentation}", 3 );
1961                 append( sb, "", 0 );
1962 
1963                 append( sb, "lineSeparator", 2 );
1964                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1965                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1966                 append( sb, "", 0 );
1967 
1968                 append( sb, "locale", 2 );
1969                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
1970                 append( sb, "", 0 );
1971 
1972                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1973                 append( sb, "The identifier of the model to process.", 3 );
1974                 append( sb, "Expression: ${jomc.model}", 3 );
1975                 append( sb, "", 0 );
1976 
1977                 append( sb, "modelContextAttributes", 2 );
1978                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
1979                 append( sb, "", 0 );
1980 
1981                 append( sb, "modelContextFactoryClassName", 2 );
1982                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1983                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1984                 append( sb, "", 0 );
1985 
1986                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1987                 append( sb, "Controls model object class path resolution.", 3 );
1988                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1989                 append( sb, "", 0 );
1990 
1991                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1992                 append( sb, "Controls processing of models.", 3 );
1993                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1994                 append( sb, "", 0 );
1995 
1996                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1997                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1998                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1999                 append( sb, "", 0 );
2000 
2001                 append( sb, "modletLocation", 2 );
2002                 append( sb, "The location to search for modlets.", 3 );
2003                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2004                 append( sb, "", 0 );
2005 
2006                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2007                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2008                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2009                 append( sb, "", 0 );
2010 
2011                 append( sb, "modletSchemaSystemId", 2 );
2012                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2013                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2014                 append( sb, "", 0 );
2015 
2016                 append( sb, "moduleLocation", 2 );
2017                 append( sb, "The location to search for modules.", 3 );
2018                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2019                 append( sb, "", 0 );
2020 
2021                 append( sb, "moduleName (Default: ${project.name})", 2 );
2022                 append( sb, "Name of the module to process.", 3 );
2023                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2024                 append( sb, "", 0 );
2025 
2026                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2027                 append( sb, "Output directory of the project.", 3 );
2028                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2029                 append( sb, "", 0 );
2030 
2031                 append( sb, "platformProviderLocation", 2 );
2032                 append( sb, "The location to search for platform providers.", 3 );
2033                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2034                 append( sb, "", 0 );
2035 
2036                 append( sb, "providerLocation", 2 );
2037                 append( sb, "The location to search for providers.", 3 );
2038                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2039                 append( sb, "", 0 );
2040 
2041                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2042                 append( sb, "Directory holding the reports of the project.", 3 );
2043                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2044                 append( sb, "", 0 );
2045 
2046                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2047                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2048                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2049                 append( sb, "", 0 );
2050 
2051                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2052                 append( sb, "Controls processing of resource files.", 3 );
2053                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2054                 append( sb, "", 0 );
2055 
2056                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2057                 append( sb, "Directory holding the session related files of the project.", 3 );
2058                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2059                 append( sb, "", 0 );
2060 
2061                 append( sb, "showTestInstanceExecutionStrategy (Default: once-per-session)", 2 );
2062                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2063                 append( sb, "Expression: ${jomc.showTestInstanceExecutionStrategy}", 3 );
2064                 append( sb, "", 0 );
2065 
2066                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2067                 append( sb, "Directory holding the source files of the project.", 3 );
2068                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2069                 append( sb, "", 0 );
2070 
2071                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2072                 append( sb, "The encoding to use for reading and writing files.", 3 );
2073                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2074                 append( sb, "", 0 );
2075 
2076                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2077                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2078                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2079                 append( sb, "", 0 );
2080 
2081                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2082                 append( sb, "Controls processing of source code files.", 3 );
2083                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2084                 append( sb, "", 0 );
2085 
2086                 append( sb, "templateEncoding", 2 );
2087                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2088                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2089                 append( sb, "", 0 );
2090 
2091                 append( sb, "templateLocation", 2 );
2092                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
2093                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2094                 append( sb, "", 0 );
2095 
2096                 append( sb, "templateParameterResources", 2 );
2097                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2098                 append( sb, "", 0 );
2099 
2100                 append( sb, "templateParameters", 2 );
2101                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
2102                 append( sb, "", 0 );
2103 
2104                 append( sb, "templateProfile", 2 );
2105                 append( sb, "The template profile to use when accessing templates.", 3 );
2106                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2107                 append( sb, "", 0 );
2108 
2109                 append( sb, "testClassesDirectory", 2 );
2110                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2111                 append( sb, "", 0 );
2112 
2113                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2114                 append( sb, "Name of the test module to process.", 3 );
2115                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2116                 append( sb, "", 0 );
2117 
2118                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2119                 append( sb, "Test output directory of the project.", 3 );
2120                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2121                 append( sb, "", 0 );
2122 
2123                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2124                 append( sb, "Directory holding the test source files of the project.", 3 );
2125                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2126                 append( sb, "", 0 );
2127 
2128                 append( sb, "transformationOutputProperties", 2 );
2129                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
2130                 append( sb, "", 0 );
2131 
2132                 append( sb, "transformationParameterResources", 2 );
2133                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2134                 append( sb, "", 0 );
2135 
2136                 append( sb, "transformationParameters", 2 );
2137                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
2138                 append( sb, "", 0 );
2139 
2140                 append( sb, "transformerLocation", 2 );
2141                 append( sb, "The location to search for transformers.", 3 );
2142                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2143                 append( sb, "", 0 );
2144 
2145                 append( sb, "velocityProperties", 2 );
2146                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
2147                 append( sb, "", 0 );
2148 
2149                 append( sb, "velocityPropertyResources", 2 );
2150                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2151                 append( sb, "", 0 );
2152 
2153                 append( sb, "verbose (Default: false)", 2 );
2154                 append( sb, "Controls verbosity of the plugin.", 3 );
2155                 append( sb, "Expression: ${jomc.verbose}", 3 );
2156                 append( sb, "", 0 );
2157             }
2158         }
2159 
2160         if ( goal == null || goal.length() <= 0 || "show-test-model".equals( goal ) )
2161         {
2162             append( sb, "jomc:show-test-model", 0 );
2163             append( sb, "Displays a project\'s test model.", 1 );
2164             append( sb, "", 0 );
2165             if ( detail )
2166             {
2167                 append( sb, "Available parameters:", 1 );
2168                 append( sb, "", 0 );
2169 
2170                 append( sb, "classesDirectory", 2 );
2171                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2172                 append( sb, "", 0 );
2173 
2174                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2175                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2176                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2177                 append( sb, "", 0 );
2178 
2179                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2180                 append( sb, "Controls processing of class files.", 3 );
2181                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2182                 append( sb, "", 0 );
2183 
2184                 append( sb, "defaultTemplateEncoding", 2 );
2185                 append( sb, "The encoding to use for reading templates.", 3 );
2186                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
2187                 append( sb, "", 0 );
2188 
2189                 append( sb, "defaultTemplateProfile", 2 );
2190                 append( sb, "The default template profile to use when accessing templates.", 3 );
2191                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2192                 append( sb, "", 0 );
2193 
2194                 append( sb, "document", 2 );
2195                 append( sb, "File to write the model to.", 3 );
2196                 append( sb, "Expression: ${jomc.document}", 3 );
2197                 append( sb, "", 0 );
2198 
2199                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
2200                 append( sb, "Encoding of the document to write.", 3 );
2201                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
2202                 append( sb, "", 0 );
2203 
2204                 append( sb, "indentation", 2 );
2205                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2206                 append( sb, "Expression: ${jomc.indentation}", 3 );
2207                 append( sb, "", 0 );
2208 
2209                 append( sb, "lineSeparator", 2 );
2210                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2211                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2212                 append( sb, "", 0 );
2213 
2214                 append( sb, "locale", 2 );
2215                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
2216                 append( sb, "", 0 );
2217 
2218                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2219                 append( sb, "The identifier of the model to process.", 3 );
2220                 append( sb, "Expression: ${jomc.model}", 3 );
2221                 append( sb, "", 0 );
2222 
2223                 append( sb, "modelContextAttributes", 2 );
2224                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
2225                 append( sb, "", 0 );
2226 
2227                 append( sb, "modelContextFactoryClassName", 2 );
2228                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2229                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2230                 append( sb, "", 0 );
2231 
2232                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2233                 append( sb, "Controls model object class path resolution.", 3 );
2234                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2235                 append( sb, "", 0 );
2236 
2237                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2238                 append( sb, "Controls processing of models.", 3 );
2239                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2240                 append( sb, "", 0 );
2241 
2242                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2243                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2244                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2245                 append( sb, "", 0 );
2246 
2247                 append( sb, "modletLocation", 2 );
2248                 append( sb, "The location to search for modlets.", 3 );
2249                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2250                 append( sb, "", 0 );
2251 
2252                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2253                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2254                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2255                 append( sb, "", 0 );
2256 
2257                 append( sb, "modletSchemaSystemId", 2 );
2258                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2259                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2260                 append( sb, "", 0 );
2261 
2262                 append( sb, "moduleLocation", 2 );
2263                 append( sb, "The location to search for modules.", 3 );
2264                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2265                 append( sb, "", 0 );
2266 
2267                 append( sb, "moduleName (Default: ${project.name})", 2 );
2268                 append( sb, "Name of the module to process.", 3 );
2269                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2270                 append( sb, "", 0 );
2271 
2272                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2273                 append( sb, "Output directory of the project.", 3 );
2274                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2275                 append( sb, "", 0 );
2276 
2277                 append( sb, "platformProviderLocation", 2 );
2278                 append( sb, "The location to search for platform providers.", 3 );
2279                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2280                 append( sb, "", 0 );
2281 
2282                 append( sb, "providerLocation", 2 );
2283                 append( sb, "The location to search for providers.", 3 );
2284                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2285                 append( sb, "", 0 );
2286 
2287                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2288                 append( sb, "Directory holding the reports of the project.", 3 );
2289                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2290                 append( sb, "", 0 );
2291 
2292                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2293                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2294                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2295                 append( sb, "", 0 );
2296 
2297                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2298                 append( sb, "Controls processing of resource files.", 3 );
2299                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2300                 append( sb, "", 0 );
2301 
2302                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2303                 append( sb, "Directory holding the session related files of the project.", 3 );
2304                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2305                 append( sb, "", 0 );
2306 
2307                 append( sb, "showTestModelExecutionStrategy (Default: once-per-session)", 2 );
2308                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2309                 append( sb, "Expression: ${jomc.showTestModelExecutionStrategy}", 3 );
2310                 append( sb, "", 0 );
2311 
2312                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2313                 append( sb, "Directory holding the source files of the project.", 3 );
2314                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2315                 append( sb, "", 0 );
2316 
2317                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2318                 append( sb, "The encoding to use for reading and writing files.", 3 );
2319                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2320                 append( sb, "", 0 );
2321 
2322                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2323                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2324                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2325                 append( sb, "", 0 );
2326 
2327                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2328                 append( sb, "Controls processing of source code files.", 3 );
2329                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2330                 append( sb, "", 0 );
2331 
2332                 append( sb, "templateEncoding", 2 );
2333                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2334                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2335                 append( sb, "", 0 );
2336 
2337                 append( sb, "templateLocation", 2 );
2338                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
2339                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2340                 append( sb, "", 0 );
2341 
2342                 append( sb, "templateParameterResources", 2 );
2343                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2344                 append( sb, "", 0 );
2345 
2346                 append( sb, "templateParameters", 2 );
2347                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
2348                 append( sb, "", 0 );
2349 
2350                 append( sb, "templateProfile", 2 );
2351                 append( sb, "The template profile to use when accessing templates.", 3 );
2352                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2353                 append( sb, "", 0 );
2354 
2355                 append( sb, "testClassesDirectory", 2 );
2356                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2357                 append( sb, "", 0 );
2358 
2359                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2360                 append( sb, "Name of the test module to process.", 3 );
2361                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2362                 append( sb, "", 0 );
2363 
2364                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2365                 append( sb, "Test output directory of the project.", 3 );
2366                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2367                 append( sb, "", 0 );
2368 
2369                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2370                 append( sb, "Directory holding the test source files of the project.", 3 );
2371                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2372                 append( sb, "", 0 );
2373 
2374                 append( sb, "transformationOutputProperties", 2 );
2375                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
2376                 append( sb, "", 0 );
2377 
2378                 append( sb, "transformationParameterResources", 2 );
2379                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2380                 append( sb, "", 0 );
2381 
2382                 append( sb, "transformationParameters", 2 );
2383                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
2384                 append( sb, "", 0 );
2385 
2386                 append( sb, "transformerLocation", 2 );
2387                 append( sb, "The location to search for transformers.", 3 );
2388                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2389                 append( sb, "", 0 );
2390 
2391                 append( sb, "velocityProperties", 2 );
2392                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
2393                 append( sb, "", 0 );
2394 
2395                 append( sb, "velocityPropertyResources", 2 );
2396                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2397                 append( sb, "", 0 );
2398 
2399                 append( sb, "verbose (Default: false)", 2 );
2400                 append( sb, "Controls verbosity of the plugin.", 3 );
2401                 append( sb, "Expression: ${jomc.verbose}", 3 );
2402                 append( sb, "", 0 );
2403             }
2404         }
2405 
2406         if ( goal == null || goal.length() <= 0 || "show-test-specification".equals( goal ) )
2407         {
2408             append( sb, "jomc:show-test-specification", 0 );
2409             append( sb, "Displays a project\'s test specification.", 1 );
2410             append( sb, "", 0 );
2411             if ( detail )
2412             {
2413                 append( sb, "Available parameters:", 1 );
2414                 append( sb, "", 0 );
2415 
2416                 append( sb, "classesDirectory", 2 );
2417                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2418                 append( sb, "", 0 );
2419 
2420                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2421                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2422                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2423                 append( sb, "", 0 );
2424 
2425                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2426                 append( sb, "Controls processing of class files.", 3 );
2427                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2428                 append( sb, "", 0 );
2429 
2430                 append( sb, "defaultTemplateEncoding", 2 );
2431                 append( sb, "The encoding to use for reading templates.", 3 );
2432                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
2433                 append( sb, "", 0 );
2434 
2435                 append( sb, "defaultTemplateProfile", 2 );
2436                 append( sb, "The default template profile to use when accessing templates.", 3 );
2437                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2438                 append( sb, "", 0 );
2439 
2440                 append( sb, "document", 2 );
2441                 append( sb, "File to write the model to.", 3 );
2442                 append( sb, "Expression: ${jomc.document}", 3 );
2443                 append( sb, "", 0 );
2444 
2445                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
2446                 append( sb, "Encoding of the document to write.", 3 );
2447                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
2448                 append( sb, "", 0 );
2449 
2450                 append( sb, "identifier", 2 );
2451                 append( sb, "Identifier of the specification to show.", 3 );
2452                 append( sb, "Required: Yes", 3 );
2453                 append( sb, "Expression: ${jomc.identifier}", 3 );
2454                 append( sb, "", 0 );
2455 
2456                 append( sb, "indentation", 2 );
2457                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2458                 append( sb, "Expression: ${jomc.indentation}", 3 );
2459                 append( sb, "", 0 );
2460 
2461                 append( sb, "lineSeparator", 2 );
2462                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2463                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2464                 append( sb, "", 0 );
2465 
2466                 append( sb, "locale", 2 );
2467                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
2468                 append( sb, "", 0 );
2469 
2470                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2471                 append( sb, "The identifier of the model to process.", 3 );
2472                 append( sb, "Expression: ${jomc.model}", 3 );
2473                 append( sb, "", 0 );
2474 
2475                 append( sb, "modelContextAttributes", 2 );
2476                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
2477                 append( sb, "", 0 );
2478 
2479                 append( sb, "modelContextFactoryClassName", 2 );
2480                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2481                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2482                 append( sb, "", 0 );
2483 
2484                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2485                 append( sb, "Controls model object class path resolution.", 3 );
2486                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2487                 append( sb, "", 0 );
2488 
2489                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2490                 append( sb, "Controls processing of models.", 3 );
2491                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2492                 append( sb, "", 0 );
2493 
2494                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2495                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2496                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2497                 append( sb, "", 0 );
2498 
2499                 append( sb, "modletLocation", 2 );
2500                 append( sb, "The location to search for modlets.", 3 );
2501                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2502                 append( sb, "", 0 );
2503 
2504                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2505                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2506                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2507                 append( sb, "", 0 );
2508 
2509                 append( sb, "modletSchemaSystemId", 2 );
2510                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2511                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2512                 append( sb, "", 0 );
2513 
2514                 append( sb, "moduleLocation", 2 );
2515                 append( sb, "The location to search for modules.", 3 );
2516                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2517                 append( sb, "", 0 );
2518 
2519                 append( sb, "moduleName (Default: ${project.name})", 2 );
2520                 append( sb, "Name of the module to process.", 3 );
2521                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2522                 append( sb, "", 0 );
2523 
2524                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2525                 append( sb, "Output directory of the project.", 3 );
2526                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2527                 append( sb, "", 0 );
2528 
2529                 append( sb, "platformProviderLocation", 2 );
2530                 append( sb, "The location to search for platform providers.", 3 );
2531                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2532                 append( sb, "", 0 );
2533 
2534                 append( sb, "providerLocation", 2 );
2535                 append( sb, "The location to search for providers.", 3 );
2536                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2537                 append( sb, "", 0 );
2538 
2539                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2540                 append( sb, "Directory holding the reports of the project.", 3 );
2541                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2542                 append( sb, "", 0 );
2543 
2544                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2545                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2546                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2547                 append( sb, "", 0 );
2548 
2549                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2550                 append( sb, "Controls processing of resource files.", 3 );
2551                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2552                 append( sb, "", 0 );
2553 
2554                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2555                 append( sb, "Directory holding the session related files of the project.", 3 );
2556                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2557                 append( sb, "", 0 );
2558 
2559                 append( sb, "showTestSpecificationExecutionStrategy (Default: once-per-session)", 2 );
2560                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2561                 append( sb, "Expression: ${jomc.showTestSpecificationExecutionStrategy}", 3 );
2562                 append( sb, "", 0 );
2563 
2564                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2565                 append( sb, "Directory holding the source files of the project.", 3 );
2566                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2567                 append( sb, "", 0 );
2568 
2569                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2570                 append( sb, "The encoding to use for reading and writing files.", 3 );
2571                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2572                 append( sb, "", 0 );
2573 
2574                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2575                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2576                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2577                 append( sb, "", 0 );
2578 
2579                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2580                 append( sb, "Controls processing of source code files.", 3 );
2581                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2582                 append( sb, "", 0 );
2583 
2584                 append( sb, "templateEncoding", 2 );
2585                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2586                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2587                 append( sb, "", 0 );
2588 
2589                 append( sb, "templateLocation", 2 );
2590                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
2591                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2592                 append( sb, "", 0 );
2593 
2594                 append( sb, "templateParameterResources", 2 );
2595                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2596                 append( sb, "", 0 );
2597 
2598                 append( sb, "templateParameters", 2 );
2599                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
2600                 append( sb, "", 0 );
2601 
2602                 append( sb, "templateProfile", 2 );
2603                 append( sb, "The template profile to use when accessing templates.", 3 );
2604                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2605                 append( sb, "", 0 );
2606 
2607                 append( sb, "testClassesDirectory", 2 );
2608                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2609                 append( sb, "", 0 );
2610 
2611                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2612                 append( sb, "Name of the test module to process.", 3 );
2613                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2614                 append( sb, "", 0 );
2615 
2616                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2617                 append( sb, "Test output directory of the project.", 3 );
2618                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2619                 append( sb, "", 0 );
2620 
2621                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2622                 append( sb, "Directory holding the test source files of the project.", 3 );
2623                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2624                 append( sb, "", 0 );
2625 
2626                 append( sb, "transformationOutputProperties", 2 );
2627                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
2628                 append( sb, "", 0 );
2629 
2630                 append( sb, "transformationParameterResources", 2 );
2631                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2632                 append( sb, "", 0 );
2633 
2634                 append( sb, "transformationParameters", 2 );
2635                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
2636                 append( sb, "", 0 );
2637 
2638                 append( sb, "transformerLocation", 2 );
2639                 append( sb, "The location to search for transformers.", 3 );
2640                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2641                 append( sb, "", 0 );
2642 
2643                 append( sb, "velocityProperties", 2 );
2644                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
2645                 append( sb, "", 0 );
2646 
2647                 append( sb, "velocityPropertyResources", 2 );
2648                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2649                 append( sb, "", 0 );
2650 
2651                 append( sb, "verbose (Default: false)", 2 );
2652                 append( sb, "Controls verbosity of the plugin.", 3 );
2653                 append( sb, "Expression: ${jomc.verbose}", 3 );
2654                 append( sb, "", 0 );
2655             }
2656         }
2657 
2658         if ( goal == null || goal.length() <= 0 || "validate-main-classes".equals( goal ) )
2659         {
2660             append( sb, "jomc:validate-main-classes", 0 );
2661             append( sb, "Validates a projects\' main class file model objects.", 1 );
2662             append( sb, "", 0 );
2663             if ( detail )
2664             {
2665                 append( sb, "Available parameters:", 1 );
2666                 append( sb, "", 0 );
2667 
2668                 append( sb, "classesDirectory", 2 );
2669                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2670                 append( sb, "", 0 );
2671 
2672                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2673                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2674                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2675                 append( sb, "", 0 );
2676 
2677                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2678                 append( sb, "Controls processing of class files.", 3 );
2679                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2680                 append( sb, "", 0 );
2681 
2682                 append( sb, "defaultTemplateEncoding", 2 );
2683                 append( sb, "The encoding to use for reading templates.", 3 );
2684                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
2685                 append( sb, "", 0 );
2686 
2687                 append( sb, "defaultTemplateProfile", 2 );
2688                 append( sb, "The default template profile to use when accessing templates.", 3 );
2689                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2690                 append( sb, "", 0 );
2691 
2692                 append( sb, "indentation", 2 );
2693                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2694                 append( sb, "Expression: ${jomc.indentation}", 3 );
2695                 append( sb, "", 0 );
2696 
2697                 append( sb, "lineSeparator", 2 );
2698                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2699                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2700                 append( sb, "", 0 );
2701 
2702                 append( sb, "locale", 2 );
2703                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
2704                 append( sb, "", 0 );
2705 
2706                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2707                 append( sb, "The identifier of the model to process.", 3 );
2708                 append( sb, "Expression: ${jomc.model}", 3 );
2709                 append( sb, "", 0 );
2710 
2711                 append( sb, "modelContextAttributes", 2 );
2712                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
2713                 append( sb, "", 0 );
2714 
2715                 append( sb, "modelContextFactoryClassName", 2 );
2716                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2717                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2718                 append( sb, "", 0 );
2719 
2720                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2721                 append( sb, "Controls model object class path resolution.", 3 );
2722                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2723                 append( sb, "", 0 );
2724 
2725                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2726                 append( sb, "Controls processing of models.", 3 );
2727                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2728                 append( sb, "", 0 );
2729 
2730                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2731                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2732                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2733                 append( sb, "", 0 );
2734 
2735                 append( sb, "modletLocation", 2 );
2736                 append( sb, "The location to search for modlets.", 3 );
2737                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2738                 append( sb, "", 0 );
2739 
2740                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2741                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2742                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2743                 append( sb, "", 0 );
2744 
2745                 append( sb, "modletSchemaSystemId", 2 );
2746                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2747                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2748                 append( sb, "", 0 );
2749 
2750                 append( sb, "moduleLocation", 2 );
2751                 append( sb, "The location to search for modules.", 3 );
2752                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2753                 append( sb, "", 0 );
2754 
2755                 append( sb, "moduleName (Default: ${project.name})", 2 );
2756                 append( sb, "Name of the module to process.", 3 );
2757                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2758                 append( sb, "", 0 );
2759 
2760                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2761                 append( sb, "Output directory of the project.", 3 );
2762                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2763                 append( sb, "", 0 );
2764 
2765                 append( sb, "platformProviderLocation", 2 );
2766                 append( sb, "The location to search for platform providers.", 3 );
2767                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2768                 append( sb, "", 0 );
2769 
2770                 append( sb, "providerLocation", 2 );
2771                 append( sb, "The location to search for providers.", 3 );
2772                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2773                 append( sb, "", 0 );
2774 
2775                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2776                 append( sb, "Directory holding the reports of the project.", 3 );
2777                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2778                 append( sb, "", 0 );
2779 
2780                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2781                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2782                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2783                 append( sb, "", 0 );
2784 
2785                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2786                 append( sb, "Controls processing of resource files.", 3 );
2787                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2788                 append( sb, "", 0 );
2789 
2790                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2791                 append( sb, "Directory holding the session related files of the project.", 3 );
2792                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2793                 append( sb, "", 0 );
2794 
2795                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2796                 append( sb, "Directory holding the source files of the project.", 3 );
2797                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2798                 append( sb, "", 0 );
2799 
2800                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2801                 append( sb, "The encoding to use for reading and writing files.", 3 );
2802                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2803                 append( sb, "", 0 );
2804 
2805                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2806                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2807                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2808                 append( sb, "", 0 );
2809 
2810                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2811                 append( sb, "Controls processing of source code files.", 3 );
2812                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2813                 append( sb, "", 0 );
2814 
2815                 append( sb, "templateEncoding", 2 );
2816                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2817                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2818                 append( sb, "", 0 );
2819 
2820                 append( sb, "templateLocation", 2 );
2821                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
2822                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2823                 append( sb, "", 0 );
2824 
2825                 append( sb, "templateParameterResources", 2 );
2826                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2827                 append( sb, "", 0 );
2828 
2829                 append( sb, "templateParameters", 2 );
2830                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
2831                 append( sb, "", 0 );
2832 
2833                 append( sb, "templateProfile", 2 );
2834                 append( sb, "The template profile to use when accessing templates.", 3 );
2835                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2836                 append( sb, "", 0 );
2837 
2838                 append( sb, "testClassesDirectory", 2 );
2839                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2840                 append( sb, "", 0 );
2841 
2842                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2843                 append( sb, "Name of the test module to process.", 3 );
2844                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2845                 append( sb, "", 0 );
2846 
2847                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2848                 append( sb, "Test output directory of the project.", 3 );
2849                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2850                 append( sb, "", 0 );
2851 
2852                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2853                 append( sb, "Directory holding the test source files of the project.", 3 );
2854                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2855                 append( sb, "", 0 );
2856 
2857                 append( sb, "transformationOutputProperties", 2 );
2858                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
2859                 append( sb, "", 0 );
2860 
2861                 append( sb, "transformationParameterResources", 2 );
2862                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2863                 append( sb, "", 0 );
2864 
2865                 append( sb, "transformationParameters", 2 );
2866                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
2867                 append( sb, "", 0 );
2868 
2869                 append( sb, "transformerLocation", 2 );
2870                 append( sb, "The location to search for transformers.", 3 );
2871                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2872                 append( sb, "", 0 );
2873 
2874                 append( sb, "validateMainClassesExecutionStrategy (Default: once-per-session)", 2 );
2875                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2876                 append( sb, "Expression: ${jomc.validateMainClassesExecutionStrategy}", 3 );
2877                 append( sb, "", 0 );
2878 
2879                 append( sb, "velocityProperties", 2 );
2880                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
2881                 append( sb, "", 0 );
2882 
2883                 append( sb, "velocityPropertyResources", 2 );
2884                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
2885                 append( sb, "", 0 );
2886 
2887                 append( sb, "verbose (Default: false)", 2 );
2888                 append( sb, "Controls verbosity of the plugin.", 3 );
2889                 append( sb, "Expression: ${jomc.verbose}", 3 );
2890                 append( sb, "", 0 );
2891             }
2892         }
2893 
2894         if ( goal == null || goal.length() <= 0 || "validate-main-classpath".equals( goal ) )
2895         {
2896             append( sb, "jomc:validate-main-classpath", 0 );
2897             append( sb, "Validates a projects\' main classpath class file model objects.", 1 );
2898             append( sb, "", 0 );
2899             if ( detail )
2900             {
2901                 append( sb, "Available parameters:", 1 );
2902                 append( sb, "", 0 );
2903 
2904                 append( sb, "classesDirectory", 2 );
2905                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
2906                 append( sb, "", 0 );
2907 
2908                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2909                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2910                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2911                 append( sb, "", 0 );
2912 
2913                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2914                 append( sb, "Controls processing of class files.", 3 );
2915                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2916                 append( sb, "", 0 );
2917 
2918                 append( sb, "defaultTemplateEncoding", 2 );
2919                 append( sb, "The encoding to use for reading templates.", 3 );
2920                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
2921                 append( sb, "", 0 );
2922 
2923                 append( sb, "defaultTemplateProfile", 2 );
2924                 append( sb, "The default template profile to use when accessing templates.", 3 );
2925                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2926                 append( sb, "", 0 );
2927 
2928                 append( sb, "indentation", 2 );
2929                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2930                 append( sb, "Expression: ${jomc.indentation}", 3 );
2931                 append( sb, "", 0 );
2932 
2933                 append( sb, "lineSeparator", 2 );
2934                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2935                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2936                 append( sb, "", 0 );
2937 
2938                 append( sb, "locale", 2 );
2939                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
2940                 append( sb, "", 0 );
2941 
2942                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2943                 append( sb, "The identifier of the model to process.", 3 );
2944                 append( sb, "Expression: ${jomc.model}", 3 );
2945                 append( sb, "", 0 );
2946 
2947                 append( sb, "modelContextAttributes", 2 );
2948                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
2949                 append( sb, "", 0 );
2950 
2951                 append( sb, "modelContextFactoryClassName", 2 );
2952                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2953                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2954                 append( sb, "", 0 );
2955 
2956                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2957                 append( sb, "Controls model object class path resolution.", 3 );
2958                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2959                 append( sb, "", 0 );
2960 
2961                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2962                 append( sb, "Controls processing of models.", 3 );
2963                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2964                 append( sb, "", 0 );
2965 
2966                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2967                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2968                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2969                 append( sb, "", 0 );
2970 
2971                 append( sb, "modletLocation", 2 );
2972                 append( sb, "The location to search for modlets.", 3 );
2973                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2974                 append( sb, "", 0 );
2975 
2976                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2977                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2978                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2979                 append( sb, "", 0 );
2980 
2981                 append( sb, "modletSchemaSystemId", 2 );
2982                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2983                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2984                 append( sb, "", 0 );
2985 
2986                 append( sb, "moduleLocation", 2 );
2987                 append( sb, "The location to search for modules.", 3 );
2988                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2989                 append( sb, "", 0 );
2990 
2991                 append( sb, "moduleName (Default: ${project.name})", 2 );
2992                 append( sb, "Name of the module to process.", 3 );
2993                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2994                 append( sb, "", 0 );
2995 
2996                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2997                 append( sb, "Output directory of the project.", 3 );
2998                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2999                 append( sb, "", 0 );
3000 
3001                 append( sb, "platformProviderLocation", 2 );
3002                 append( sb, "The location to search for platform providers.", 3 );
3003                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3004                 append( sb, "", 0 );
3005 
3006                 append( sb, "providerLocation", 2 );
3007                 append( sb, "The location to search for providers.", 3 );
3008                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3009                 append( sb, "", 0 );
3010 
3011                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3012                 append( sb, "Directory holding the reports of the project.", 3 );
3013                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3014                 append( sb, "", 0 );
3015 
3016                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3017                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3018                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3019                 append( sb, "", 0 );
3020 
3021                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3022                 append( sb, "Controls processing of resource files.", 3 );
3023                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3024                 append( sb, "", 0 );
3025 
3026                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3027                 append( sb, "Directory holding the session related files of the project.", 3 );
3028                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3029                 append( sb, "", 0 );
3030 
3031                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3032                 append( sb, "Directory holding the source files of the project.", 3 );
3033                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3034                 append( sb, "", 0 );
3035 
3036                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3037                 append( sb, "The encoding to use for reading and writing files.", 3 );
3038                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3039                 append( sb, "", 0 );
3040 
3041                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3042                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3043                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3044                 append( sb, "", 0 );
3045 
3046                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3047                 append( sb, "Controls processing of source code files.", 3 );
3048                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3049                 append( sb, "", 0 );
3050 
3051                 append( sb, "templateEncoding", 2 );
3052                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3053                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3054                 append( sb, "", 0 );
3055 
3056                 append( sb, "templateLocation", 2 );
3057                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
3058                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3059                 append( sb, "", 0 );
3060 
3061                 append( sb, "templateParameterResources", 2 );
3062                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3063                 append( sb, "", 0 );
3064 
3065                 append( sb, "templateParameters", 2 );
3066                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
3067                 append( sb, "", 0 );
3068 
3069                 append( sb, "templateProfile", 2 );
3070                 append( sb, "The template profile to use when accessing templates.", 3 );
3071                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3072                 append( sb, "", 0 );
3073 
3074                 append( sb, "testClassesDirectory", 2 );
3075                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3076                 append( sb, "", 0 );
3077 
3078                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3079                 append( sb, "Name of the test module to process.", 3 );
3080                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3081                 append( sb, "", 0 );
3082 
3083                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3084                 append( sb, "Test output directory of the project.", 3 );
3085                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3086                 append( sb, "", 0 );
3087 
3088                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3089                 append( sb, "Directory holding the test source files of the project.", 3 );
3090                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3091                 append( sb, "", 0 );
3092 
3093                 append( sb, "transformationOutputProperties", 2 );
3094                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
3095                 append( sb, "", 0 );
3096 
3097                 append( sb, "transformationParameterResources", 2 );
3098                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3099                 append( sb, "", 0 );
3100 
3101                 append( sb, "transformationParameters", 2 );
3102                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
3103                 append( sb, "", 0 );
3104 
3105                 append( sb, "transformerLocation", 2 );
3106                 append( sb, "The location to search for transformers.", 3 );
3107                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3108                 append( sb, "", 0 );
3109 
3110                 append( sb, "validateMainClasspathExecutionStrategy (Default: once-per-session)", 2 );
3111                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3112                 append( sb, "Expression: ${jomc.validateMainClasspathExecutionStrategy}", 3 );
3113                 append( sb, "", 0 );
3114 
3115                 append( sb, "velocityProperties", 2 );
3116                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
3117                 append( sb, "", 0 );
3118 
3119                 append( sb, "velocityPropertyResources", 2 );
3120                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3121                 append( sb, "", 0 );
3122 
3123                 append( sb, "verbose (Default: false)", 2 );
3124                 append( sb, "Controls verbosity of the plugin.", 3 );
3125                 append( sb, "Expression: ${jomc.verbose}", 3 );
3126                 append( sb, "", 0 );
3127             }
3128         }
3129 
3130         if ( goal == null || goal.length() <= 0 || "validate-main-model".equals( goal ) )
3131         {
3132             append( sb, "jomc:validate-main-model", 0 );
3133             append( sb, "Validates a project\'s main model.", 1 );
3134             append( sb, "", 0 );
3135             if ( detail )
3136             {
3137                 append( sb, "Available parameters:", 1 );
3138                 append( sb, "", 0 );
3139 
3140                 append( sb, "classesDirectory", 2 );
3141                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3142                 append( sb, "", 0 );
3143 
3144                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3145                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3146                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3147                 append( sb, "", 0 );
3148 
3149                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3150                 append( sb, "Controls processing of class files.", 3 );
3151                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3152                 append( sb, "", 0 );
3153 
3154                 append( sb, "defaultTemplateEncoding", 2 );
3155                 append( sb, "The encoding to use for reading templates.", 3 );
3156                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
3157                 append( sb, "", 0 );
3158 
3159                 append( sb, "defaultTemplateProfile", 2 );
3160                 append( sb, "The default template profile to use when accessing templates.", 3 );
3161                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3162                 append( sb, "", 0 );
3163 
3164                 append( sb, "indentation", 2 );
3165                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3166                 append( sb, "Expression: ${jomc.indentation}", 3 );
3167                 append( sb, "", 0 );
3168 
3169                 append( sb, "lineSeparator", 2 );
3170                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3171                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3172                 append( sb, "", 0 );
3173 
3174                 append( sb, "locale", 2 );
3175                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
3176                 append( sb, "", 0 );
3177 
3178                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3179                 append( sb, "The identifier of the model to process.", 3 );
3180                 append( sb, "Expression: ${jomc.model}", 3 );
3181                 append( sb, "", 0 );
3182 
3183                 append( sb, "modelContextAttributes", 2 );
3184                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
3185                 append( sb, "", 0 );
3186 
3187                 append( sb, "modelContextFactoryClassName", 2 );
3188                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3189                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3190                 append( sb, "", 0 );
3191 
3192                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3193                 append( sb, "Controls model object class path resolution.", 3 );
3194                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3195                 append( sb, "", 0 );
3196 
3197                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3198                 append( sb, "Controls processing of models.", 3 );
3199                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3200                 append( sb, "", 0 );
3201 
3202                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3203                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3204                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3205                 append( sb, "", 0 );
3206 
3207                 append( sb, "modletLocation", 2 );
3208                 append( sb, "The location to search for modlets.", 3 );
3209                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3210                 append( sb, "", 0 );
3211 
3212                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3213                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3214                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3215                 append( sb, "", 0 );
3216 
3217                 append( sb, "modletSchemaSystemId", 2 );
3218                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3219                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3220                 append( sb, "", 0 );
3221 
3222                 append( sb, "moduleLocation", 2 );
3223                 append( sb, "The location to search for modules.", 3 );
3224                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3225                 append( sb, "", 0 );
3226 
3227                 append( sb, "moduleName (Default: ${project.name})", 2 );
3228                 append( sb, "Name of the module to process.", 3 );
3229                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3230                 append( sb, "", 0 );
3231 
3232                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3233                 append( sb, "Output directory of the project.", 3 );
3234                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3235                 append( sb, "", 0 );
3236 
3237                 append( sb, "platformProviderLocation", 2 );
3238                 append( sb, "The location to search for platform providers.", 3 );
3239                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3240                 append( sb, "", 0 );
3241 
3242                 append( sb, "providerLocation", 2 );
3243                 append( sb, "The location to search for providers.", 3 );
3244                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3245                 append( sb, "", 0 );
3246 
3247                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3248                 append( sb, "Directory holding the reports of the project.", 3 );
3249                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3250                 append( sb, "", 0 );
3251 
3252                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3253                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3254                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3255                 append( sb, "", 0 );
3256 
3257                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3258                 append( sb, "Controls processing of resource files.", 3 );
3259                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3260                 append( sb, "", 0 );
3261 
3262                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3263                 append( sb, "Directory holding the session related files of the project.", 3 );
3264                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3265                 append( sb, "", 0 );
3266 
3267                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3268                 append( sb, "Directory holding the source files of the project.", 3 );
3269                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3270                 append( sb, "", 0 );
3271 
3272                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3273                 append( sb, "The encoding to use for reading and writing files.", 3 );
3274                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3275                 append( sb, "", 0 );
3276 
3277                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3278                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3279                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3280                 append( sb, "", 0 );
3281 
3282                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3283                 append( sb, "Controls processing of source code files.", 3 );
3284                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3285                 append( sb, "", 0 );
3286 
3287                 append( sb, "templateEncoding", 2 );
3288                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3289                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3290                 append( sb, "", 0 );
3291 
3292                 append( sb, "templateLocation", 2 );
3293                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
3294                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3295                 append( sb, "", 0 );
3296 
3297                 append( sb, "templateParameterResources", 2 );
3298                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3299                 append( sb, "", 0 );
3300 
3301                 append( sb, "templateParameters", 2 );
3302                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
3303                 append( sb, "", 0 );
3304 
3305                 append( sb, "templateProfile", 2 );
3306                 append( sb, "The template profile to use when accessing templates.", 3 );
3307                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3308                 append( sb, "", 0 );
3309 
3310                 append( sb, "testClassesDirectory", 2 );
3311                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3312                 append( sb, "", 0 );
3313 
3314                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3315                 append( sb, "Name of the test module to process.", 3 );
3316                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3317                 append( sb, "", 0 );
3318 
3319                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3320                 append( sb, "Test output directory of the project.", 3 );
3321                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3322                 append( sb, "", 0 );
3323 
3324                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3325                 append( sb, "Directory holding the test source files of the project.", 3 );
3326                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3327                 append( sb, "", 0 );
3328 
3329                 append( sb, "transformationOutputProperties", 2 );
3330                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
3331                 append( sb, "", 0 );
3332 
3333                 append( sb, "transformationParameterResources", 2 );
3334                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3335                 append( sb, "", 0 );
3336 
3337                 append( sb, "transformationParameters", 2 );
3338                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
3339                 append( sb, "", 0 );
3340 
3341                 append( sb, "transformerLocation", 2 );
3342                 append( sb, "The location to search for transformers.", 3 );
3343                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3344                 append( sb, "", 0 );
3345 
3346                 append( sb, "validateMainModelExecutionStrategy (Default: once-per-session)", 2 );
3347                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3348                 append( sb, "Expression: ${jomc.validateMainModelExecutionStrategy}", 3 );
3349                 append( sb, "", 0 );
3350 
3351                 append( sb, "velocityProperties", 2 );
3352                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
3353                 append( sb, "", 0 );
3354 
3355                 append( sb, "velocityPropertyResources", 2 );
3356                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3357                 append( sb, "", 0 );
3358 
3359                 append( sb, "verbose (Default: false)", 2 );
3360                 append( sb, "Controls verbosity of the plugin.", 3 );
3361                 append( sb, "Expression: ${jomc.verbose}", 3 );
3362                 append( sb, "", 0 );
3363             }
3364         }
3365 
3366         if ( goal == null || goal.length() <= 0 || "validate-test-classes".equals( goal ) )
3367         {
3368             append( sb, "jomc:validate-test-classes", 0 );
3369             append( sb, "Validates a projects\' test class file model objects.", 1 );
3370             append( sb, "", 0 );
3371             if ( detail )
3372             {
3373                 append( sb, "Available parameters:", 1 );
3374                 append( sb, "", 0 );
3375 
3376                 append( sb, "classesDirectory", 2 );
3377                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3378                 append( sb, "", 0 );
3379 
3380                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3381                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3382                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3383                 append( sb, "", 0 );
3384 
3385                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3386                 append( sb, "Controls processing of class files.", 3 );
3387                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3388                 append( sb, "", 0 );
3389 
3390                 append( sb, "defaultTemplateEncoding", 2 );
3391                 append( sb, "The encoding to use for reading templates.", 3 );
3392                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
3393                 append( sb, "", 0 );
3394 
3395                 append( sb, "defaultTemplateProfile", 2 );
3396                 append( sb, "The default template profile to use when accessing templates.", 3 );
3397                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3398                 append( sb, "", 0 );
3399 
3400                 append( sb, "indentation", 2 );
3401                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3402                 append( sb, "Expression: ${jomc.indentation}", 3 );
3403                 append( sb, "", 0 );
3404 
3405                 append( sb, "lineSeparator", 2 );
3406                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3407                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3408                 append( sb, "", 0 );
3409 
3410                 append( sb, "locale", 2 );
3411                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
3412                 append( sb, "", 0 );
3413 
3414                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3415                 append( sb, "The identifier of the model to process.", 3 );
3416                 append( sb, "Expression: ${jomc.model}", 3 );
3417                 append( sb, "", 0 );
3418 
3419                 append( sb, "modelContextAttributes", 2 );
3420                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
3421                 append( sb, "", 0 );
3422 
3423                 append( sb, "modelContextFactoryClassName", 2 );
3424                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3425                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3426                 append( sb, "", 0 );
3427 
3428                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3429                 append( sb, "Controls model object class path resolution.", 3 );
3430                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3431                 append( sb, "", 0 );
3432 
3433                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3434                 append( sb, "Controls processing of models.", 3 );
3435                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3436                 append( sb, "", 0 );
3437 
3438                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3439                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3440                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3441                 append( sb, "", 0 );
3442 
3443                 append( sb, "modletLocation", 2 );
3444                 append( sb, "The location to search for modlets.", 3 );
3445                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3446                 append( sb, "", 0 );
3447 
3448                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3449                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3450                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3451                 append( sb, "", 0 );
3452 
3453                 append( sb, "modletSchemaSystemId", 2 );
3454                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3455                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3456                 append( sb, "", 0 );
3457 
3458                 append( sb, "moduleLocation", 2 );
3459                 append( sb, "The location to search for modules.", 3 );
3460                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3461                 append( sb, "", 0 );
3462 
3463                 append( sb, "moduleName (Default: ${project.name})", 2 );
3464                 append( sb, "Name of the module to process.", 3 );
3465                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3466                 append( sb, "", 0 );
3467 
3468                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3469                 append( sb, "Output directory of the project.", 3 );
3470                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3471                 append( sb, "", 0 );
3472 
3473                 append( sb, "platformProviderLocation", 2 );
3474                 append( sb, "The location to search for platform providers.", 3 );
3475                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3476                 append( sb, "", 0 );
3477 
3478                 append( sb, "providerLocation", 2 );
3479                 append( sb, "The location to search for providers.", 3 );
3480                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3481                 append( sb, "", 0 );
3482 
3483                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3484                 append( sb, "Directory holding the reports of the project.", 3 );
3485                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3486                 append( sb, "", 0 );
3487 
3488                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3489                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3490                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3491                 append( sb, "", 0 );
3492 
3493                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3494                 append( sb, "Controls processing of resource files.", 3 );
3495                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3496                 append( sb, "", 0 );
3497 
3498                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3499                 append( sb, "Directory holding the session related files of the project.", 3 );
3500                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3501                 append( sb, "", 0 );
3502 
3503                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3504                 append( sb, "Directory holding the source files of the project.", 3 );
3505                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3506                 append( sb, "", 0 );
3507 
3508                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3509                 append( sb, "The encoding to use for reading and writing files.", 3 );
3510                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3511                 append( sb, "", 0 );
3512 
3513                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3514                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3515                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3516                 append( sb, "", 0 );
3517 
3518                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3519                 append( sb, "Controls processing of source code files.", 3 );
3520                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3521                 append( sb, "", 0 );
3522 
3523                 append( sb, "templateEncoding", 2 );
3524                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3525                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3526                 append( sb, "", 0 );
3527 
3528                 append( sb, "templateLocation", 2 );
3529                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
3530                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3531                 append( sb, "", 0 );
3532 
3533                 append( sb, "templateParameterResources", 2 );
3534                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3535                 append( sb, "", 0 );
3536 
3537                 append( sb, "templateParameters", 2 );
3538                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
3539                 append( sb, "", 0 );
3540 
3541                 append( sb, "templateProfile", 2 );
3542                 append( sb, "The template profile to use when accessing templates.", 3 );
3543                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3544                 append( sb, "", 0 );
3545 
3546                 append( sb, "testClassesDirectory", 2 );
3547                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3548                 append( sb, "", 0 );
3549 
3550                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3551                 append( sb, "Name of the test module to process.", 3 );
3552                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3553                 append( sb, "", 0 );
3554 
3555                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3556                 append( sb, "Test output directory of the project.", 3 );
3557                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3558                 append( sb, "", 0 );
3559 
3560                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3561                 append( sb, "Directory holding the test source files of the project.", 3 );
3562                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3563                 append( sb, "", 0 );
3564 
3565                 append( sb, "transformationOutputProperties", 2 );
3566                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
3567                 append( sb, "", 0 );
3568 
3569                 append( sb, "transformationParameterResources", 2 );
3570                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3571                 append( sb, "", 0 );
3572 
3573                 append( sb, "transformationParameters", 2 );
3574                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
3575                 append( sb, "", 0 );
3576 
3577                 append( sb, "transformerLocation", 2 );
3578                 append( sb, "The location to search for transformers.", 3 );
3579                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3580                 append( sb, "", 0 );
3581 
3582                 append( sb, "validateTestClassesExecutionStrategy (Default: once-per-session)", 2 );
3583                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3584                 append( sb, "Expression: ${jomc.validateTestClassesExecutionStrategy}", 3 );
3585                 append( sb, "", 0 );
3586 
3587                 append( sb, "velocityProperties", 2 );
3588                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
3589                 append( sb, "", 0 );
3590 
3591                 append( sb, "velocityPropertyResources", 2 );
3592                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3593                 append( sb, "", 0 );
3594 
3595                 append( sb, "verbose (Default: false)", 2 );
3596                 append( sb, "Controls verbosity of the plugin.", 3 );
3597                 append( sb, "Expression: ${jomc.verbose}", 3 );
3598                 append( sb, "", 0 );
3599             }
3600         }
3601 
3602         if ( goal == null || goal.length() <= 0 || "validate-test-classpath".equals( goal ) )
3603         {
3604             append( sb, "jomc:validate-test-classpath", 0 );
3605             append( sb, "Validates a projects\' test class path class file model objects.", 1 );
3606             append( sb, "", 0 );
3607             if ( detail )
3608             {
3609                 append( sb, "Available parameters:", 1 );
3610                 append( sb, "", 0 );
3611 
3612                 append( sb, "classesDirectory", 2 );
3613                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3614                 append( sb, "", 0 );
3615 
3616                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3617                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3618                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3619                 append( sb, "", 0 );
3620 
3621                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3622                 append( sb, "Controls processing of class files.", 3 );
3623                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3624                 append( sb, "", 0 );
3625 
3626                 append( sb, "defaultTemplateEncoding", 2 );
3627                 append( sb, "The encoding to use for reading templates.", 3 );
3628                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
3629                 append( sb, "", 0 );
3630 
3631                 append( sb, "defaultTemplateProfile", 2 );
3632                 append( sb, "The default template profile to use when accessing templates.", 3 );
3633                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3634                 append( sb, "", 0 );
3635 
3636                 append( sb, "indentation", 2 );
3637                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3638                 append( sb, "Expression: ${jomc.indentation}", 3 );
3639                 append( sb, "", 0 );
3640 
3641                 append( sb, "lineSeparator", 2 );
3642                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3643                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3644                 append( sb, "", 0 );
3645 
3646                 append( sb, "locale", 2 );
3647                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
3648                 append( sb, "", 0 );
3649 
3650                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3651                 append( sb, "The identifier of the model to process.", 3 );
3652                 append( sb, "Expression: ${jomc.model}", 3 );
3653                 append( sb, "", 0 );
3654 
3655                 append( sb, "modelContextAttributes", 2 );
3656                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
3657                 append( sb, "", 0 );
3658 
3659                 append( sb, "modelContextFactoryClassName", 2 );
3660                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3661                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3662                 append( sb, "", 0 );
3663 
3664                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3665                 append( sb, "Controls model object class path resolution.", 3 );
3666                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3667                 append( sb, "", 0 );
3668 
3669                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3670                 append( sb, "Controls processing of models.", 3 );
3671                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3672                 append( sb, "", 0 );
3673 
3674                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3675                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3676                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3677                 append( sb, "", 0 );
3678 
3679                 append( sb, "modletLocation", 2 );
3680                 append( sb, "The location to search for modlets.", 3 );
3681                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3682                 append( sb, "", 0 );
3683 
3684                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3685                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3686                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3687                 append( sb, "", 0 );
3688 
3689                 append( sb, "modletSchemaSystemId", 2 );
3690                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3691                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3692                 append( sb, "", 0 );
3693 
3694                 append( sb, "moduleLocation", 2 );
3695                 append( sb, "The location to search for modules.", 3 );
3696                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3697                 append( sb, "", 0 );
3698 
3699                 append( sb, "moduleName (Default: ${project.name})", 2 );
3700                 append( sb, "Name of the module to process.", 3 );
3701                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3702                 append( sb, "", 0 );
3703 
3704                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3705                 append( sb, "Output directory of the project.", 3 );
3706                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3707                 append( sb, "", 0 );
3708 
3709                 append( sb, "platformProviderLocation", 2 );
3710                 append( sb, "The location to search for platform providers.", 3 );
3711                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3712                 append( sb, "", 0 );
3713 
3714                 append( sb, "providerLocation", 2 );
3715                 append( sb, "The location to search for providers.", 3 );
3716                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3717                 append( sb, "", 0 );
3718 
3719                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3720                 append( sb, "Directory holding the reports of the project.", 3 );
3721                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3722                 append( sb, "", 0 );
3723 
3724                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3725                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3726                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3727                 append( sb, "", 0 );
3728 
3729                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3730                 append( sb, "Controls processing of resource files.", 3 );
3731                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3732                 append( sb, "", 0 );
3733 
3734                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3735                 append( sb, "Directory holding the session related files of the project.", 3 );
3736                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3737                 append( sb, "", 0 );
3738 
3739                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3740                 append( sb, "Directory holding the source files of the project.", 3 );
3741                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3742                 append( sb, "", 0 );
3743 
3744                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3745                 append( sb, "The encoding to use for reading and writing files.", 3 );
3746                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3747                 append( sb, "", 0 );
3748 
3749                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3750                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3751                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3752                 append( sb, "", 0 );
3753 
3754                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3755                 append( sb, "Controls processing of source code files.", 3 );
3756                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3757                 append( sb, "", 0 );
3758 
3759                 append( sb, "templateEncoding", 2 );
3760                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3761                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3762                 append( sb, "", 0 );
3763 
3764                 append( sb, "templateLocation", 2 );
3765                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
3766                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3767                 append( sb, "", 0 );
3768 
3769                 append( sb, "templateParameterResources", 2 );
3770                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3771                 append( sb, "", 0 );
3772 
3773                 append( sb, "templateParameters", 2 );
3774                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
3775                 append( sb, "", 0 );
3776 
3777                 append( sb, "templateProfile", 2 );
3778                 append( sb, "The template profile to use when accessing templates.", 3 );
3779                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3780                 append( sb, "", 0 );
3781 
3782                 append( sb, "testClassesDirectory", 2 );
3783                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3784                 append( sb, "", 0 );
3785 
3786                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3787                 append( sb, "Name of the test module to process.", 3 );
3788                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3789                 append( sb, "", 0 );
3790 
3791                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3792                 append( sb, "Test output directory of the project.", 3 );
3793                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3794                 append( sb, "", 0 );
3795 
3796                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3797                 append( sb, "Directory holding the test source files of the project.", 3 );
3798                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3799                 append( sb, "", 0 );
3800 
3801                 append( sb, "transformationOutputProperties", 2 );
3802                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
3803                 append( sb, "", 0 );
3804 
3805                 append( sb, "transformationParameterResources", 2 );
3806                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3807                 append( sb, "", 0 );
3808 
3809                 append( sb, "transformationParameters", 2 );
3810                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
3811                 append( sb, "", 0 );
3812 
3813                 append( sb, "transformerLocation", 2 );
3814                 append( sb, "The location to search for transformers.", 3 );
3815                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3816                 append( sb, "", 0 );
3817 
3818                 append( sb, "validateTestClasspathExecutionStrategy (Default: once-per-session)", 2 );
3819                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3820                 append( sb, "Expression: ${jomc.validateTestClasspathExecutionStrategy}", 3 );
3821                 append( sb, "", 0 );
3822 
3823                 append( sb, "velocityProperties", 2 );
3824                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
3825                 append( sb, "", 0 );
3826 
3827                 append( sb, "velocityPropertyResources", 2 );
3828                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
3829                 append( sb, "", 0 );
3830 
3831                 append( sb, "verbose (Default: false)", 2 );
3832                 append( sb, "Controls verbosity of the plugin.", 3 );
3833                 append( sb, "Expression: ${jomc.verbose}", 3 );
3834                 append( sb, "", 0 );
3835             }
3836         }
3837 
3838         if ( goal == null || goal.length() <= 0 || "validate-test-model".equals( goal ) )
3839         {
3840             append( sb, "jomc:validate-test-model", 0 );
3841             append( sb, "Validates a project\'s test model.", 1 );
3842             append( sb, "", 0 );
3843             if ( detail )
3844             {
3845                 append( sb, "Available parameters:", 1 );
3846                 append( sb, "", 0 );
3847 
3848                 append( sb, "classesDirectory", 2 );
3849                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3850                 append( sb, "", 0 );
3851 
3852                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3853                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3854                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3855                 append( sb, "", 0 );
3856 
3857                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3858                 append( sb, "Controls processing of class files.", 3 );
3859                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3860                 append( sb, "", 0 );
3861 
3862                 append( sb, "defaultTemplateEncoding", 2 );
3863                 append( sb, "The encoding to use for reading templates.", 3 );
3864                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
3865                 append( sb, "", 0 );
3866 
3867                 append( sb, "defaultTemplateProfile", 2 );
3868                 append( sb, "The default template profile to use when accessing templates.", 3 );
3869                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3870                 append( sb, "", 0 );
3871 
3872                 append( sb, "indentation", 2 );
3873                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3874                 append( sb, "Expression: ${jomc.indentation}", 3 );
3875                 append( sb, "", 0 );
3876 
3877                 append( sb, "lineSeparator", 2 );
3878                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3879                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3880                 append( sb, "", 0 );
3881 
3882                 append( sb, "locale", 2 );
3883                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
3884                 append( sb, "", 0 );
3885 
3886                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3887                 append( sb, "The identifier of the model to process.", 3 );
3888                 append( sb, "Expression: ${jomc.model}", 3 );
3889                 append( sb, "", 0 );
3890 
3891                 append( sb, "modelContextAttributes", 2 );
3892                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
3893                 append( sb, "", 0 );
3894 
3895                 append( sb, "modelContextFactoryClassName", 2 );
3896                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3897                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3898                 append( sb, "", 0 );
3899 
3900                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3901                 append( sb, "Controls model object class path resolution.", 3 );
3902                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3903                 append( sb, "", 0 );
3904 
3905                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3906                 append( sb, "Controls processing of models.", 3 );
3907                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3908                 append( sb, "", 0 );
3909 
3910                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3911                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3912                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3913                 append( sb, "", 0 );
3914 
3915                 append( sb, "modletLocation", 2 );
3916                 append( sb, "The location to search for modlets.", 3 );
3917                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3918                 append( sb, "", 0 );
3919 
3920                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3921                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3922                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3923                 append( sb, "", 0 );
3924 
3925                 append( sb, "modletSchemaSystemId", 2 );
3926                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3927                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3928                 append( sb, "", 0 );
3929 
3930                 append( sb, "moduleLocation", 2 );
3931                 append( sb, "The location to search for modules.", 3 );
3932                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3933                 append( sb, "", 0 );
3934 
3935                 append( sb, "moduleName (Default: ${project.name})", 2 );
3936                 append( sb, "Name of the module to process.", 3 );
3937                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3938                 append( sb, "", 0 );
3939 
3940                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3941                 append( sb, "Output directory of the project.", 3 );
3942                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3943                 append( sb, "", 0 );
3944 
3945                 append( sb, "platformProviderLocation", 2 );
3946                 append( sb, "The location to search for platform providers.", 3 );
3947                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3948                 append( sb, "", 0 );
3949 
3950                 append( sb, "providerLocation", 2 );
3951                 append( sb, "The location to search for providers.", 3 );
3952                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3953                 append( sb, "", 0 );
3954 
3955                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3956                 append( sb, "Directory holding the reports of the project.", 3 );
3957                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3958                 append( sb, "", 0 );
3959 
3960                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3961                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3962                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3963                 append( sb, "", 0 );
3964 
3965                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3966                 append( sb, "Controls processing of resource files.", 3 );
3967                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3968                 append( sb, "", 0 );
3969 
3970                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3971                 append( sb, "Directory holding the session related files of the project.", 3 );
3972                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3973                 append( sb, "", 0 );
3974 
3975                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3976                 append( sb, "Directory holding the source files of the project.", 3 );
3977                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3978                 append( sb, "", 0 );
3979 
3980                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3981                 append( sb, "The encoding to use for reading and writing files.", 3 );
3982                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3983                 append( sb, "", 0 );
3984 
3985                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3986                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3987                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3988                 append( sb, "", 0 );
3989 
3990                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3991                 append( sb, "Controls processing of source code files.", 3 );
3992                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3993                 append( sb, "", 0 );
3994 
3995                 append( sb, "templateEncoding", 2 );
3996                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
3997                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3998                 append( sb, "", 0 );
3999 
4000                 append( sb, "templateLocation", 2 );
4001                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
4002                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
4003                 append( sb, "", 0 );
4004 
4005                 append( sb, "templateParameterResources", 2 );
4006                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4007                 append( sb, "", 0 );
4008 
4009                 append( sb, "templateParameters", 2 );
4010                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
4011                 append( sb, "", 0 );
4012 
4013                 append( sb, "templateProfile", 2 );
4014                 append( sb, "The template profile to use when accessing templates.", 3 );
4015                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
4016                 append( sb, "", 0 );
4017 
4018                 append( sb, "testClassesDirectory", 2 );
4019                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4020                 append( sb, "", 0 );
4021 
4022                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
4023                 append( sb, "Name of the test module to process.", 3 );
4024                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
4025                 append( sb, "", 0 );
4026 
4027                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
4028                 append( sb, "Test output directory of the project.", 3 );
4029                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
4030                 append( sb, "", 0 );
4031 
4032                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
4033                 append( sb, "Directory holding the test source files of the project.", 3 );
4034                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
4035                 append( sb, "", 0 );
4036 
4037                 append( sb, "transformationOutputProperties", 2 );
4038                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
4039                 append( sb, "", 0 );
4040 
4041                 append( sb, "transformationParameterResources", 2 );
4042                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4043                 append( sb, "", 0 );
4044 
4045                 append( sb, "transformationParameters", 2 );
4046                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
4047                 append( sb, "", 0 );
4048 
4049                 append( sb, "transformerLocation", 2 );
4050                 append( sb, "The location to search for transformers.", 3 );
4051                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
4052                 append( sb, "", 0 );
4053 
4054                 append( sb, "validateTestModelExecutionStrategy (Default: once-per-session)", 2 );
4055                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
4056                 append( sb, "Expression: ${jomc.validateTestModelExecutionStrategy}", 3 );
4057                 append( sb, "", 0 );
4058 
4059                 append( sb, "velocityProperties", 2 );
4060                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
4061                 append( sb, "", 0 );
4062 
4063                 append( sb, "velocityPropertyResources", 2 );
4064                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4065                 append( sb, "", 0 );
4066 
4067                 append( sb, "verbose (Default: false)", 2 );
4068                 append( sb, "Controls verbosity of the plugin.", 3 );
4069                 append( sb, "Expression: ${jomc.verbose}", 3 );
4070                 append( sb, "", 0 );
4071             }
4072         }
4073 
4074         if ( goal == null || goal.length() <= 0 || "write-main-resources".equals( goal ) )
4075         {
4076             append( sb, "jomc:write-main-resources", 0 );
4077             append( sb, "Writes a projects\' main resource files.", 1 );
4078             append( sb, "", 0 );
4079             if ( detail )
4080             {
4081                 append( sb, "Available parameters:", 1 );
4082                 append( sb, "", 0 );
4083 
4084                 append( sb, "classesDirectory", 2 );
4085                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4086                 append( sb, "", 0 );
4087 
4088                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
4089                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
4090                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
4091                 append( sb, "", 0 );
4092 
4093                 append( sb, "classProcessingEnabled (Default: true)", 2 );
4094                 append( sb, "Controls processing of class files.", 3 );
4095                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
4096                 append( sb, "", 0 );
4097 
4098                 append( sb, "defaultTemplateEncoding", 2 );
4099                 append( sb, "The encoding to use for reading templates.", 3 );
4100                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
4101                 append( sb, "", 0 );
4102 
4103                 append( sb, "defaultTemplateProfile", 2 );
4104                 append( sb, "The default template profile to use when accessing templates.", 3 );
4105                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
4106                 append( sb, "", 0 );
4107 
4108                 append( sb, "indentation", 2 );
4109                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
4110                 append( sb, "Expression: ${jomc.indentation}", 3 );
4111                 append( sb, "", 0 );
4112 
4113                 append( sb, "lineSeparator", 2 );
4114                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
4115                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
4116                 append( sb, "", 0 );
4117 
4118                 append( sb, "locale", 2 );
4119                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
4120                 append( sb, "", 0 );
4121 
4122                 append( sb, "mainResourcesOutputDirectory (Default: ${project.build.directory}/generated-resources/jomc)", 2 );
4123                 append( sb, "Directory to write resource files to.", 3 );
4124                 append( sb, "Expression: ${jomc.mainResourcesOutputDirectory}", 3 );
4125                 append( sb, "", 0 );
4126 
4127                 append( sb, "model (Default: http://jomc.org/model)", 2 );
4128                 append( sb, "The identifier of the model to process.", 3 );
4129                 append( sb, "Expression: ${jomc.model}", 3 );
4130                 append( sb, "", 0 );
4131 
4132                 append( sb, "modelContextAttributes", 2 );
4133                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
4134                 append( sb, "", 0 );
4135 
4136                 append( sb, "modelContextFactoryClassName", 2 );
4137                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
4138                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
4139                 append( sb, "", 0 );
4140 
4141                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
4142                 append( sb, "Controls model object class path resolution.", 3 );
4143                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
4144                 append( sb, "", 0 );
4145 
4146                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
4147                 append( sb, "Controls processing of models.", 3 );
4148                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
4149                 append( sb, "", 0 );
4150 
4151                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
4152                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
4153                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
4154                 append( sb, "", 0 );
4155 
4156                 append( sb, "modletLocation", 2 );
4157                 append( sb, "The location to search for modlets.", 3 );
4158                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
4159                 append( sb, "", 0 );
4160 
4161                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
4162                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
4163                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
4164                 append( sb, "", 0 );
4165 
4166                 append( sb, "modletSchemaSystemId", 2 );
4167                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
4168                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
4169                 append( sb, "", 0 );
4170 
4171                 append( sb, "moduleLocation", 2 );
4172                 append( sb, "The location to search for modules.", 3 );
4173                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
4174                 append( sb, "", 0 );
4175 
4176                 append( sb, "moduleName (Default: ${project.name})", 2 );
4177                 append( sb, "Name of the module to process.", 3 );
4178                 append( sb, "Expression: ${jomc.moduleName}", 3 );
4179                 append( sb, "", 0 );
4180 
4181                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
4182                 append( sb, "Output directory of the project.", 3 );
4183                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
4184                 append( sb, "", 0 );
4185 
4186                 append( sb, "platformProviderLocation", 2 );
4187                 append( sb, "The location to search for platform providers.", 3 );
4188                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
4189                 append( sb, "", 0 );
4190 
4191                 append( sb, "providerLocation", 2 );
4192                 append( sb, "The location to search for providers.", 3 );
4193                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
4194                 append( sb, "", 0 );
4195 
4196                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
4197                 append( sb, "Directory holding the reports of the project.", 3 );
4198                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
4199                 append( sb, "", 0 );
4200 
4201                 append( sb, "resourceBundleDefaultLanguage", 2 );
4202                 append( sb, "The language of the default language properties file of generated resource bundle properties resources.", 3 );
4203                 append( sb, "Expression: ${jomc.resourceBundleDefaultLanguage}", 3 );
4204                 append( sb, "", 0 );
4205 
4206                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
4207                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
4208                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
4209                 append( sb, "", 0 );
4210 
4211                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
4212                 append( sb, "Controls processing of resource files.", 3 );
4213                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
4214                 append( sb, "", 0 );
4215 
4216                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
4217                 append( sb, "Directory holding the session related files of the project.", 3 );
4218                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
4219                 append( sb, "", 0 );
4220 
4221                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
4222                 append( sb, "Directory holding the source files of the project.", 3 );
4223                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
4224                 append( sb, "", 0 );
4225 
4226                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
4227                 append( sb, "The encoding to use for reading and writing files.", 3 );
4228                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
4229                 append( sb, "", 0 );
4230 
4231                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
4232                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
4233                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
4234                 append( sb, "", 0 );
4235 
4236                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
4237                 append( sb, "Controls processing of source code files.", 3 );
4238                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
4239                 append( sb, "", 0 );
4240 
4241                 append( sb, "templateEncoding", 2 );
4242                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4243                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
4244                 append( sb, "", 0 );
4245 
4246                 append( sb, "templateLocation", 2 );
4247                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
4248                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
4249                 append( sb, "", 0 );
4250 
4251                 append( sb, "templateParameterResources", 2 );
4252                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4253                 append( sb, "", 0 );
4254 
4255                 append( sb, "templateParameters", 2 );
4256                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
4257                 append( sb, "", 0 );
4258 
4259                 append( sb, "templateProfile", 2 );
4260                 append( sb, "The template profile to use when accessing templates.", 3 );
4261                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
4262                 append( sb, "", 0 );
4263 
4264                 append( sb, "testClassesDirectory", 2 );
4265                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4266                 append( sb, "", 0 );
4267 
4268                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
4269                 append( sb, "Name of the test module to process.", 3 );
4270                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
4271                 append( sb, "", 0 );
4272 
4273                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
4274                 append( sb, "Test output directory of the project.", 3 );
4275                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
4276                 append( sb, "", 0 );
4277 
4278                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
4279                 append( sb, "Directory holding the test source files of the project.", 3 );
4280                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
4281                 append( sb, "", 0 );
4282 
4283                 append( sb, "transformationOutputProperties", 2 );
4284                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
4285                 append( sb, "", 0 );
4286 
4287                 append( sb, "transformationParameterResources", 2 );
4288                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4289                 append( sb, "", 0 );
4290 
4291                 append( sb, "transformationParameters", 2 );
4292                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
4293                 append( sb, "", 0 );
4294 
4295                 append( sb, "transformerLocation", 2 );
4296                 append( sb, "The location to search for transformers.", 3 );
4297                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
4298                 append( sb, "", 0 );
4299 
4300                 append( sb, "velocityProperties", 2 );
4301                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
4302                 append( sb, "", 0 );
4303 
4304                 append( sb, "velocityPropertyResources", 2 );
4305                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4306                 append( sb, "", 0 );
4307 
4308                 append( sb, "verbose (Default: false)", 2 );
4309                 append( sb, "Controls verbosity of the plugin.", 3 );
4310                 append( sb, "Expression: ${jomc.verbose}", 3 );
4311                 append( sb, "", 0 );
4312 
4313                 append( sb, "writeMainResourcesExecutionStrategy (Default: once-per-session)", 2 );
4314                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
4315                 append( sb, "Expression: ${jomc.writeMainResourcesExecutionStrategy}", 3 );
4316                 append( sb, "", 0 );
4317             }
4318         }
4319 
4320         if ( goal == null || goal.length() <= 0 || "write-test-resources".equals( goal ) )
4321         {
4322             append( sb, "jomc:write-test-resources", 0 );
4323             append( sb, "Writes a projects\' test resource files.", 1 );
4324             append( sb, "", 0 );
4325             if ( detail )
4326             {
4327                 append( sb, "Available parameters:", 1 );
4328                 append( sb, "", 0 );
4329 
4330                 append( sb, "classesDirectory", 2 );
4331                 append( sb, "Directory holding the compiled class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'outputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4332                 append( sb, "", 0 );
4333 
4334                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
4335                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
4336                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
4337                 append( sb, "", 0 );
4338 
4339                 append( sb, "classProcessingEnabled (Default: true)", 2 );
4340                 append( sb, "Controls processing of class files.", 3 );
4341                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
4342                 append( sb, "", 0 );
4343 
4344                 append( sb, "defaultTemplateEncoding", 2 );
4345                 append( sb, "The encoding to use for reading templates.", 3 );
4346                 append( sb, "Expression: ${jomc.defaultTemplateEncoding}", 3 );
4347                 append( sb, "", 0 );
4348 
4349                 append( sb, "defaultTemplateProfile", 2 );
4350                 append( sb, "The default template profile to use when accessing templates.", 3 );
4351                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
4352                 append( sb, "", 0 );
4353 
4354                 append( sb, "indentation", 2 );
4355                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
4356                 append( sb, "Expression: ${jomc.indentation}", 3 );
4357                 append( sb, "", 0 );
4358 
4359                 append( sb, "lineSeparator", 2 );
4360                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
4361                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
4362                 append( sb, "", 0 );
4363 
4364                 append( sb, "locale", 2 );
4365                 append( sb, "The locale.\n<locale>\n\u00a0\u00a0<language>Lowercase\u00a0two-letter\u00a0ISO-639\u00a0code.</language>\n\u00a0\u00a0<country>Uppercase\u00a0two-letter\u00a0ISO-3166\u00a0code.</country>\n\u00a0\u00a0<variant>Vendor\u00a0and\u00a0browser\u00a0specific\u00a0code.</variant>\n</locale>\n", 3 );
4366                 append( sb, "", 0 );
4367 
4368                 append( sb, "model (Default: http://jomc.org/model)", 2 );
4369                 append( sb, "The identifier of the model to process.", 3 );
4370                 append( sb, "Expression: ${jomc.model}", 3 );
4371                 append( sb, "", 0 );
4372 
4373                 append( sb, "modelContextAttributes", 2 );
4374                 append( sb, "ModelContext attributes.\n<modelContextAttributes>\n\u00a0\u00a0<modelContextAttribute>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0attribute.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0attribute.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0attributes\'s\u00a0object.</type>\n\u00a0\u00a0</modelContextAttribute>\n</modelContextAttributes>\n", 3 );
4375                 append( sb, "", 0 );
4376 
4377                 append( sb, "modelContextFactoryClassName", 2 );
4378                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
4379                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
4380                 append( sb, "", 0 );
4381 
4382                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
4383                 append( sb, "Controls model object class path resolution.", 3 );
4384                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
4385                 append( sb, "", 0 );
4386 
4387                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
4388                 append( sb, "Controls processing of models.", 3 );
4389                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
4390                 append( sb, "", 0 );
4391 
4392                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
4393                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
4394                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
4395                 append( sb, "", 0 );
4396 
4397                 append( sb, "modletLocation", 2 );
4398                 append( sb, "The location to search for modlets.", 3 );
4399                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
4400                 append( sb, "", 0 );
4401 
4402                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
4403                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
4404                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
4405                 append( sb, "", 0 );
4406 
4407                 append( sb, "modletSchemaSystemId", 2 );
4408                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
4409                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
4410                 append( sb, "", 0 );
4411 
4412                 append( sb, "moduleLocation", 2 );
4413                 append( sb, "The location to search for modules.", 3 );
4414                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
4415                 append( sb, "", 0 );
4416 
4417                 append( sb, "moduleName (Default: ${project.name})", 2 );
4418                 append( sb, "Name of the module to process.", 3 );
4419                 append( sb, "Expression: ${jomc.moduleName}", 3 );
4420                 append( sb, "", 0 );
4421 
4422                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
4423                 append( sb, "Output directory of the project.", 3 );
4424                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
4425                 append( sb, "", 0 );
4426 
4427                 append( sb, "platformProviderLocation", 2 );
4428                 append( sb, "The location to search for platform providers.", 3 );
4429                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
4430                 append( sb, "", 0 );
4431 
4432                 append( sb, "providerLocation", 2 );
4433                 append( sb, "The location to search for providers.", 3 );
4434                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
4435                 append( sb, "", 0 );
4436 
4437                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
4438                 append( sb, "Directory holding the reports of the project.", 3 );
4439                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
4440                 append( sb, "", 0 );
4441 
4442                 append( sb, "resourceBundleDefaultLanguage", 2 );
4443                 append( sb, "The language of the default language properties file of generated resource bundle properties resources.", 3 );
4444                 append( sb, "Expression: ${jomc.resourceBundleDefaultLanguage}", 3 );
4445                 append( sb, "", 0 );
4446 
4447                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
4448                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
4449                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
4450                 append( sb, "", 0 );
4451 
4452                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
4453                 append( sb, "Controls processing of resource files.", 3 );
4454                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
4455                 append( sb, "", 0 );
4456 
4457                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
4458                 append( sb, "Directory holding the session related files of the project.", 3 );
4459                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
4460                 append( sb, "", 0 );
4461 
4462                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
4463                 append( sb, "Directory holding the source files of the project.", 3 );
4464                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
4465                 append( sb, "", 0 );
4466 
4467                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
4468                 append( sb, "The encoding to use for reading and writing files.", 3 );
4469                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
4470                 append( sb, "", 0 );
4471 
4472                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
4473                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
4474                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
4475                 append( sb, "", 0 );
4476 
4477                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
4478                 append( sb, "Controls processing of source code files.", 3 );
4479                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
4480                 append( sb, "", 0 );
4481 
4482                 append( sb, "templateEncoding", 2 );
4483                 append( sb, "The encoding to use for reading templates.\nDeprecated: As of JOMC 1.3, please use the \'defaultTemplateEncoding\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4484                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
4485                 append( sb, "", 0 );
4486 
4487                 append( sb, "templateLocation", 2 );
4488                 append( sb, "Location to search for templates in addition to searching the class path of the plugin.\nFirst an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a directory name relative to the base directory of the project. If that directory exists, that directory is used. If nothing is found at the given location, a warning message is logged.\n", 3 );
4489                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
4490                 append( sb, "", 0 );
4491 
4492                 append( sb, "templateParameterResources", 2 );
4493                 append( sb, "Template parameter resources.\n<templateParameterResources>\n\u00a0\u00a0<templateParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</templateParameterResource>\n</templateParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4494                 append( sb, "", 0 );
4495 
4496                 append( sb, "templateParameters", 2 );
4497                 append( sb, "Template parameters.\n<templateParameters>\n\u00a0\u00a0<templateParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</templateParameter>\n</templateParameters>\n", 3 );
4498                 append( sb, "", 0 );
4499 
4500                 append( sb, "templateProfile", 2 );
4501                 append( sb, "The template profile to use when accessing templates.", 3 );
4502                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
4503                 append( sb, "", 0 );
4504 
4505                 append( sb, "testClassesDirectory", 2 );
4506                 append( sb, "Directory holding the compiled test class files of the project.\nDeprecated: As of JOMC 1.1, please use the \'testOutputDirectory\' parameter. This parameter will be removed in version 2.0.\n", 3 );
4507                 append( sb, "", 0 );
4508 
4509                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
4510                 append( sb, "Name of the test module to process.", 3 );
4511                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
4512                 append( sb, "", 0 );
4513 
4514                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
4515                 append( sb, "Test output directory of the project.", 3 );
4516                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
4517                 append( sb, "", 0 );
4518 
4519                 append( sb, "testResourcesOutputDirectory (Default: ${project.build.directory}/generated-test-resources/jomc)", 2 );
4520                 append( sb, "Directory to write test resource files to.", 3 );
4521                 append( sb, "Expression: ${jomc.testResourcesOutputDirectory}", 3 );
4522                 append( sb, "", 0 );
4523 
4524                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
4525                 append( sb, "Directory holding the test source files of the project.", 3 );
4526                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
4527                 append( sb, "", 0 );
4528 
4529                 append( sb, "transformationOutputProperties", 2 );
4530                 append( sb, "Global transformation output properties.\n<transformationOutputProperties>\n\u00a0\u00a0<transformationOutputProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</transformationOutputProperty>\n</transformationOutputProperties>\n", 3 );
4531                 append( sb, "", 0 );
4532 
4533                 append( sb, "transformationParameterResources", 2 );
4534                 append( sb, "Global transformation parameter resources.\n<transformationParameterResources>\n\u00a0\u00a0<transformationParameterResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</transformationParameterResource>\n</transformationParameterResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4535                 append( sb, "", 0 );
4536 
4537                 append( sb, "transformationParameters", 2 );
4538                 append( sb, "Global transformation parameters.\n<transformationParameters>\n\u00a0\u00a0<transformationParameter>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0parameter.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0parameter.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0parameter\'s\u00a0object.</type>\n\u00a0\u00a0</transformationParameter>\n</transformationParameters>\n", 3 );
4539                 append( sb, "", 0 );
4540 
4541                 append( sb, "transformerLocation", 2 );
4542                 append( sb, "The location to search for transformers.", 3 );
4543                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
4544                 append( sb, "", 0 );
4545 
4546                 append( sb, "velocityProperties", 2 );
4547                 append( sb, "Velocity runtime properties.\n<velocityProperties>\n\u00a0\u00a0<velocityProperty>\n\u00a0\u00a0\u00a0\u00a0<key>The\u00a0name\u00a0of\u00a0the\u00a0property.</key>\n\u00a0\u00a0\u00a0\u00a0<value>The\u00a0value\u00a0of\u00a0the\u00a0property.</value>\n\u00a0\u00a0\u00a0\u00a0<type>The\u00a0name\u00a0of\u00a0the\u00a0class\u00a0of\u00a0the\u00a0properties\u00a0object.</type>\n\u00a0\u00a0</velocityProperty>\n</velocityProperties>\n", 3 );
4548                 append( sb, "", 0 );
4549 
4550                 append( sb, "velocityPropertyResources", 2 );
4551                 append( sb, "Velocity runtime property resources.\n<velocityPropertyResources>\n\u00a0\u00a0<velocityPropertyResource>\n\u00a0\u00a0\u00a0\u00a0<location>The\u00a0location\u00a0of\u00a0the\u00a0properties\u00a0resource.</location>\n\u00a0\u00a0\u00a0\u00a0<optional>Flag\u00a0indicating\u00a0the\u00a0properties\u00a0resource\u00a0is\u00a0optional.</optional>\n\u00a0\u00a0\u00a0\u00a0<format>The\u00a0format\u00a0of\u00a0the\u00a0properties\u00a0resource.</format>\n\u00a0\u00a0\u00a0\u00a0<connectTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</connectTimeout>\n\u00a0\u00a0\u00a0\u00a0<readTimeout>Timeout\u00a0value,\u00a0in\u00a0milliseconds.</readTimeout>\n\u00a0\u00a0</velocityPropertyResource>\n</velocityPropertyResources>\n\nThe location value is used to first search the class path of the plugin. If a class path resource is found, that resource is used. If no class path resource is found, an attempt is made to parse the location value to an URL. On successful parsing, that URL is used. Otherwise the location value is interpreted as a file name relative to the base directory of the project. If that file exists, that file is used. If nothing is found at the given location, depending on the optional flag, a warning message is logged or a build failure is produced.\n\nThe optional flag is used to flag the resource optional. When an optional resource is not found, a warning message is logged instead of producing a build failure.\nDefault value is: false\n\nThe format value is used to specify the format of the properties resource. Supported values are plain and xml.\nDefault value is: plain\n\nThe connectTimeout value is used to specify the timeout, in milliseconds, to be used when opening communications links to the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n\nThe readTimeout value is used to specify the timeout, in milliseconds, to be used when reading the resource. A timeout of zero is interpreted as an infinite timeout.\nDefault value is: 60000\n", 3 );
4552                 append( sb, "", 0 );
4553 
4554                 append( sb, "verbose (Default: false)", 2 );
4555                 append( sb, "Controls verbosity of the plugin.", 3 );
4556                 append( sb, "Expression: ${jomc.verbose}", 3 );
4557                 append( sb, "", 0 );
4558 
4559                 append( sb, "writeTestResourcesExecutionStrategy (Default: once-per-session)", 2 );
4560                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
4561                 append( sb, "Expression: ${jomc.writeTestResourcesExecutionStrategy}", 3 );
4562                 append( sb, "", 0 );
4563             }
4564         }
4565 
4566         if ( getLog().isInfoEnabled() )
4567         {
4568             getLog().info( sb.toString() );
4569         }
4570     }
4571 
4572     /**
4573      * <p>Repeat a String <code>n</code> times to form a new string.</p>
4574      *
4575      * @param str String to repeat
4576      * @param repeat number of times to repeat str
4577      * @return String with repeated String
4578      * @throws NegativeArraySizeException if <code>repeat < 0</code>
4579      * @throws NullPointerException if str is <code>null</code>
4580      */
4581     private static String repeat( String str, int repeat )
4582     {
4583         StringBuffer buffer = new StringBuffer( repeat * str.length() );
4584 
4585         for ( int i = 0; i < repeat; i++ )
4586         {
4587             buffer.append( str );
4588         }
4589 
4590         return buffer.toString();
4591     }
4592 
4593     /** 
4594      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
4595      * <b>Note</b>: The last character is always a new line.
4596      * 
4597      * @param sb The buffer to append the description, not <code>null</code>.
4598      * @param description The description, not <code>null</code>.
4599      * @param indent The base indentation level of each line, must not be negative.
4600      */
4601     private void append( StringBuffer sb, String description, int indent )
4602     {
4603         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
4604         {
4605             sb.append( it.next().toString() ).append( '\n' );
4606         }
4607     }
4608 
4609     /** 
4610      * Splits the specified text into lines of convenient display length.
4611      * 
4612      * @param text The text to split into lines, must not be <code>null</code>.
4613      * @param indent The base indentation level of each line, must not be negative.
4614      * @param indentSize The size of each indentation, must not be negative.
4615      * @param lineLength The length of the line, must not be negative.
4616      * @return The sequence of display lines, never <code>null</code>.
4617      * @throws NegativeArraySizeException if <code>indent < 0</code>
4618      */
4619     private static List toLines( String text, int indent, int indentSize, int lineLength )
4620     {
4621         List<String> lines = new ArrayList<String>();
4622 
4623         String ind = repeat( "\t", indent );
4624         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
4625         for ( int i = 0; i < plainLines.length; i++ )
4626         {
4627             toLines( lines, ind + plainLines[i], indentSize, lineLength );
4628         }
4629 
4630         return lines;
4631     }
4632 
4633     /** 
4634      * Adds the specified line to the output sequence, performing line wrapping if necessary.
4635      * 
4636      * @param lines The sequence of display lines, must not be <code>null</code>.
4637      * @param line The line to add, must not be <code>null</code>.
4638      * @param indentSize The size of each indentation, must not be negative.
4639      * @param lineLength The length of the line, must not be negative.
4640      */
4641     private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
4642     {
4643         int lineIndent = getIndentLevel( line );
4644         StringBuffer buf = new StringBuffer( 256 );
4645         String[] tokens = line.split( " +" );
4646         for ( int i = 0; i < tokens.length; i++ )
4647         {
4648             String token = tokens[i];
4649             if ( i > 0 )
4650             {
4651                 if ( buf.length() + token.length() >= lineLength )
4652                 {
4653                     lines.add( buf.toString() );
4654                     buf.setLength( 0 );
4655                     buf.append( repeat( " ", lineIndent * indentSize ) );
4656                 }
4657                 else
4658                 {
4659                     buf.append( ' ' );
4660                 }
4661             }
4662             for ( int j = 0; j < token.length(); j++ )
4663             {
4664                 char c = token.charAt( j );
4665                 if ( c == '\t' )
4666                 {
4667                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
4668                 }
4669                 else if ( c == '\u00A0' )
4670                 {
4671                     buf.append( ' ' );
4672                 }
4673                 else
4674                 {
4675                     buf.append( c );
4676                 }
4677             }
4678         }
4679         lines.add( buf.toString() );
4680     }
4681 
4682     /** 
4683      * Gets the indentation level of the specified line.
4684      * 
4685      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
4686      * @return The indentation level of the line.
4687      */
4688     private static int getIndentLevel( String line )
4689     {
4690         int level = 0;
4691         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
4692         {
4693             level++;
4694         }
4695         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
4696         {
4697             if ( line.charAt( i ) == '\t' )
4698             {
4699                 level++;
4700                 break;
4701             }
4702         }
4703         return level;
4704     }
4705 }