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 Thu Mar 15 07:15:06 CET 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.2.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, "defaultTemplateProfile", 2 );
196                 append( sb, "The default template profile to use when accessing templates.", 3 );
197                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
198                 append( sb, "", 0 );
199 
200                 append( sb, "indentation", 2 );
201                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
202                 append( sb, "Expression: ${jomc.indentation}", 3 );
203                 append( sb, "", 0 );
204 
205                 append( sb, "lineSeparator", 2 );
206                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
207                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
208                 append( sb, "", 0 );
209 
210                 append( sb, "locale", 2 );
211                 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 );
212                 append( sb, "", 0 );
213 
214                 append( sb, "model (Default: http://jomc.org/model)", 2 );
215                 append( sb, "The identifier of the model to process.", 3 );
216                 append( sb, "Expression: ${jomc.model}", 3 );
217                 append( sb, "", 0 );
218 
219                 append( sb, "modelContextAttributes", 2 );
220                 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 );
221                 append( sb, "", 0 );
222 
223                 append( sb, "modelContextFactoryClassName", 2 );
224                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
225                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
226                 append( sb, "", 0 );
227 
228                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
229                 append( sb, "Controls model object class path resolution.", 3 );
230                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
231                 append( sb, "", 0 );
232 
233                 append( sb, "modelObjectStylesheet", 2 );
234                 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 );
235                 append( sb, "", 0 );
236 
237                 append( sb, "modelObjectStylesheetResources", 2 );
238                 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 );
239                 append( sb, "", 0 );
240 
241                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
242                 append( sb, "Controls processing of models.", 3 );
243                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
244                 append( sb, "", 0 );
245 
246                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
247                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
248                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
249                 append( sb, "", 0 );
250 
251                 append( sb, "modletLocation", 2 );
252                 append( sb, "The location to search for modlets.", 3 );
253                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
254                 append( sb, "", 0 );
255 
256                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
257                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
258                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
259                 append( sb, "", 0 );
260 
261                 append( sb, "modletSchemaSystemId", 2 );
262                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
263                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
264                 append( sb, "", 0 );
265 
266                 append( sb, "moduleLocation", 2 );
267                 append( sb, "The location to search for modules.", 3 );
268                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
269                 append( sb, "", 0 );
270 
271                 append( sb, "moduleName (Default: ${project.name})", 2 );
272                 append( sb, "Name of the module to process.", 3 );
273                 append( sb, "Expression: ${jomc.moduleName}", 3 );
274                 append( sb, "", 0 );
275 
276                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
277                 append( sb, "Output directory of the project.", 3 );
278                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
279                 append( sb, "", 0 );
280 
281                 append( sb, "platformProviderLocation", 2 );
282                 append( sb, "The location to search for platform providers.", 3 );
283                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
284                 append( sb, "", 0 );
285 
286                 append( sb, "providerLocation", 2 );
287                 append( sb, "The location to search for providers.", 3 );
288                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
289                 append( sb, "", 0 );
290 
291                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
292                 append( sb, "Directory holding the reports of the project.", 3 );
293                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
294                 append( sb, "", 0 );
295 
296                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
297                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
298                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
299                 append( sb, "", 0 );
300 
301                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
302                 append( sb, "Controls processing of resource files.", 3 );
303                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
304                 append( sb, "", 0 );
305 
306                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
307                 append( sb, "Directory holding the session related files of the project.", 3 );
308                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
309                 append( sb, "", 0 );
310 
311                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
312                 append( sb, "Directory holding the source files of the project.", 3 );
313                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
314                 append( sb, "", 0 );
315 
316                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
317                 append( sb, "The encoding to use for reading and writing files.", 3 );
318                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
319                 append( sb, "", 0 );
320 
321                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
322                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
323                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
324                 append( sb, "", 0 );
325 
326                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
327                 append( sb, "Controls processing of source code files.", 3 );
328                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
329                 append( sb, "", 0 );
330 
331                 append( sb, "templateEncoding", 2 );
332                 append( sb, "The encoding to use for reading templates.", 3 );
333                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
334                 append( sb, "", 0 );
335 
336                 append( sb, "templateLocation", 2 );
337                 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 );
338                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
339                 append( sb, "", 0 );
340 
341                 append( sb, "templateParameterResources", 2 );
342                 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 );
343                 append( sb, "", 0 );
344 
345                 append( sb, "templateParameters", 2 );
346                 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 );
347                 append( sb, "", 0 );
348 
349                 append( sb, "templateProfile", 2 );
350                 append( sb, "The template profile to use when accessing templates.", 3 );
351                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
352                 append( sb, "", 0 );
353 
354                 append( sb, "testClassesDirectory", 2 );
355                 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 );
356                 append( sb, "", 0 );
357 
358                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
359                 append( sb, "Name of the test module to process.", 3 );
360                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
361                 append( sb, "", 0 );
362 
363                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
364                 append( sb, "Test output directory of the project.", 3 );
365                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
366                 append( sb, "", 0 );
367 
368                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
369                 append( sb, "Directory holding the test source files of the project.", 3 );
370                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
371                 append( sb, "", 0 );
372 
373                 append( sb, "transformationOutputProperties", 2 );
374                 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 );
375                 append( sb, "", 0 );
376 
377                 append( sb, "transformationParameterResources", 2 );
378                 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 );
379                 append( sb, "", 0 );
380 
381                 append( sb, "transformationParameters", 2 );
382                 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 );
383                 append( sb, "", 0 );
384 
385                 append( sb, "transformerLocation", 2 );
386                 append( sb, "The location to search for transformers.", 3 );
387                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
388                 append( sb, "", 0 );
389 
390                 append( sb, "velocityProperties", 2 );
391                 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 );
392                 append( sb, "", 0 );
393 
394                 append( sb, "velocityPropertyResources", 2 );
395                 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 );
396                 append( sb, "", 0 );
397 
398                 append( sb, "verbose (Default: false)", 2 );
399                 append( sb, "Controls verbosity of the plugin.", 3 );
400                 append( sb, "Expression: ${jomc.verbose}", 3 );
401                 append( sb, "", 0 );
402             }
403         }
404 
405         if ( goal == null || goal.length() <= 0 || "commit-test-classes".equals( goal ) )
406         {
407             append( sb, "jomc:commit-test-classes", 0 );
408             append( sb, "Commits model objects to a projects\' test classes.", 1 );
409             append( sb, "", 0 );
410             if ( detail )
411             {
412                 append( sb, "Available parameters:", 1 );
413                 append( sb, "", 0 );
414 
415                 append( sb, "classesDirectory", 2 );
416                 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 );
417                 append( sb, "", 0 );
418 
419                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
420                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
421                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
422                 append( sb, "", 0 );
423 
424                 append( sb, "classProcessingEnabled (Default: true)", 2 );
425                 append( sb, "Controls processing of class files.", 3 );
426                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
427                 append( sb, "", 0 );
428 
429                 append( sb, "commitTestClassesExecutionStrategy (Default: once-per-session)", 2 );
430                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
431                 append( sb, "Expression: ${jomc.commitTestClassesExecutionStrategy}", 3 );
432                 append( sb, "", 0 );
433 
434                 append( sb, "defaultTemplateProfile", 2 );
435                 append( sb, "The default template profile to use when accessing templates.", 3 );
436                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
437                 append( sb, "", 0 );
438 
439                 append( sb, "indentation", 2 );
440                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
441                 append( sb, "Expression: ${jomc.indentation}", 3 );
442                 append( sb, "", 0 );
443 
444                 append( sb, "lineSeparator", 2 );
445                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
446                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
447                 append( sb, "", 0 );
448 
449                 append( sb, "locale", 2 );
450                 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 );
451                 append( sb, "", 0 );
452 
453                 append( sb, "model (Default: http://jomc.org/model)", 2 );
454                 append( sb, "The identifier of the model to process.", 3 );
455                 append( sb, "Expression: ${jomc.model}", 3 );
456                 append( sb, "", 0 );
457 
458                 append( sb, "modelContextAttributes", 2 );
459                 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 );
460                 append( sb, "", 0 );
461 
462                 append( sb, "modelContextFactoryClassName", 2 );
463                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
464                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
465                 append( sb, "", 0 );
466 
467                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
468                 append( sb, "Controls model object class path resolution.", 3 );
469                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
470                 append( sb, "", 0 );
471 
472                 append( sb, "modelObjectStylesheet", 2 );
473                 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 );
474                 append( sb, "", 0 );
475 
476                 append( sb, "modelObjectStylesheetResources", 2 );
477                 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 );
478                 append( sb, "", 0 );
479 
480                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
481                 append( sb, "Controls processing of models.", 3 );
482                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
483                 append( sb, "", 0 );
484 
485                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
486                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
487                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
488                 append( sb, "", 0 );
489 
490                 append( sb, "modletLocation", 2 );
491                 append( sb, "The location to search for modlets.", 3 );
492                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
493                 append( sb, "", 0 );
494 
495                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
496                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
497                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
498                 append( sb, "", 0 );
499 
500                 append( sb, "modletSchemaSystemId", 2 );
501                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
502                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
503                 append( sb, "", 0 );
504 
505                 append( sb, "moduleLocation", 2 );
506                 append( sb, "The location to search for modules.", 3 );
507                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
508                 append( sb, "", 0 );
509 
510                 append( sb, "moduleName (Default: ${project.name})", 2 );
511                 append( sb, "Name of the module to process.", 3 );
512                 append( sb, "Expression: ${jomc.moduleName}", 3 );
513                 append( sb, "", 0 );
514 
515                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
516                 append( sb, "Output directory of the project.", 3 );
517                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
518                 append( sb, "", 0 );
519 
520                 append( sb, "platformProviderLocation", 2 );
521                 append( sb, "The location to search for platform providers.", 3 );
522                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
523                 append( sb, "", 0 );
524 
525                 append( sb, "providerLocation", 2 );
526                 append( sb, "The location to search for providers.", 3 );
527                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
528                 append( sb, "", 0 );
529 
530                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
531                 append( sb, "Directory holding the reports of the project.", 3 );
532                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
533                 append( sb, "", 0 );
534 
535                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
536                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
537                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
538                 append( sb, "", 0 );
539 
540                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
541                 append( sb, "Controls processing of resource files.", 3 );
542                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
543                 append( sb, "", 0 );
544 
545                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
546                 append( sb, "Directory holding the session related files of the project.", 3 );
547                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
548                 append( sb, "", 0 );
549 
550                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
551                 append( sb, "Directory holding the source files of the project.", 3 );
552                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
553                 append( sb, "", 0 );
554 
555                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
556                 append( sb, "The encoding to use for reading and writing files.", 3 );
557                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
558                 append( sb, "", 0 );
559 
560                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
561                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
562                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
563                 append( sb, "", 0 );
564 
565                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
566                 append( sb, "Controls processing of source code files.", 3 );
567                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
568                 append( sb, "", 0 );
569 
570                 append( sb, "templateEncoding", 2 );
571                 append( sb, "The encoding to use for reading templates.", 3 );
572                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
573                 append( sb, "", 0 );
574 
575                 append( sb, "templateLocation", 2 );
576                 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 );
577                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
578                 append( sb, "", 0 );
579 
580                 append( sb, "templateParameterResources", 2 );
581                 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 );
582                 append( sb, "", 0 );
583 
584                 append( sb, "templateParameters", 2 );
585                 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 );
586                 append( sb, "", 0 );
587 
588                 append( sb, "templateProfile", 2 );
589                 append( sb, "The template profile to use when accessing templates.", 3 );
590                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
591                 append( sb, "", 0 );
592 
593                 append( sb, "testClassesDirectory", 2 );
594                 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 );
595                 append( sb, "", 0 );
596 
597                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
598                 append( sb, "Name of the test module to process.", 3 );
599                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
600                 append( sb, "", 0 );
601 
602                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
603                 append( sb, "Test output directory of the project.", 3 );
604                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
605                 append( sb, "", 0 );
606 
607                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
608                 append( sb, "Directory holding the test source files of the project.", 3 );
609                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
610                 append( sb, "", 0 );
611 
612                 append( sb, "transformationOutputProperties", 2 );
613                 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 );
614                 append( sb, "", 0 );
615 
616                 append( sb, "transformationParameterResources", 2 );
617                 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 );
618                 append( sb, "", 0 );
619 
620                 append( sb, "transformationParameters", 2 );
621                 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 );
622                 append( sb, "", 0 );
623 
624                 append( sb, "transformerLocation", 2 );
625                 append( sb, "The location to search for transformers.", 3 );
626                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
627                 append( sb, "", 0 );
628 
629                 append( sb, "velocityProperties", 2 );
630                 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 );
631                 append( sb, "", 0 );
632 
633                 append( sb, "velocityPropertyResources", 2 );
634                 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 );
635                 append( sb, "", 0 );
636 
637                 append( sb, "verbose (Default: false)", 2 );
638                 append( sb, "Controls verbosity of the plugin.", 3 );
639                 append( sb, "Expression: ${jomc.verbose}", 3 );
640                 append( sb, "", 0 );
641             }
642         }
643 
644         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
645         {
646             append( sb, "jomc:help", 0 );
647             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 );
648             append( sb, "", 0 );
649             if ( detail )
650             {
651                 append( sb, "Available parameters:", 1 );
652                 append( sb, "", 0 );
653 
654                 append( sb, "detail (Default: false)", 2 );
655                 append( sb, "If true, display all settable properties for each goal.", 3 );
656                 append( sb, "Expression: ${detail}", 3 );
657                 append( sb, "", 0 );
658 
659                 append( sb, "goal", 2 );
660                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
661                 append( sb, "Expression: ${goal}", 3 );
662                 append( sb, "", 0 );
663 
664                 append( sb, "indentSize (Default: 2)", 2 );
665                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
666                 append( sb, "Expression: ${indentSize}", 3 );
667                 append( sb, "", 0 );
668 
669                 append( sb, "lineLength (Default: 80)", 2 );
670                 append( sb, "The maximum length of a display line, should be positive.", 3 );
671                 append( sb, "Expression: ${lineLength}", 3 );
672                 append( sb, "", 0 );
673             }
674         }
675 
676         if ( goal == null || goal.length() <= 0 || "manage-main-sources".equals( goal ) )
677         {
678             append( sb, "jomc:manage-main-sources", 0 );
679             append( sb, "Manages a projects\' main source files.", 1 );
680             append( sb, "", 0 );
681             if ( detail )
682             {
683                 append( sb, "Available parameters:", 1 );
684                 append( sb, "", 0 );
685 
686                 append( sb, "classesDirectory", 2 );
687                 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 );
688                 append( sb, "", 0 );
689 
690                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
691                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
692                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
693                 append( sb, "", 0 );
694 
695                 append( sb, "classProcessingEnabled (Default: true)", 2 );
696                 append( sb, "Controls processing of class files.", 3 );
697                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
698                 append( sb, "", 0 );
699 
700                 append( sb, "defaultTemplateProfile", 2 );
701                 append( sb, "The default template profile to use when accessing templates.", 3 );
702                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
703                 append( sb, "", 0 );
704 
705                 append( sb, "indentation", 2 );
706                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
707                 append( sb, "Expression: ${jomc.indentation}", 3 );
708                 append( sb, "", 0 );
709 
710                 append( sb, "lineSeparator", 2 );
711                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
712                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
713                 append( sb, "", 0 );
714 
715                 append( sb, "locale", 2 );
716                 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 );
717                 append( sb, "", 0 );
718 
719                 append( sb, "manageMainSourcesExecutionStrategy (Default: once-per-session)", 2 );
720                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
721                 append( sb, "Expression: ${jomc.manageMainSourcesExecutionStrategy}", 3 );
722                 append( sb, "", 0 );
723 
724                 append( sb, "model (Default: http://jomc.org/model)", 2 );
725                 append( sb, "The identifier of the model to process.", 3 );
726                 append( sb, "Expression: ${jomc.model}", 3 );
727                 append( sb, "", 0 );
728 
729                 append( sb, "modelContextAttributes", 2 );
730                 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 );
731                 append( sb, "", 0 );
732 
733                 append( sb, "modelContextFactoryClassName", 2 );
734                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
735                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
736                 append( sb, "", 0 );
737 
738                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
739                 append( sb, "Controls model object class path resolution.", 3 );
740                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
741                 append( sb, "", 0 );
742 
743                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
744                 append( sb, "Controls processing of models.", 3 );
745                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
746                 append( sb, "", 0 );
747 
748                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
749                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
750                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
751                 append( sb, "", 0 );
752 
753                 append( sb, "modletLocation", 2 );
754                 append( sb, "The location to search for modlets.", 3 );
755                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
756                 append( sb, "", 0 );
757 
758                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
759                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
760                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
761                 append( sb, "", 0 );
762 
763                 append( sb, "modletSchemaSystemId", 2 );
764                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
765                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
766                 append( sb, "", 0 );
767 
768                 append( sb, "moduleLocation", 2 );
769                 append( sb, "The location to search for modules.", 3 );
770                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
771                 append( sb, "", 0 );
772 
773                 append( sb, "moduleName (Default: ${project.name})", 2 );
774                 append( sb, "Name of the module to process.", 3 );
775                 append( sb, "Expression: ${jomc.moduleName}", 3 );
776                 append( sb, "", 0 );
777 
778                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
779                 append( sb, "Output directory of the project.", 3 );
780                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
781                 append( sb, "", 0 );
782 
783                 append( sb, "platformProviderLocation", 2 );
784                 append( sb, "The location to search for platform providers.", 3 );
785                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
786                 append( sb, "", 0 );
787 
788                 append( sb, "providerLocation", 2 );
789                 append( sb, "The location to search for providers.", 3 );
790                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
791                 append( sb, "", 0 );
792 
793                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
794                 append( sb, "Directory holding the reports of the project.", 3 );
795                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
796                 append( sb, "", 0 );
797 
798                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
799                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
800                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
801                 append( sb, "", 0 );
802 
803                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
804                 append( sb, "Controls processing of resource files.", 3 );
805                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
806                 append( sb, "", 0 );
807 
808                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
809                 append( sb, "Directory holding the session related files of the project.", 3 );
810                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
811                 append( sb, "", 0 );
812 
813                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
814                 append( sb, "Directory holding the source files of the project.", 3 );
815                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
816                 append( sb, "", 0 );
817 
818                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
819                 append( sb, "The encoding to use for reading and writing files.", 3 );
820                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
821                 append( sb, "", 0 );
822 
823                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
824                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
825                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
826                 append( sb, "", 0 );
827 
828                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
829                 append( sb, "Controls processing of source code files.", 3 );
830                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
831                 append( sb, "", 0 );
832 
833                 append( sb, "templateEncoding", 2 );
834                 append( sb, "The encoding to use for reading templates.", 3 );
835                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
836                 append( sb, "", 0 );
837 
838                 append( sb, "templateLocation", 2 );
839                 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 );
840                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
841                 append( sb, "", 0 );
842 
843                 append( sb, "templateParameterResources", 2 );
844                 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 );
845                 append( sb, "", 0 );
846 
847                 append( sb, "templateParameters", 2 );
848                 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 );
849                 append( sb, "", 0 );
850 
851                 append( sb, "templateProfile", 2 );
852                 append( sb, "The template profile to use when accessing templates.", 3 );
853                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
854                 append( sb, "", 0 );
855 
856                 append( sb, "testClassesDirectory", 2 );
857                 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 );
858                 append( sb, "", 0 );
859 
860                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
861                 append( sb, "Name of the test module to process.", 3 );
862                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
863                 append( sb, "", 0 );
864 
865                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
866                 append( sb, "Test output directory of the project.", 3 );
867                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
868                 append( sb, "", 0 );
869 
870                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
871                 append( sb, "Directory holding the test source files of the project.", 3 );
872                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
873                 append( sb, "", 0 );
874 
875                 append( sb, "transformationOutputProperties", 2 );
876                 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 );
877                 append( sb, "", 0 );
878 
879                 append( sb, "transformationParameterResources", 2 );
880                 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 );
881                 append( sb, "", 0 );
882 
883                 append( sb, "transformationParameters", 2 );
884                 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 );
885                 append( sb, "", 0 );
886 
887                 append( sb, "transformerLocation", 2 );
888                 append( sb, "The location to search for transformers.", 3 );
889                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
890                 append( sb, "", 0 );
891 
892                 append( sb, "velocityProperties", 2 );
893                 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 );
894                 append( sb, "", 0 );
895 
896                 append( sb, "velocityPropertyResources", 2 );
897                 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 );
898                 append( sb, "", 0 );
899 
900                 append( sb, "verbose (Default: false)", 2 );
901                 append( sb, "Controls verbosity of the plugin.", 3 );
902                 append( sb, "Expression: ${jomc.verbose}", 3 );
903                 append( sb, "", 0 );
904             }
905         }
906 
907         if ( goal == null || goal.length() <= 0 || "manage-test-sources".equals( goal ) )
908         {
909             append( sb, "jomc:manage-test-sources", 0 );
910             append( sb, "Manages a projects\' test source files.", 1 );
911             append( sb, "", 0 );
912             if ( detail )
913             {
914                 append( sb, "Available parameters:", 1 );
915                 append( sb, "", 0 );
916 
917                 append( sb, "classesDirectory", 2 );
918                 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 );
919                 append( sb, "", 0 );
920 
921                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
922                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
923                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
924                 append( sb, "", 0 );
925 
926                 append( sb, "classProcessingEnabled (Default: true)", 2 );
927                 append( sb, "Controls processing of class files.", 3 );
928                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
929                 append( sb, "", 0 );
930 
931                 append( sb, "defaultTemplateProfile", 2 );
932                 append( sb, "The default template profile to use when accessing templates.", 3 );
933                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
934                 append( sb, "", 0 );
935 
936                 append( sb, "indentation", 2 );
937                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
938                 append( sb, "Expression: ${jomc.indentation}", 3 );
939                 append( sb, "", 0 );
940 
941                 append( sb, "lineSeparator", 2 );
942                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
943                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
944                 append( sb, "", 0 );
945 
946                 append( sb, "locale", 2 );
947                 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 );
948                 append( sb, "", 0 );
949 
950                 append( sb, "manageTestSourcesExecutionStrategy (Default: once-per-session)", 2 );
951                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
952                 append( sb, "Expression: ${jomc.manageTestSourcesExecutionStrategy}", 3 );
953                 append( sb, "", 0 );
954 
955                 append( sb, "model (Default: http://jomc.org/model)", 2 );
956                 append( sb, "The identifier of the model to process.", 3 );
957                 append( sb, "Expression: ${jomc.model}", 3 );
958                 append( sb, "", 0 );
959 
960                 append( sb, "modelContextAttributes", 2 );
961                 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 );
962                 append( sb, "", 0 );
963 
964                 append( sb, "modelContextFactoryClassName", 2 );
965                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
966                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
967                 append( sb, "", 0 );
968 
969                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
970                 append( sb, "Controls model object class path resolution.", 3 );
971                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
972                 append( sb, "", 0 );
973 
974                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
975                 append( sb, "Controls processing of models.", 3 );
976                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
977                 append( sb, "", 0 );
978 
979                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
980                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
981                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
982                 append( sb, "", 0 );
983 
984                 append( sb, "modletLocation", 2 );
985                 append( sb, "The location to search for modlets.", 3 );
986                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
987                 append( sb, "", 0 );
988 
989                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
990                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
991                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
992                 append( sb, "", 0 );
993 
994                 append( sb, "modletSchemaSystemId", 2 );
995                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
996                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
997                 append( sb, "", 0 );
998 
999                 append( sb, "moduleLocation", 2 );
1000                 append( sb, "The location to search for modules.", 3 );
1001                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1002                 append( sb, "", 0 );
1003 
1004                 append( sb, "moduleName (Default: ${project.name})", 2 );
1005                 append( sb, "Name of the module to process.", 3 );
1006                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1007                 append( sb, "", 0 );
1008 
1009                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1010                 append( sb, "Output directory of the project.", 3 );
1011                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1012                 append( sb, "", 0 );
1013 
1014                 append( sb, "platformProviderLocation", 2 );
1015                 append( sb, "The location to search for platform providers.", 3 );
1016                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1017                 append( sb, "", 0 );
1018 
1019                 append( sb, "providerLocation", 2 );
1020                 append( sb, "The location to search for providers.", 3 );
1021                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1022                 append( sb, "", 0 );
1023 
1024                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1025                 append( sb, "Directory holding the reports of the project.", 3 );
1026                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1027                 append( sb, "", 0 );
1028 
1029                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1030                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1031                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1032                 append( sb, "", 0 );
1033 
1034                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1035                 append( sb, "Controls processing of resource files.", 3 );
1036                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1037                 append( sb, "", 0 );
1038 
1039                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1040                 append( sb, "Directory holding the session related files of the project.", 3 );
1041                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1042                 append( sb, "", 0 );
1043 
1044                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1045                 append( sb, "Directory holding the source files of the project.", 3 );
1046                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1047                 append( sb, "", 0 );
1048 
1049                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1050                 append( sb, "The encoding to use for reading and writing files.", 3 );
1051                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1052                 append( sb, "", 0 );
1053 
1054                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1055                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1056                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1057                 append( sb, "", 0 );
1058 
1059                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1060                 append( sb, "Controls processing of source code files.", 3 );
1061                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1062                 append( sb, "", 0 );
1063 
1064                 append( sb, "templateEncoding", 2 );
1065                 append( sb, "The encoding to use for reading templates.", 3 );
1066                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1067                 append( sb, "", 0 );
1068 
1069                 append( sb, "templateLocation", 2 );
1070                 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 );
1071                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1072                 append( sb, "", 0 );
1073 
1074                 append( sb, "templateParameterResources", 2 );
1075                 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 );
1076                 append( sb, "", 0 );
1077 
1078                 append( sb, "templateParameters", 2 );
1079                 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 );
1080                 append( sb, "", 0 );
1081 
1082                 append( sb, "templateProfile", 2 );
1083                 append( sb, "The template profile to use when accessing templates.", 3 );
1084                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1085                 append( sb, "", 0 );
1086 
1087                 append( sb, "testClassesDirectory", 2 );
1088                 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 );
1089                 append( sb, "", 0 );
1090 
1091                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1092                 append( sb, "Name of the test module to process.", 3 );
1093                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1094                 append( sb, "", 0 );
1095 
1096                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1097                 append( sb, "Test output directory of the project.", 3 );
1098                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1099                 append( sb, "", 0 );
1100 
1101                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1102                 append( sb, "Directory holding the test source files of the project.", 3 );
1103                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1104                 append( sb, "", 0 );
1105 
1106                 append( sb, "transformationOutputProperties", 2 );
1107                 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 );
1108                 append( sb, "", 0 );
1109 
1110                 append( sb, "transformationParameterResources", 2 );
1111                 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 );
1112                 append( sb, "", 0 );
1113 
1114                 append( sb, "transformationParameters", 2 );
1115                 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 );
1116                 append( sb, "", 0 );
1117 
1118                 append( sb, "transformerLocation", 2 );
1119                 append( sb, "The location to search for transformers.", 3 );
1120                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1121                 append( sb, "", 0 );
1122 
1123                 append( sb, "velocityProperties", 2 );
1124                 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 );
1125                 append( sb, "", 0 );
1126 
1127                 append( sb, "velocityPropertyResources", 2 );
1128                 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 );
1129                 append( sb, "", 0 );
1130 
1131                 append( sb, "verbose (Default: false)", 2 );
1132                 append( sb, "Controls verbosity of the plugin.", 3 );
1133                 append( sb, "Expression: ${jomc.verbose}", 3 );
1134                 append( sb, "", 0 );
1135             }
1136         }
1137 
1138         if ( goal == null || goal.length() <= 0 || "show-main-instance".equals( goal ) )
1139         {
1140             append( sb, "jomc:show-main-instance", 0 );
1141             append( sb, "Displays a project\'s main instance.", 1 );
1142             append( sb, "", 0 );
1143             if ( detail )
1144             {
1145                 append( sb, "Available parameters:", 1 );
1146                 append( sb, "", 0 );
1147 
1148                 append( sb, "classesDirectory", 2 );
1149                 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 );
1150                 append( sb, "", 0 );
1151 
1152                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1153                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1154                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1155                 append( sb, "", 0 );
1156 
1157                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1158                 append( sb, "Controls processing of class files.", 3 );
1159                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1160                 append( sb, "", 0 );
1161 
1162                 append( sb, "defaultTemplateProfile", 2 );
1163                 append( sb, "The default template profile to use when accessing templates.", 3 );
1164                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1165                 append( sb, "", 0 );
1166 
1167                 append( sb, "document", 2 );
1168                 append( sb, "File to write the model to.", 3 );
1169                 append( sb, "Expression: ${jomc.document}", 3 );
1170                 append( sb, "", 0 );
1171 
1172                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1173                 append( sb, "Encoding of the document to write.", 3 );
1174                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1175                 append( sb, "", 0 );
1176 
1177                 append( sb, "identifier", 2 );
1178                 append( sb, "Identifier of the instance to show.", 3 );
1179                 append( sb, "Required: Yes", 3 );
1180                 append( sb, "Expression: ${jomc.identifier}", 3 );
1181                 append( sb, "", 0 );
1182 
1183                 append( sb, "indentation", 2 );
1184                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1185                 append( sb, "Expression: ${jomc.indentation}", 3 );
1186                 append( sb, "", 0 );
1187 
1188                 append( sb, "lineSeparator", 2 );
1189                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1190                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1191                 append( sb, "", 0 );
1192 
1193                 append( sb, "locale", 2 );
1194                 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 );
1195                 append( sb, "", 0 );
1196 
1197                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1198                 append( sb, "The identifier of the model to process.", 3 );
1199                 append( sb, "Expression: ${jomc.model}", 3 );
1200                 append( sb, "", 0 );
1201 
1202                 append( sb, "modelContextAttributes", 2 );
1203                 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 );
1204                 append( sb, "", 0 );
1205 
1206                 append( sb, "modelContextFactoryClassName", 2 );
1207                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1208                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1209                 append( sb, "", 0 );
1210 
1211                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1212                 append( sb, "Controls model object class path resolution.", 3 );
1213                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1214                 append( sb, "", 0 );
1215 
1216                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1217                 append( sb, "Controls processing of models.", 3 );
1218                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1219                 append( sb, "", 0 );
1220 
1221                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1222                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1223                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1224                 append( sb, "", 0 );
1225 
1226                 append( sb, "modletLocation", 2 );
1227                 append( sb, "The location to search for modlets.", 3 );
1228                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1229                 append( sb, "", 0 );
1230 
1231                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1232                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1233                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1234                 append( sb, "", 0 );
1235 
1236                 append( sb, "modletSchemaSystemId", 2 );
1237                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1238                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1239                 append( sb, "", 0 );
1240 
1241                 append( sb, "moduleLocation", 2 );
1242                 append( sb, "The location to search for modules.", 3 );
1243                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1244                 append( sb, "", 0 );
1245 
1246                 append( sb, "moduleName (Default: ${project.name})", 2 );
1247                 append( sb, "Name of the module to process.", 3 );
1248                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1249                 append( sb, "", 0 );
1250 
1251                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1252                 append( sb, "Output directory of the project.", 3 );
1253                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1254                 append( sb, "", 0 );
1255 
1256                 append( sb, "platformProviderLocation", 2 );
1257                 append( sb, "The location to search for platform providers.", 3 );
1258                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1259                 append( sb, "", 0 );
1260 
1261                 append( sb, "providerLocation", 2 );
1262                 append( sb, "The location to search for providers.", 3 );
1263                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1264                 append( sb, "", 0 );
1265 
1266                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1267                 append( sb, "Directory holding the reports of the project.", 3 );
1268                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1269                 append( sb, "", 0 );
1270 
1271                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1272                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1273                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1274                 append( sb, "", 0 );
1275 
1276                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1277                 append( sb, "Controls processing of resource files.", 3 );
1278                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1279                 append( sb, "", 0 );
1280 
1281                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1282                 append( sb, "Directory holding the session related files of the project.", 3 );
1283                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1284                 append( sb, "", 0 );
1285 
1286                 append( sb, "showMainInstanceExecutionStrategy (Default: once-per-session)", 2 );
1287                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1288                 append( sb, "Expression: ${jomc.showMainInstanceExecutionStrategy}", 3 );
1289                 append( sb, "", 0 );
1290 
1291                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1292                 append( sb, "Directory holding the source files of the project.", 3 );
1293                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1294                 append( sb, "", 0 );
1295 
1296                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1297                 append( sb, "The encoding to use for reading and writing files.", 3 );
1298                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1299                 append( sb, "", 0 );
1300 
1301                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1302                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1303                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1304                 append( sb, "", 0 );
1305 
1306                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1307                 append( sb, "Controls processing of source code files.", 3 );
1308                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1309                 append( sb, "", 0 );
1310 
1311                 append( sb, "templateEncoding", 2 );
1312                 append( sb, "The encoding to use for reading templates.", 3 );
1313                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1314                 append( sb, "", 0 );
1315 
1316                 append( sb, "templateLocation", 2 );
1317                 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 );
1318                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1319                 append( sb, "", 0 );
1320 
1321                 append( sb, "templateParameterResources", 2 );
1322                 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 );
1323                 append( sb, "", 0 );
1324 
1325                 append( sb, "templateParameters", 2 );
1326                 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 );
1327                 append( sb, "", 0 );
1328 
1329                 append( sb, "templateProfile", 2 );
1330                 append( sb, "The template profile to use when accessing templates.", 3 );
1331                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1332                 append( sb, "", 0 );
1333 
1334                 append( sb, "testClassesDirectory", 2 );
1335                 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 );
1336                 append( sb, "", 0 );
1337 
1338                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1339                 append( sb, "Name of the test module to process.", 3 );
1340                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1341                 append( sb, "", 0 );
1342 
1343                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1344                 append( sb, "Test output directory of the project.", 3 );
1345                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1346                 append( sb, "", 0 );
1347 
1348                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1349                 append( sb, "Directory holding the test source files of the project.", 3 );
1350                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1351                 append( sb, "", 0 );
1352 
1353                 append( sb, "transformationOutputProperties", 2 );
1354                 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 );
1355                 append( sb, "", 0 );
1356 
1357                 append( sb, "transformationParameterResources", 2 );
1358                 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 );
1359                 append( sb, "", 0 );
1360 
1361                 append( sb, "transformationParameters", 2 );
1362                 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 );
1363                 append( sb, "", 0 );
1364 
1365                 append( sb, "transformerLocation", 2 );
1366                 append( sb, "The location to search for transformers.", 3 );
1367                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1368                 append( sb, "", 0 );
1369 
1370                 append( sb, "velocityProperties", 2 );
1371                 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 );
1372                 append( sb, "", 0 );
1373 
1374                 append( sb, "velocityPropertyResources", 2 );
1375                 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 );
1376                 append( sb, "", 0 );
1377 
1378                 append( sb, "verbose (Default: false)", 2 );
1379                 append( sb, "Controls verbosity of the plugin.", 3 );
1380                 append( sb, "Expression: ${jomc.verbose}", 3 );
1381                 append( sb, "", 0 );
1382             }
1383         }
1384 
1385         if ( goal == null || goal.length() <= 0 || "show-main-model".equals( goal ) )
1386         {
1387             append( sb, "jomc:show-main-model", 0 );
1388             append( sb, "Displays a project\'s main model.", 1 );
1389             append( sb, "", 0 );
1390             if ( detail )
1391             {
1392                 append( sb, "Available parameters:", 1 );
1393                 append( sb, "", 0 );
1394 
1395                 append( sb, "classesDirectory", 2 );
1396                 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 );
1397                 append( sb, "", 0 );
1398 
1399                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1400                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1401                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1402                 append( sb, "", 0 );
1403 
1404                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1405                 append( sb, "Controls processing of class files.", 3 );
1406                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1407                 append( sb, "", 0 );
1408 
1409                 append( sb, "defaultTemplateProfile", 2 );
1410                 append( sb, "The default template profile to use when accessing templates.", 3 );
1411                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1412                 append( sb, "", 0 );
1413 
1414                 append( sb, "document", 2 );
1415                 append( sb, "File to write the model to.", 3 );
1416                 append( sb, "Expression: ${jomc.document}", 3 );
1417                 append( sb, "", 0 );
1418 
1419                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1420                 append( sb, "Encoding of the document to write.", 3 );
1421                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1422                 append( sb, "", 0 );
1423 
1424                 append( sb, "indentation", 2 );
1425                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1426                 append( sb, "Expression: ${jomc.indentation}", 3 );
1427                 append( sb, "", 0 );
1428 
1429                 append( sb, "lineSeparator", 2 );
1430                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1431                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1432                 append( sb, "", 0 );
1433 
1434                 append( sb, "locale", 2 );
1435                 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 );
1436                 append( sb, "", 0 );
1437 
1438                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1439                 append( sb, "The identifier of the model to process.", 3 );
1440                 append( sb, "Expression: ${jomc.model}", 3 );
1441                 append( sb, "", 0 );
1442 
1443                 append( sb, "modelContextAttributes", 2 );
1444                 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 );
1445                 append( sb, "", 0 );
1446 
1447                 append( sb, "modelContextFactoryClassName", 2 );
1448                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1449                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1450                 append( sb, "", 0 );
1451 
1452                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1453                 append( sb, "Controls model object class path resolution.", 3 );
1454                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1455                 append( sb, "", 0 );
1456 
1457                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1458                 append( sb, "Controls processing of models.", 3 );
1459                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1460                 append( sb, "", 0 );
1461 
1462                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1463                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1464                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1465                 append( sb, "", 0 );
1466 
1467                 append( sb, "modletLocation", 2 );
1468                 append( sb, "The location to search for modlets.", 3 );
1469                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1470                 append( sb, "", 0 );
1471 
1472                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1473                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1474                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1475                 append( sb, "", 0 );
1476 
1477                 append( sb, "modletSchemaSystemId", 2 );
1478                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1479                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1480                 append( sb, "", 0 );
1481 
1482                 append( sb, "moduleLocation", 2 );
1483                 append( sb, "The location to search for modules.", 3 );
1484                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1485                 append( sb, "", 0 );
1486 
1487                 append( sb, "moduleName (Default: ${project.name})", 2 );
1488                 append( sb, "Name of the module to process.", 3 );
1489                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1490                 append( sb, "", 0 );
1491 
1492                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1493                 append( sb, "Output directory of the project.", 3 );
1494                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1495                 append( sb, "", 0 );
1496 
1497                 append( sb, "platformProviderLocation", 2 );
1498                 append( sb, "The location to search for platform providers.", 3 );
1499                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1500                 append( sb, "", 0 );
1501 
1502                 append( sb, "providerLocation", 2 );
1503                 append( sb, "The location to search for providers.", 3 );
1504                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1505                 append( sb, "", 0 );
1506 
1507                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1508                 append( sb, "Directory holding the reports of the project.", 3 );
1509                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1510                 append( sb, "", 0 );
1511 
1512                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1513                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1514                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1515                 append( sb, "", 0 );
1516 
1517                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1518                 append( sb, "Controls processing of resource files.", 3 );
1519                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1520                 append( sb, "", 0 );
1521 
1522                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1523                 append( sb, "Directory holding the session related files of the project.", 3 );
1524                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1525                 append( sb, "", 0 );
1526 
1527                 append( sb, "showMainModelExecutionStrategy (Default: once-per-session)", 2 );
1528                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1529                 append( sb, "Expression: ${jomc.showMainModelExecutionStrategy}", 3 );
1530                 append( sb, "", 0 );
1531 
1532                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1533                 append( sb, "Directory holding the source files of the project.", 3 );
1534                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1535                 append( sb, "", 0 );
1536 
1537                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1538                 append( sb, "The encoding to use for reading and writing files.", 3 );
1539                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1540                 append( sb, "", 0 );
1541 
1542                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1543                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1544                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1545                 append( sb, "", 0 );
1546 
1547                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1548                 append( sb, "Controls processing of source code files.", 3 );
1549                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1550                 append( sb, "", 0 );
1551 
1552                 append( sb, "templateEncoding", 2 );
1553                 append( sb, "The encoding to use for reading templates.", 3 );
1554                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1555                 append( sb, "", 0 );
1556 
1557                 append( sb, "templateLocation", 2 );
1558                 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 );
1559                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1560                 append( sb, "", 0 );
1561 
1562                 append( sb, "templateParameterResources", 2 );
1563                 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 );
1564                 append( sb, "", 0 );
1565 
1566                 append( sb, "templateParameters", 2 );
1567                 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 );
1568                 append( sb, "", 0 );
1569 
1570                 append( sb, "templateProfile", 2 );
1571                 append( sb, "The template profile to use when accessing templates.", 3 );
1572                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1573                 append( sb, "", 0 );
1574 
1575                 append( sb, "testClassesDirectory", 2 );
1576                 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 );
1577                 append( sb, "", 0 );
1578 
1579                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1580                 append( sb, "Name of the test module to process.", 3 );
1581                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1582                 append( sb, "", 0 );
1583 
1584                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1585                 append( sb, "Test output directory of the project.", 3 );
1586                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1587                 append( sb, "", 0 );
1588 
1589                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1590                 append( sb, "Directory holding the test source files of the project.", 3 );
1591                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1592                 append( sb, "", 0 );
1593 
1594                 append( sb, "transformationOutputProperties", 2 );
1595                 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 );
1596                 append( sb, "", 0 );
1597 
1598                 append( sb, "transformationParameterResources", 2 );
1599                 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 );
1600                 append( sb, "", 0 );
1601 
1602                 append( sb, "transformationParameters", 2 );
1603                 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 );
1604                 append( sb, "", 0 );
1605 
1606                 append( sb, "transformerLocation", 2 );
1607                 append( sb, "The location to search for transformers.", 3 );
1608                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1609                 append( sb, "", 0 );
1610 
1611                 append( sb, "velocityProperties", 2 );
1612                 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 );
1613                 append( sb, "", 0 );
1614 
1615                 append( sb, "velocityPropertyResources", 2 );
1616                 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 );
1617                 append( sb, "", 0 );
1618 
1619                 append( sb, "verbose (Default: false)", 2 );
1620                 append( sb, "Controls verbosity of the plugin.", 3 );
1621                 append( sb, "Expression: ${jomc.verbose}", 3 );
1622                 append( sb, "", 0 );
1623             }
1624         }
1625 
1626         if ( goal == null || goal.length() <= 0 || "show-main-specification".equals( goal ) )
1627         {
1628             append( sb, "jomc:show-main-specification", 0 );
1629             append( sb, "Displays a project\'s main specification.", 1 );
1630             append( sb, "", 0 );
1631             if ( detail )
1632             {
1633                 append( sb, "Available parameters:", 1 );
1634                 append( sb, "", 0 );
1635 
1636                 append( sb, "classesDirectory", 2 );
1637                 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 );
1638                 append( sb, "", 0 );
1639 
1640                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1641                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1642                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1643                 append( sb, "", 0 );
1644 
1645                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1646                 append( sb, "Controls processing of class files.", 3 );
1647                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1648                 append( sb, "", 0 );
1649 
1650                 append( sb, "defaultTemplateProfile", 2 );
1651                 append( sb, "The default template profile to use when accessing templates.", 3 );
1652                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1653                 append( sb, "", 0 );
1654 
1655                 append( sb, "document", 2 );
1656                 append( sb, "File to write the model to.", 3 );
1657                 append( sb, "Expression: ${jomc.document}", 3 );
1658                 append( sb, "", 0 );
1659 
1660                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1661                 append( sb, "Encoding of the document to write.", 3 );
1662                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1663                 append( sb, "", 0 );
1664 
1665                 append( sb, "identifier", 2 );
1666                 append( sb, "Identifier of the specification to show.", 3 );
1667                 append( sb, "Required: Yes", 3 );
1668                 append( sb, "Expression: ${jomc.identifier}", 3 );
1669                 append( sb, "", 0 );
1670 
1671                 append( sb, "indentation", 2 );
1672                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1673                 append( sb, "Expression: ${jomc.indentation}", 3 );
1674                 append( sb, "", 0 );
1675 
1676                 append( sb, "lineSeparator", 2 );
1677                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1678                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1679                 append( sb, "", 0 );
1680 
1681                 append( sb, "locale", 2 );
1682                 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 );
1683                 append( sb, "", 0 );
1684 
1685                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1686                 append( sb, "The identifier of the model to process.", 3 );
1687                 append( sb, "Expression: ${jomc.model}", 3 );
1688                 append( sb, "", 0 );
1689 
1690                 append( sb, "modelContextAttributes", 2 );
1691                 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 );
1692                 append( sb, "", 0 );
1693 
1694                 append( sb, "modelContextFactoryClassName", 2 );
1695                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1696                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1697                 append( sb, "", 0 );
1698 
1699                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1700                 append( sb, "Controls model object class path resolution.", 3 );
1701                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1702                 append( sb, "", 0 );
1703 
1704                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1705                 append( sb, "Controls processing of models.", 3 );
1706                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1707                 append( sb, "", 0 );
1708 
1709                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1710                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1711                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1712                 append( sb, "", 0 );
1713 
1714                 append( sb, "modletLocation", 2 );
1715                 append( sb, "The location to search for modlets.", 3 );
1716                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1717                 append( sb, "", 0 );
1718 
1719                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1720                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1721                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1722                 append( sb, "", 0 );
1723 
1724                 append( sb, "modletSchemaSystemId", 2 );
1725                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1726                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1727                 append( sb, "", 0 );
1728 
1729                 append( sb, "moduleLocation", 2 );
1730                 append( sb, "The location to search for modules.", 3 );
1731                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1732                 append( sb, "", 0 );
1733 
1734                 append( sb, "moduleName (Default: ${project.name})", 2 );
1735                 append( sb, "Name of the module to process.", 3 );
1736                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1737                 append( sb, "", 0 );
1738 
1739                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1740                 append( sb, "Output directory of the project.", 3 );
1741                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1742                 append( sb, "", 0 );
1743 
1744                 append( sb, "platformProviderLocation", 2 );
1745                 append( sb, "The location to search for platform providers.", 3 );
1746                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1747                 append( sb, "", 0 );
1748 
1749                 append( sb, "providerLocation", 2 );
1750                 append( sb, "The location to search for providers.", 3 );
1751                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1752                 append( sb, "", 0 );
1753 
1754                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
1755                 append( sb, "Directory holding the reports of the project.", 3 );
1756                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
1757                 append( sb, "", 0 );
1758 
1759                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
1760                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
1761                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
1762                 append( sb, "", 0 );
1763 
1764                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
1765                 append( sb, "Controls processing of resource files.", 3 );
1766                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
1767                 append( sb, "", 0 );
1768 
1769                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
1770                 append( sb, "Directory holding the session related files of the project.", 3 );
1771                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
1772                 append( sb, "", 0 );
1773 
1774                 append( sb, "showMainSpecificationExecutionStrategy (Default: once-per-session)", 2 );
1775                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
1776                 append( sb, "Expression: ${jomc.showMainSpecificationExecutionStrategy}", 3 );
1777                 append( sb, "", 0 );
1778 
1779                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
1780                 append( sb, "Directory holding the source files of the project.", 3 );
1781                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
1782                 append( sb, "", 0 );
1783 
1784                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
1785                 append( sb, "The encoding to use for reading and writing files.", 3 );
1786                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
1787                 append( sb, "", 0 );
1788 
1789                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
1790                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
1791                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
1792                 append( sb, "", 0 );
1793 
1794                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
1795                 append( sb, "Controls processing of source code files.", 3 );
1796                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
1797                 append( sb, "", 0 );
1798 
1799                 append( sb, "templateEncoding", 2 );
1800                 append( sb, "The encoding to use for reading templates.", 3 );
1801                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
1802                 append( sb, "", 0 );
1803 
1804                 append( sb, "templateLocation", 2 );
1805                 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 );
1806                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
1807                 append( sb, "", 0 );
1808 
1809                 append( sb, "templateParameterResources", 2 );
1810                 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 );
1811                 append( sb, "", 0 );
1812 
1813                 append( sb, "templateParameters", 2 );
1814                 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 );
1815                 append( sb, "", 0 );
1816 
1817                 append( sb, "templateProfile", 2 );
1818                 append( sb, "The template profile to use when accessing templates.", 3 );
1819                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
1820                 append( sb, "", 0 );
1821 
1822                 append( sb, "testClassesDirectory", 2 );
1823                 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 );
1824                 append( sb, "", 0 );
1825 
1826                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
1827                 append( sb, "Name of the test module to process.", 3 );
1828                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
1829                 append( sb, "", 0 );
1830 
1831                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
1832                 append( sb, "Test output directory of the project.", 3 );
1833                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
1834                 append( sb, "", 0 );
1835 
1836                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
1837                 append( sb, "Directory holding the test source files of the project.", 3 );
1838                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
1839                 append( sb, "", 0 );
1840 
1841                 append( sb, "transformationOutputProperties", 2 );
1842                 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 );
1843                 append( sb, "", 0 );
1844 
1845                 append( sb, "transformationParameterResources", 2 );
1846                 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 );
1847                 append( sb, "", 0 );
1848 
1849                 append( sb, "transformationParameters", 2 );
1850                 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 );
1851                 append( sb, "", 0 );
1852 
1853                 append( sb, "transformerLocation", 2 );
1854                 append( sb, "The location to search for transformers.", 3 );
1855                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
1856                 append( sb, "", 0 );
1857 
1858                 append( sb, "velocityProperties", 2 );
1859                 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 );
1860                 append( sb, "", 0 );
1861 
1862                 append( sb, "velocityPropertyResources", 2 );
1863                 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 );
1864                 append( sb, "", 0 );
1865 
1866                 append( sb, "verbose (Default: false)", 2 );
1867                 append( sb, "Controls verbosity of the plugin.", 3 );
1868                 append( sb, "Expression: ${jomc.verbose}", 3 );
1869                 append( sb, "", 0 );
1870             }
1871         }
1872 
1873         if ( goal == null || goal.length() <= 0 || "show-test-instance".equals( goal ) )
1874         {
1875             append( sb, "jomc:show-test-instance", 0 );
1876             append( sb, "Displays a project\'s test instance.", 1 );
1877             append( sb, "", 0 );
1878             if ( detail )
1879             {
1880                 append( sb, "Available parameters:", 1 );
1881                 append( sb, "", 0 );
1882 
1883                 append( sb, "classesDirectory", 2 );
1884                 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 );
1885                 append( sb, "", 0 );
1886 
1887                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
1888                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
1889                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
1890                 append( sb, "", 0 );
1891 
1892                 append( sb, "classProcessingEnabled (Default: true)", 2 );
1893                 append( sb, "Controls processing of class files.", 3 );
1894                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
1895                 append( sb, "", 0 );
1896 
1897                 append( sb, "defaultTemplateProfile", 2 );
1898                 append( sb, "The default template profile to use when accessing templates.", 3 );
1899                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
1900                 append( sb, "", 0 );
1901 
1902                 append( sb, "document", 2 );
1903                 append( sb, "File to write the model to.", 3 );
1904                 append( sb, "Expression: ${jomc.document}", 3 );
1905                 append( sb, "", 0 );
1906 
1907                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
1908                 append( sb, "Encoding of the document to write.", 3 );
1909                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
1910                 append( sb, "", 0 );
1911 
1912                 append( sb, "identifier", 2 );
1913                 append( sb, "Identifier of the instance to show.", 3 );
1914                 append( sb, "Required: Yes", 3 );
1915                 append( sb, "Expression: ${jomc.identifier}", 3 );
1916                 append( sb, "", 0 );
1917 
1918                 append( sb, "indentation", 2 );
1919                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
1920                 append( sb, "Expression: ${jomc.indentation}", 3 );
1921                 append( sb, "", 0 );
1922 
1923                 append( sb, "lineSeparator", 2 );
1924                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
1925                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
1926                 append( sb, "", 0 );
1927 
1928                 append( sb, "locale", 2 );
1929                 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 );
1930                 append( sb, "", 0 );
1931 
1932                 append( sb, "model (Default: http://jomc.org/model)", 2 );
1933                 append( sb, "The identifier of the model to process.", 3 );
1934                 append( sb, "Expression: ${jomc.model}", 3 );
1935                 append( sb, "", 0 );
1936 
1937                 append( sb, "modelContextAttributes", 2 );
1938                 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 );
1939                 append( sb, "", 0 );
1940 
1941                 append( sb, "modelContextFactoryClassName", 2 );
1942                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
1943                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
1944                 append( sb, "", 0 );
1945 
1946                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
1947                 append( sb, "Controls model object class path resolution.", 3 );
1948                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
1949                 append( sb, "", 0 );
1950 
1951                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
1952                 append( sb, "Controls processing of models.", 3 );
1953                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
1954                 append( sb, "", 0 );
1955 
1956                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
1957                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
1958                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
1959                 append( sb, "", 0 );
1960 
1961                 append( sb, "modletLocation", 2 );
1962                 append( sb, "The location to search for modlets.", 3 );
1963                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
1964                 append( sb, "", 0 );
1965 
1966                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
1967                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
1968                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
1969                 append( sb, "", 0 );
1970 
1971                 append( sb, "modletSchemaSystemId", 2 );
1972                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
1973                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
1974                 append( sb, "", 0 );
1975 
1976                 append( sb, "moduleLocation", 2 );
1977                 append( sb, "The location to search for modules.", 3 );
1978                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
1979                 append( sb, "", 0 );
1980 
1981                 append( sb, "moduleName (Default: ${project.name})", 2 );
1982                 append( sb, "Name of the module to process.", 3 );
1983                 append( sb, "Expression: ${jomc.moduleName}", 3 );
1984                 append( sb, "", 0 );
1985 
1986                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
1987                 append( sb, "Output directory of the project.", 3 );
1988                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
1989                 append( sb, "", 0 );
1990 
1991                 append( sb, "platformProviderLocation", 2 );
1992                 append( sb, "The location to search for platform providers.", 3 );
1993                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
1994                 append( sb, "", 0 );
1995 
1996                 append( sb, "providerLocation", 2 );
1997                 append( sb, "The location to search for providers.", 3 );
1998                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
1999                 append( sb, "", 0 );
2000 
2001                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2002                 append( sb, "Directory holding the reports of the project.", 3 );
2003                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2004                 append( sb, "", 0 );
2005 
2006                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2007                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2008                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2009                 append( sb, "", 0 );
2010 
2011                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2012                 append( sb, "Controls processing of resource files.", 3 );
2013                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2014                 append( sb, "", 0 );
2015 
2016                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2017                 append( sb, "Directory holding the session related files of the project.", 3 );
2018                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2019                 append( sb, "", 0 );
2020 
2021                 append( sb, "showTestInstanceExecutionStrategy (Default: once-per-session)", 2 );
2022                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2023                 append( sb, "Expression: ${jomc.showTestInstanceExecutionStrategy}", 3 );
2024                 append( sb, "", 0 );
2025 
2026                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2027                 append( sb, "Directory holding the source files of the project.", 3 );
2028                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2029                 append( sb, "", 0 );
2030 
2031                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2032                 append( sb, "The encoding to use for reading and writing files.", 3 );
2033                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2034                 append( sb, "", 0 );
2035 
2036                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2037                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2038                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2039                 append( sb, "", 0 );
2040 
2041                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2042                 append( sb, "Controls processing of source code files.", 3 );
2043                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2044                 append( sb, "", 0 );
2045 
2046                 append( sb, "templateEncoding", 2 );
2047                 append( sb, "The encoding to use for reading templates.", 3 );
2048                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2049                 append( sb, "", 0 );
2050 
2051                 append( sb, "templateLocation", 2 );
2052                 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 );
2053                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2054                 append( sb, "", 0 );
2055 
2056                 append( sb, "templateParameterResources", 2 );
2057                 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 );
2058                 append( sb, "", 0 );
2059 
2060                 append( sb, "templateParameters", 2 );
2061                 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 );
2062                 append( sb, "", 0 );
2063 
2064                 append( sb, "templateProfile", 2 );
2065                 append( sb, "The template profile to use when accessing templates.", 3 );
2066                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2067                 append( sb, "", 0 );
2068 
2069                 append( sb, "testClassesDirectory", 2 );
2070                 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 );
2071                 append( sb, "", 0 );
2072 
2073                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2074                 append( sb, "Name of the test module to process.", 3 );
2075                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2076                 append( sb, "", 0 );
2077 
2078                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2079                 append( sb, "Test output directory of the project.", 3 );
2080                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2081                 append( sb, "", 0 );
2082 
2083                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2084                 append( sb, "Directory holding the test source files of the project.", 3 );
2085                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2086                 append( sb, "", 0 );
2087 
2088                 append( sb, "transformationOutputProperties", 2 );
2089                 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 );
2090                 append( sb, "", 0 );
2091 
2092                 append( sb, "transformationParameterResources", 2 );
2093                 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 );
2094                 append( sb, "", 0 );
2095 
2096                 append( sb, "transformationParameters", 2 );
2097                 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 );
2098                 append( sb, "", 0 );
2099 
2100                 append( sb, "transformerLocation", 2 );
2101                 append( sb, "The location to search for transformers.", 3 );
2102                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2103                 append( sb, "", 0 );
2104 
2105                 append( sb, "velocityProperties", 2 );
2106                 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 );
2107                 append( sb, "", 0 );
2108 
2109                 append( sb, "velocityPropertyResources", 2 );
2110                 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 );
2111                 append( sb, "", 0 );
2112 
2113                 append( sb, "verbose (Default: false)", 2 );
2114                 append( sb, "Controls verbosity of the plugin.", 3 );
2115                 append( sb, "Expression: ${jomc.verbose}", 3 );
2116                 append( sb, "", 0 );
2117             }
2118         }
2119 
2120         if ( goal == null || goal.length() <= 0 || "show-test-model".equals( goal ) )
2121         {
2122             append( sb, "jomc:show-test-model", 0 );
2123             append( sb, "Displays a project\'s test model.", 1 );
2124             append( sb, "", 0 );
2125             if ( detail )
2126             {
2127                 append( sb, "Available parameters:", 1 );
2128                 append( sb, "", 0 );
2129 
2130                 append( sb, "classesDirectory", 2 );
2131                 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 );
2132                 append( sb, "", 0 );
2133 
2134                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2135                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2136                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2137                 append( sb, "", 0 );
2138 
2139                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2140                 append( sb, "Controls processing of class files.", 3 );
2141                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2142                 append( sb, "", 0 );
2143 
2144                 append( sb, "defaultTemplateProfile", 2 );
2145                 append( sb, "The default template profile to use when accessing templates.", 3 );
2146                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2147                 append( sb, "", 0 );
2148 
2149                 append( sb, "document", 2 );
2150                 append( sb, "File to write the model to.", 3 );
2151                 append( sb, "Expression: ${jomc.document}", 3 );
2152                 append( sb, "", 0 );
2153 
2154                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
2155                 append( sb, "Encoding of the document to write.", 3 );
2156                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
2157                 append( sb, "", 0 );
2158 
2159                 append( sb, "indentation", 2 );
2160                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2161                 append( sb, "Expression: ${jomc.indentation}", 3 );
2162                 append( sb, "", 0 );
2163 
2164                 append( sb, "lineSeparator", 2 );
2165                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2166                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2167                 append( sb, "", 0 );
2168 
2169                 append( sb, "locale", 2 );
2170                 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 );
2171                 append( sb, "", 0 );
2172 
2173                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2174                 append( sb, "The identifier of the model to process.", 3 );
2175                 append( sb, "Expression: ${jomc.model}", 3 );
2176                 append( sb, "", 0 );
2177 
2178                 append( sb, "modelContextAttributes", 2 );
2179                 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 );
2180                 append( sb, "", 0 );
2181 
2182                 append( sb, "modelContextFactoryClassName", 2 );
2183                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2184                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2185                 append( sb, "", 0 );
2186 
2187                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2188                 append( sb, "Controls model object class path resolution.", 3 );
2189                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2190                 append( sb, "", 0 );
2191 
2192                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2193                 append( sb, "Controls processing of models.", 3 );
2194                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2195                 append( sb, "", 0 );
2196 
2197                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2198                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2199                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2200                 append( sb, "", 0 );
2201 
2202                 append( sb, "modletLocation", 2 );
2203                 append( sb, "The location to search for modlets.", 3 );
2204                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2205                 append( sb, "", 0 );
2206 
2207                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2208                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2209                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2210                 append( sb, "", 0 );
2211 
2212                 append( sb, "modletSchemaSystemId", 2 );
2213                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2214                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2215                 append( sb, "", 0 );
2216 
2217                 append( sb, "moduleLocation", 2 );
2218                 append( sb, "The location to search for modules.", 3 );
2219                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2220                 append( sb, "", 0 );
2221 
2222                 append( sb, "moduleName (Default: ${project.name})", 2 );
2223                 append( sb, "Name of the module to process.", 3 );
2224                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2225                 append( sb, "", 0 );
2226 
2227                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2228                 append( sb, "Output directory of the project.", 3 );
2229                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2230                 append( sb, "", 0 );
2231 
2232                 append( sb, "platformProviderLocation", 2 );
2233                 append( sb, "The location to search for platform providers.", 3 );
2234                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2235                 append( sb, "", 0 );
2236 
2237                 append( sb, "providerLocation", 2 );
2238                 append( sb, "The location to search for providers.", 3 );
2239                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2240                 append( sb, "", 0 );
2241 
2242                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2243                 append( sb, "Directory holding the reports of the project.", 3 );
2244                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2245                 append( sb, "", 0 );
2246 
2247                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2248                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2249                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2250                 append( sb, "", 0 );
2251 
2252                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2253                 append( sb, "Controls processing of resource files.", 3 );
2254                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2255                 append( sb, "", 0 );
2256 
2257                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2258                 append( sb, "Directory holding the session related files of the project.", 3 );
2259                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2260                 append( sb, "", 0 );
2261 
2262                 append( sb, "showTestModelExecutionStrategy (Default: once-per-session)", 2 );
2263                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2264                 append( sb, "Expression: ${jomc.showTestModelExecutionStrategy}", 3 );
2265                 append( sb, "", 0 );
2266 
2267                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2268                 append( sb, "Directory holding the source files of the project.", 3 );
2269                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2270                 append( sb, "", 0 );
2271 
2272                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2273                 append( sb, "The encoding to use for reading and writing files.", 3 );
2274                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2275                 append( sb, "", 0 );
2276 
2277                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2278                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2279                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2280                 append( sb, "", 0 );
2281 
2282                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2283                 append( sb, "Controls processing of source code files.", 3 );
2284                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2285                 append( sb, "", 0 );
2286 
2287                 append( sb, "templateEncoding", 2 );
2288                 append( sb, "The encoding to use for reading templates.", 3 );
2289                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2290                 append( sb, "", 0 );
2291 
2292                 append( sb, "templateLocation", 2 );
2293                 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 );
2294                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2295                 append( sb, "", 0 );
2296 
2297                 append( sb, "templateParameterResources", 2 );
2298                 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 );
2299                 append( sb, "", 0 );
2300 
2301                 append( sb, "templateParameters", 2 );
2302                 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 );
2303                 append( sb, "", 0 );
2304 
2305                 append( sb, "templateProfile", 2 );
2306                 append( sb, "The template profile to use when accessing templates.", 3 );
2307                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2308                 append( sb, "", 0 );
2309 
2310                 append( sb, "testClassesDirectory", 2 );
2311                 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 );
2312                 append( sb, "", 0 );
2313 
2314                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2315                 append( sb, "Name of the test module to process.", 3 );
2316                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2317                 append( sb, "", 0 );
2318 
2319                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2320                 append( sb, "Test output directory of the project.", 3 );
2321                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2322                 append( sb, "", 0 );
2323 
2324                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2325                 append( sb, "Directory holding the test source files of the project.", 3 );
2326                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2327                 append( sb, "", 0 );
2328 
2329                 append( sb, "transformationOutputProperties", 2 );
2330                 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 );
2331                 append( sb, "", 0 );
2332 
2333                 append( sb, "transformationParameterResources", 2 );
2334                 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 );
2335                 append( sb, "", 0 );
2336 
2337                 append( sb, "transformationParameters", 2 );
2338                 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 );
2339                 append( sb, "", 0 );
2340 
2341                 append( sb, "transformerLocation", 2 );
2342                 append( sb, "The location to search for transformers.", 3 );
2343                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2344                 append( sb, "", 0 );
2345 
2346                 append( sb, "velocityProperties", 2 );
2347                 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 );
2348                 append( sb, "", 0 );
2349 
2350                 append( sb, "velocityPropertyResources", 2 );
2351                 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 );
2352                 append( sb, "", 0 );
2353 
2354                 append( sb, "verbose (Default: false)", 2 );
2355                 append( sb, "Controls verbosity of the plugin.", 3 );
2356                 append( sb, "Expression: ${jomc.verbose}", 3 );
2357                 append( sb, "", 0 );
2358             }
2359         }
2360 
2361         if ( goal == null || goal.length() <= 0 || "show-test-specification".equals( goal ) )
2362         {
2363             append( sb, "jomc:show-test-specification", 0 );
2364             append( sb, "Displays a project\'s test specification.", 1 );
2365             append( sb, "", 0 );
2366             if ( detail )
2367             {
2368                 append( sb, "Available parameters:", 1 );
2369                 append( sb, "", 0 );
2370 
2371                 append( sb, "classesDirectory", 2 );
2372                 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 );
2373                 append( sb, "", 0 );
2374 
2375                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2376                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2377                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2378                 append( sb, "", 0 );
2379 
2380                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2381                 append( sb, "Controls processing of class files.", 3 );
2382                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2383                 append( sb, "", 0 );
2384 
2385                 append( sb, "defaultTemplateProfile", 2 );
2386                 append( sb, "The default template profile to use when accessing templates.", 3 );
2387                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2388                 append( sb, "", 0 );
2389 
2390                 append( sb, "document", 2 );
2391                 append( sb, "File to write the model to.", 3 );
2392                 append( sb, "Expression: ${jomc.document}", 3 );
2393                 append( sb, "", 0 );
2394 
2395                 append( sb, "documentEncoding (Default: ${project.build.sourceEncoding})", 2 );
2396                 append( sb, "Encoding of the document to write.", 3 );
2397                 append( sb, "Expression: ${jomc.documentEncoding}", 3 );
2398                 append( sb, "", 0 );
2399 
2400                 append( sb, "identifier", 2 );
2401                 append( sb, "Identifier of the specification to show.", 3 );
2402                 append( sb, "Required: Yes", 3 );
2403                 append( sb, "Expression: ${jomc.identifier}", 3 );
2404                 append( sb, "", 0 );
2405 
2406                 append( sb, "indentation", 2 );
2407                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2408                 append( sb, "Expression: ${jomc.indentation}", 3 );
2409                 append( sb, "", 0 );
2410 
2411                 append( sb, "lineSeparator", 2 );
2412                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2413                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2414                 append( sb, "", 0 );
2415 
2416                 append( sb, "locale", 2 );
2417                 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 );
2418                 append( sb, "", 0 );
2419 
2420                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2421                 append( sb, "The identifier of the model to process.", 3 );
2422                 append( sb, "Expression: ${jomc.model}", 3 );
2423                 append( sb, "", 0 );
2424 
2425                 append( sb, "modelContextAttributes", 2 );
2426                 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 );
2427                 append( sb, "", 0 );
2428 
2429                 append( sb, "modelContextFactoryClassName", 2 );
2430                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2431                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2432                 append( sb, "", 0 );
2433 
2434                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2435                 append( sb, "Controls model object class path resolution.", 3 );
2436                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2437                 append( sb, "", 0 );
2438 
2439                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2440                 append( sb, "Controls processing of models.", 3 );
2441                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2442                 append( sb, "", 0 );
2443 
2444                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2445                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2446                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2447                 append( sb, "", 0 );
2448 
2449                 append( sb, "modletLocation", 2 );
2450                 append( sb, "The location to search for modlets.", 3 );
2451                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2452                 append( sb, "", 0 );
2453 
2454                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2455                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2456                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2457                 append( sb, "", 0 );
2458 
2459                 append( sb, "modletSchemaSystemId", 2 );
2460                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2461                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2462                 append( sb, "", 0 );
2463 
2464                 append( sb, "moduleLocation", 2 );
2465                 append( sb, "The location to search for modules.", 3 );
2466                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2467                 append( sb, "", 0 );
2468 
2469                 append( sb, "moduleName (Default: ${project.name})", 2 );
2470                 append( sb, "Name of the module to process.", 3 );
2471                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2472                 append( sb, "", 0 );
2473 
2474                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2475                 append( sb, "Output directory of the project.", 3 );
2476                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2477                 append( sb, "", 0 );
2478 
2479                 append( sb, "platformProviderLocation", 2 );
2480                 append( sb, "The location to search for platform providers.", 3 );
2481                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2482                 append( sb, "", 0 );
2483 
2484                 append( sb, "providerLocation", 2 );
2485                 append( sb, "The location to search for providers.", 3 );
2486                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2487                 append( sb, "", 0 );
2488 
2489                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2490                 append( sb, "Directory holding the reports of the project.", 3 );
2491                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2492                 append( sb, "", 0 );
2493 
2494                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2495                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2496                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2497                 append( sb, "", 0 );
2498 
2499                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2500                 append( sb, "Controls processing of resource files.", 3 );
2501                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2502                 append( sb, "", 0 );
2503 
2504                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2505                 append( sb, "Directory holding the session related files of the project.", 3 );
2506                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2507                 append( sb, "", 0 );
2508 
2509                 append( sb, "showTestSpecificationExecutionStrategy (Default: once-per-session)", 2 );
2510                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2511                 append( sb, "Expression: ${jomc.showTestSpecificationExecutionStrategy}", 3 );
2512                 append( sb, "", 0 );
2513 
2514                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2515                 append( sb, "Directory holding the source files of the project.", 3 );
2516                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2517                 append( sb, "", 0 );
2518 
2519                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2520                 append( sb, "The encoding to use for reading and writing files.", 3 );
2521                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2522                 append( sb, "", 0 );
2523 
2524                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2525                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2526                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2527                 append( sb, "", 0 );
2528 
2529                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2530                 append( sb, "Controls processing of source code files.", 3 );
2531                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2532                 append( sb, "", 0 );
2533 
2534                 append( sb, "templateEncoding", 2 );
2535                 append( sb, "The encoding to use for reading templates.", 3 );
2536                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2537                 append( sb, "", 0 );
2538 
2539                 append( sb, "templateLocation", 2 );
2540                 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 );
2541                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2542                 append( sb, "", 0 );
2543 
2544                 append( sb, "templateParameterResources", 2 );
2545                 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 );
2546                 append( sb, "", 0 );
2547 
2548                 append( sb, "templateParameters", 2 );
2549                 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 );
2550                 append( sb, "", 0 );
2551 
2552                 append( sb, "templateProfile", 2 );
2553                 append( sb, "The template profile to use when accessing templates.", 3 );
2554                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2555                 append( sb, "", 0 );
2556 
2557                 append( sb, "testClassesDirectory", 2 );
2558                 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 );
2559                 append( sb, "", 0 );
2560 
2561                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2562                 append( sb, "Name of the test module to process.", 3 );
2563                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2564                 append( sb, "", 0 );
2565 
2566                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2567                 append( sb, "Test output directory of the project.", 3 );
2568                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2569                 append( sb, "", 0 );
2570 
2571                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2572                 append( sb, "Directory holding the test source files of the project.", 3 );
2573                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2574                 append( sb, "", 0 );
2575 
2576                 append( sb, "transformationOutputProperties", 2 );
2577                 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 );
2578                 append( sb, "", 0 );
2579 
2580                 append( sb, "transformationParameterResources", 2 );
2581                 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 );
2582                 append( sb, "", 0 );
2583 
2584                 append( sb, "transformationParameters", 2 );
2585                 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 );
2586                 append( sb, "", 0 );
2587 
2588                 append( sb, "transformerLocation", 2 );
2589                 append( sb, "The location to search for transformers.", 3 );
2590                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2591                 append( sb, "", 0 );
2592 
2593                 append( sb, "velocityProperties", 2 );
2594                 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 );
2595                 append( sb, "", 0 );
2596 
2597                 append( sb, "velocityPropertyResources", 2 );
2598                 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 );
2599                 append( sb, "", 0 );
2600 
2601                 append( sb, "verbose (Default: false)", 2 );
2602                 append( sb, "Controls verbosity of the plugin.", 3 );
2603                 append( sb, "Expression: ${jomc.verbose}", 3 );
2604                 append( sb, "", 0 );
2605             }
2606         }
2607 
2608         if ( goal == null || goal.length() <= 0 || "validate-main-classes".equals( goal ) )
2609         {
2610             append( sb, "jomc:validate-main-classes", 0 );
2611             append( sb, "Validates a projects\' main class file model objects.", 1 );
2612             append( sb, "", 0 );
2613             if ( detail )
2614             {
2615                 append( sb, "Available parameters:", 1 );
2616                 append( sb, "", 0 );
2617 
2618                 append( sb, "classesDirectory", 2 );
2619                 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 );
2620                 append( sb, "", 0 );
2621 
2622                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2623                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2624                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2625                 append( sb, "", 0 );
2626 
2627                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2628                 append( sb, "Controls processing of class files.", 3 );
2629                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2630                 append( sb, "", 0 );
2631 
2632                 append( sb, "defaultTemplateProfile", 2 );
2633                 append( sb, "The default template profile to use when accessing templates.", 3 );
2634                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2635                 append( sb, "", 0 );
2636 
2637                 append( sb, "indentation", 2 );
2638                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2639                 append( sb, "Expression: ${jomc.indentation}", 3 );
2640                 append( sb, "", 0 );
2641 
2642                 append( sb, "lineSeparator", 2 );
2643                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2644                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2645                 append( sb, "", 0 );
2646 
2647                 append( sb, "locale", 2 );
2648                 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 );
2649                 append( sb, "", 0 );
2650 
2651                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2652                 append( sb, "The identifier of the model to process.", 3 );
2653                 append( sb, "Expression: ${jomc.model}", 3 );
2654                 append( sb, "", 0 );
2655 
2656                 append( sb, "modelContextAttributes", 2 );
2657                 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 );
2658                 append( sb, "", 0 );
2659 
2660                 append( sb, "modelContextFactoryClassName", 2 );
2661                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2662                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2663                 append( sb, "", 0 );
2664 
2665                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2666                 append( sb, "Controls model object class path resolution.", 3 );
2667                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2668                 append( sb, "", 0 );
2669 
2670                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2671                 append( sb, "Controls processing of models.", 3 );
2672                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2673                 append( sb, "", 0 );
2674 
2675                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2676                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2677                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2678                 append( sb, "", 0 );
2679 
2680                 append( sb, "modletLocation", 2 );
2681                 append( sb, "The location to search for modlets.", 3 );
2682                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2683                 append( sb, "", 0 );
2684 
2685                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2686                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2687                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2688                 append( sb, "", 0 );
2689 
2690                 append( sb, "modletSchemaSystemId", 2 );
2691                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2692                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2693                 append( sb, "", 0 );
2694 
2695                 append( sb, "moduleLocation", 2 );
2696                 append( sb, "The location to search for modules.", 3 );
2697                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2698                 append( sb, "", 0 );
2699 
2700                 append( sb, "moduleName (Default: ${project.name})", 2 );
2701                 append( sb, "Name of the module to process.", 3 );
2702                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2703                 append( sb, "", 0 );
2704 
2705                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2706                 append( sb, "Output directory of the project.", 3 );
2707                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2708                 append( sb, "", 0 );
2709 
2710                 append( sb, "platformProviderLocation", 2 );
2711                 append( sb, "The location to search for platform providers.", 3 );
2712                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2713                 append( sb, "", 0 );
2714 
2715                 append( sb, "providerLocation", 2 );
2716                 append( sb, "The location to search for providers.", 3 );
2717                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2718                 append( sb, "", 0 );
2719 
2720                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2721                 append( sb, "Directory holding the reports of the project.", 3 );
2722                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2723                 append( sb, "", 0 );
2724 
2725                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2726                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2727                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2728                 append( sb, "", 0 );
2729 
2730                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2731                 append( sb, "Controls processing of resource files.", 3 );
2732                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2733                 append( sb, "", 0 );
2734 
2735                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2736                 append( sb, "Directory holding the session related files of the project.", 3 );
2737                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2738                 append( sb, "", 0 );
2739 
2740                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2741                 append( sb, "Directory holding the source files of the project.", 3 );
2742                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2743                 append( sb, "", 0 );
2744 
2745                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2746                 append( sb, "The encoding to use for reading and writing files.", 3 );
2747                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2748                 append( sb, "", 0 );
2749 
2750                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2751                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2752                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2753                 append( sb, "", 0 );
2754 
2755                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2756                 append( sb, "Controls processing of source code files.", 3 );
2757                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2758                 append( sb, "", 0 );
2759 
2760                 append( sb, "templateEncoding", 2 );
2761                 append( sb, "The encoding to use for reading templates.", 3 );
2762                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2763                 append( sb, "", 0 );
2764 
2765                 append( sb, "templateLocation", 2 );
2766                 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 );
2767                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2768                 append( sb, "", 0 );
2769 
2770                 append( sb, "templateParameterResources", 2 );
2771                 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 );
2772                 append( sb, "", 0 );
2773 
2774                 append( sb, "templateParameters", 2 );
2775                 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 );
2776                 append( sb, "", 0 );
2777 
2778                 append( sb, "templateProfile", 2 );
2779                 append( sb, "The template profile to use when accessing templates.", 3 );
2780                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
2781                 append( sb, "", 0 );
2782 
2783                 append( sb, "testClassesDirectory", 2 );
2784                 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 );
2785                 append( sb, "", 0 );
2786 
2787                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
2788                 append( sb, "Name of the test module to process.", 3 );
2789                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
2790                 append( sb, "", 0 );
2791 
2792                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
2793                 append( sb, "Test output directory of the project.", 3 );
2794                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
2795                 append( sb, "", 0 );
2796 
2797                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
2798                 append( sb, "Directory holding the test source files of the project.", 3 );
2799                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
2800                 append( sb, "", 0 );
2801 
2802                 append( sb, "transformationOutputProperties", 2 );
2803                 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 );
2804                 append( sb, "", 0 );
2805 
2806                 append( sb, "transformationParameterResources", 2 );
2807                 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 );
2808                 append( sb, "", 0 );
2809 
2810                 append( sb, "transformationParameters", 2 );
2811                 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 );
2812                 append( sb, "", 0 );
2813 
2814                 append( sb, "transformerLocation", 2 );
2815                 append( sb, "The location to search for transformers.", 3 );
2816                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
2817                 append( sb, "", 0 );
2818 
2819                 append( sb, "validateMainClassesExecutionStrategy (Default: once-per-session)", 2 );
2820                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
2821                 append( sb, "Expression: ${jomc.validateMainClassesExecutionStrategy}", 3 );
2822                 append( sb, "", 0 );
2823 
2824                 append( sb, "velocityProperties", 2 );
2825                 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 );
2826                 append( sb, "", 0 );
2827 
2828                 append( sb, "velocityPropertyResources", 2 );
2829                 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 );
2830                 append( sb, "", 0 );
2831 
2832                 append( sb, "verbose (Default: false)", 2 );
2833                 append( sb, "Controls verbosity of the plugin.", 3 );
2834                 append( sb, "Expression: ${jomc.verbose}", 3 );
2835                 append( sb, "", 0 );
2836             }
2837         }
2838 
2839         if ( goal == null || goal.length() <= 0 || "validate-main-classpath".equals( goal ) )
2840         {
2841             append( sb, "jomc:validate-main-classpath", 0 );
2842             append( sb, "Validates a projects\' main classpath class file model objects.", 1 );
2843             append( sb, "", 0 );
2844             if ( detail )
2845             {
2846                 append( sb, "Available parameters:", 1 );
2847                 append( sb, "", 0 );
2848 
2849                 append( sb, "classesDirectory", 2 );
2850                 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 );
2851                 append( sb, "", 0 );
2852 
2853                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
2854                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
2855                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
2856                 append( sb, "", 0 );
2857 
2858                 append( sb, "classProcessingEnabled (Default: true)", 2 );
2859                 append( sb, "Controls processing of class files.", 3 );
2860                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
2861                 append( sb, "", 0 );
2862 
2863                 append( sb, "defaultTemplateProfile", 2 );
2864                 append( sb, "The default template profile to use when accessing templates.", 3 );
2865                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
2866                 append( sb, "", 0 );
2867 
2868                 append( sb, "indentation", 2 );
2869                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
2870                 append( sb, "Expression: ${jomc.indentation}", 3 );
2871                 append( sb, "", 0 );
2872 
2873                 append( sb, "lineSeparator", 2 );
2874                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
2875                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
2876                 append( sb, "", 0 );
2877 
2878                 append( sb, "locale", 2 );
2879                 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 );
2880                 append( sb, "", 0 );
2881 
2882                 append( sb, "model (Default: http://jomc.org/model)", 2 );
2883                 append( sb, "The identifier of the model to process.", 3 );
2884                 append( sb, "Expression: ${jomc.model}", 3 );
2885                 append( sb, "", 0 );
2886 
2887                 append( sb, "modelContextAttributes", 2 );
2888                 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 );
2889                 append( sb, "", 0 );
2890 
2891                 append( sb, "modelContextFactoryClassName", 2 );
2892                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
2893                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
2894                 append( sb, "", 0 );
2895 
2896                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
2897                 append( sb, "Controls model object class path resolution.", 3 );
2898                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
2899                 append( sb, "", 0 );
2900 
2901                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
2902                 append( sb, "Controls processing of models.", 3 );
2903                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
2904                 append( sb, "", 0 );
2905 
2906                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
2907                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
2908                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
2909                 append( sb, "", 0 );
2910 
2911                 append( sb, "modletLocation", 2 );
2912                 append( sb, "The location to search for modlets.", 3 );
2913                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
2914                 append( sb, "", 0 );
2915 
2916                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
2917                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
2918                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
2919                 append( sb, "", 0 );
2920 
2921                 append( sb, "modletSchemaSystemId", 2 );
2922                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
2923                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
2924                 append( sb, "", 0 );
2925 
2926                 append( sb, "moduleLocation", 2 );
2927                 append( sb, "The location to search for modules.", 3 );
2928                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
2929                 append( sb, "", 0 );
2930 
2931                 append( sb, "moduleName (Default: ${project.name})", 2 );
2932                 append( sb, "Name of the module to process.", 3 );
2933                 append( sb, "Expression: ${jomc.moduleName}", 3 );
2934                 append( sb, "", 0 );
2935 
2936                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
2937                 append( sb, "Output directory of the project.", 3 );
2938                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
2939                 append( sb, "", 0 );
2940 
2941                 append( sb, "platformProviderLocation", 2 );
2942                 append( sb, "The location to search for platform providers.", 3 );
2943                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
2944                 append( sb, "", 0 );
2945 
2946                 append( sb, "providerLocation", 2 );
2947                 append( sb, "The location to search for providers.", 3 );
2948                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
2949                 append( sb, "", 0 );
2950 
2951                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
2952                 append( sb, "Directory holding the reports of the project.", 3 );
2953                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
2954                 append( sb, "", 0 );
2955 
2956                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
2957                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
2958                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
2959                 append( sb, "", 0 );
2960 
2961                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
2962                 append( sb, "Controls processing of resource files.", 3 );
2963                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
2964                 append( sb, "", 0 );
2965 
2966                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
2967                 append( sb, "Directory holding the session related files of the project.", 3 );
2968                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
2969                 append( sb, "", 0 );
2970 
2971                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
2972                 append( sb, "Directory holding the source files of the project.", 3 );
2973                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
2974                 append( sb, "", 0 );
2975 
2976                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
2977                 append( sb, "The encoding to use for reading and writing files.", 3 );
2978                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
2979                 append( sb, "", 0 );
2980 
2981                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
2982                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
2983                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
2984                 append( sb, "", 0 );
2985 
2986                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
2987                 append( sb, "Controls processing of source code files.", 3 );
2988                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
2989                 append( sb, "", 0 );
2990 
2991                 append( sb, "templateEncoding", 2 );
2992                 append( sb, "The encoding to use for reading templates.", 3 );
2993                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
2994                 append( sb, "", 0 );
2995 
2996                 append( sb, "templateLocation", 2 );
2997                 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 );
2998                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
2999                 append( sb, "", 0 );
3000 
3001                 append( sb, "templateParameterResources", 2 );
3002                 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 );
3003                 append( sb, "", 0 );
3004 
3005                 append( sb, "templateParameters", 2 );
3006                 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 );
3007                 append( sb, "", 0 );
3008 
3009                 append( sb, "templateProfile", 2 );
3010                 append( sb, "The template profile to use when accessing templates.", 3 );
3011                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3012                 append( sb, "", 0 );
3013 
3014                 append( sb, "testClassesDirectory", 2 );
3015                 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 );
3016                 append( sb, "", 0 );
3017 
3018                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3019                 append( sb, "Name of the test module to process.", 3 );
3020                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3021                 append( sb, "", 0 );
3022 
3023                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3024                 append( sb, "Test output directory of the project.", 3 );
3025                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3026                 append( sb, "", 0 );
3027 
3028                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3029                 append( sb, "Directory holding the test source files of the project.", 3 );
3030                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3031                 append( sb, "", 0 );
3032 
3033                 append( sb, "transformationOutputProperties", 2 );
3034                 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 );
3035                 append( sb, "", 0 );
3036 
3037                 append( sb, "transformationParameterResources", 2 );
3038                 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 );
3039                 append( sb, "", 0 );
3040 
3041                 append( sb, "transformationParameters", 2 );
3042                 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 );
3043                 append( sb, "", 0 );
3044 
3045                 append( sb, "transformerLocation", 2 );
3046                 append( sb, "The location to search for transformers.", 3 );
3047                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3048                 append( sb, "", 0 );
3049 
3050                 append( sb, "validateMainClasspathExecutionStrategy (Default: once-per-session)", 2 );
3051                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3052                 append( sb, "Expression: ${jomc.validateMainClasspathExecutionStrategy}", 3 );
3053                 append( sb, "", 0 );
3054 
3055                 append( sb, "velocityProperties", 2 );
3056                 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 );
3057                 append( sb, "", 0 );
3058 
3059                 append( sb, "velocityPropertyResources", 2 );
3060                 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 );
3061                 append( sb, "", 0 );
3062 
3063                 append( sb, "verbose (Default: false)", 2 );
3064                 append( sb, "Controls verbosity of the plugin.", 3 );
3065                 append( sb, "Expression: ${jomc.verbose}", 3 );
3066                 append( sb, "", 0 );
3067             }
3068         }
3069 
3070         if ( goal == null || goal.length() <= 0 || "validate-main-model".equals( goal ) )
3071         {
3072             append( sb, "jomc:validate-main-model", 0 );
3073             append( sb, "Validates a project\'s main model.", 1 );
3074             append( sb, "", 0 );
3075             if ( detail )
3076             {
3077                 append( sb, "Available parameters:", 1 );
3078                 append( sb, "", 0 );
3079 
3080                 append( sb, "classesDirectory", 2 );
3081                 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 );
3082                 append( sb, "", 0 );
3083 
3084                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3085                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3086                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3087                 append( sb, "", 0 );
3088 
3089                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3090                 append( sb, "Controls processing of class files.", 3 );
3091                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3092                 append( sb, "", 0 );
3093 
3094                 append( sb, "defaultTemplateProfile", 2 );
3095                 append( sb, "The default template profile to use when accessing templates.", 3 );
3096                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3097                 append( sb, "", 0 );
3098 
3099                 append( sb, "indentation", 2 );
3100                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3101                 append( sb, "Expression: ${jomc.indentation}", 3 );
3102                 append( sb, "", 0 );
3103 
3104                 append( sb, "lineSeparator", 2 );
3105                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3106                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3107                 append( sb, "", 0 );
3108 
3109                 append( sb, "locale", 2 );
3110                 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 );
3111                 append( sb, "", 0 );
3112 
3113                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3114                 append( sb, "The identifier of the model to process.", 3 );
3115                 append( sb, "Expression: ${jomc.model}", 3 );
3116                 append( sb, "", 0 );
3117 
3118                 append( sb, "modelContextAttributes", 2 );
3119                 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 );
3120                 append( sb, "", 0 );
3121 
3122                 append( sb, "modelContextFactoryClassName", 2 );
3123                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3124                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3125                 append( sb, "", 0 );
3126 
3127                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3128                 append( sb, "Controls model object class path resolution.", 3 );
3129                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3130                 append( sb, "", 0 );
3131 
3132                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3133                 append( sb, "Controls processing of models.", 3 );
3134                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3135                 append( sb, "", 0 );
3136 
3137                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3138                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3139                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3140                 append( sb, "", 0 );
3141 
3142                 append( sb, "modletLocation", 2 );
3143                 append( sb, "The location to search for modlets.", 3 );
3144                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3145                 append( sb, "", 0 );
3146 
3147                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3148                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3149                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3150                 append( sb, "", 0 );
3151 
3152                 append( sb, "modletSchemaSystemId", 2 );
3153                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3154                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3155                 append( sb, "", 0 );
3156 
3157                 append( sb, "moduleLocation", 2 );
3158                 append( sb, "The location to search for modules.", 3 );
3159                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3160                 append( sb, "", 0 );
3161 
3162                 append( sb, "moduleName (Default: ${project.name})", 2 );
3163                 append( sb, "Name of the module to process.", 3 );
3164                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3165                 append( sb, "", 0 );
3166 
3167                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3168                 append( sb, "Output directory of the project.", 3 );
3169                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3170                 append( sb, "", 0 );
3171 
3172                 append( sb, "platformProviderLocation", 2 );
3173                 append( sb, "The location to search for platform providers.", 3 );
3174                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3175                 append( sb, "", 0 );
3176 
3177                 append( sb, "providerLocation", 2 );
3178                 append( sb, "The location to search for providers.", 3 );
3179                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3180                 append( sb, "", 0 );
3181 
3182                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3183                 append( sb, "Directory holding the reports of the project.", 3 );
3184                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3185                 append( sb, "", 0 );
3186 
3187                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3188                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3189                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3190                 append( sb, "", 0 );
3191 
3192                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3193                 append( sb, "Controls processing of resource files.", 3 );
3194                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3195                 append( sb, "", 0 );
3196 
3197                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3198                 append( sb, "Directory holding the session related files of the project.", 3 );
3199                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3200                 append( sb, "", 0 );
3201 
3202                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3203                 append( sb, "Directory holding the source files of the project.", 3 );
3204                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3205                 append( sb, "", 0 );
3206 
3207                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3208                 append( sb, "The encoding to use for reading and writing files.", 3 );
3209                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3210                 append( sb, "", 0 );
3211 
3212                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3213                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3214                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3215                 append( sb, "", 0 );
3216 
3217                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3218                 append( sb, "Controls processing of source code files.", 3 );
3219                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3220                 append( sb, "", 0 );
3221 
3222                 append( sb, "templateEncoding", 2 );
3223                 append( sb, "The encoding to use for reading templates.", 3 );
3224                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3225                 append( sb, "", 0 );
3226 
3227                 append( sb, "templateLocation", 2 );
3228                 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 );
3229                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3230                 append( sb, "", 0 );
3231 
3232                 append( sb, "templateParameterResources", 2 );
3233                 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 );
3234                 append( sb, "", 0 );
3235 
3236                 append( sb, "templateParameters", 2 );
3237                 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 );
3238                 append( sb, "", 0 );
3239 
3240                 append( sb, "templateProfile", 2 );
3241                 append( sb, "The template profile to use when accessing templates.", 3 );
3242                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3243                 append( sb, "", 0 );
3244 
3245                 append( sb, "testClassesDirectory", 2 );
3246                 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 );
3247                 append( sb, "", 0 );
3248 
3249                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3250                 append( sb, "Name of the test module to process.", 3 );
3251                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3252                 append( sb, "", 0 );
3253 
3254                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3255                 append( sb, "Test output directory of the project.", 3 );
3256                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3257                 append( sb, "", 0 );
3258 
3259                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3260                 append( sb, "Directory holding the test source files of the project.", 3 );
3261                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3262                 append( sb, "", 0 );
3263 
3264                 append( sb, "transformationOutputProperties", 2 );
3265                 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 );
3266                 append( sb, "", 0 );
3267 
3268                 append( sb, "transformationParameterResources", 2 );
3269                 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 );
3270                 append( sb, "", 0 );
3271 
3272                 append( sb, "transformationParameters", 2 );
3273                 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 );
3274                 append( sb, "", 0 );
3275 
3276                 append( sb, "transformerLocation", 2 );
3277                 append( sb, "The location to search for transformers.", 3 );
3278                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3279                 append( sb, "", 0 );
3280 
3281                 append( sb, "validateMainModelExecutionStrategy (Default: once-per-session)", 2 );
3282                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3283                 append( sb, "Expression: ${jomc.validateMainModelExecutionStrategy}", 3 );
3284                 append( sb, "", 0 );
3285 
3286                 append( sb, "velocityProperties", 2 );
3287                 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 );
3288                 append( sb, "", 0 );
3289 
3290                 append( sb, "velocityPropertyResources", 2 );
3291                 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 );
3292                 append( sb, "", 0 );
3293 
3294                 append( sb, "verbose (Default: false)", 2 );
3295                 append( sb, "Controls verbosity of the plugin.", 3 );
3296                 append( sb, "Expression: ${jomc.verbose}", 3 );
3297                 append( sb, "", 0 );
3298             }
3299         }
3300 
3301         if ( goal == null || goal.length() <= 0 || "validate-test-classes".equals( goal ) )
3302         {
3303             append( sb, "jomc:validate-test-classes", 0 );
3304             append( sb, "Validates a projects\' test class file model objects.", 1 );
3305             append( sb, "", 0 );
3306             if ( detail )
3307             {
3308                 append( sb, "Available parameters:", 1 );
3309                 append( sb, "", 0 );
3310 
3311                 append( sb, "classesDirectory", 2 );
3312                 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 );
3313                 append( sb, "", 0 );
3314 
3315                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3316                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3317                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3318                 append( sb, "", 0 );
3319 
3320                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3321                 append( sb, "Controls processing of class files.", 3 );
3322                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3323                 append( sb, "", 0 );
3324 
3325                 append( sb, "defaultTemplateProfile", 2 );
3326                 append( sb, "The default template profile to use when accessing templates.", 3 );
3327                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3328                 append( sb, "", 0 );
3329 
3330                 append( sb, "indentation", 2 );
3331                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3332                 append( sb, "Expression: ${jomc.indentation}", 3 );
3333                 append( sb, "", 0 );
3334 
3335                 append( sb, "lineSeparator", 2 );
3336                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3337                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3338                 append( sb, "", 0 );
3339 
3340                 append( sb, "locale", 2 );
3341                 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 );
3342                 append( sb, "", 0 );
3343 
3344                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3345                 append( sb, "The identifier of the model to process.", 3 );
3346                 append( sb, "Expression: ${jomc.model}", 3 );
3347                 append( sb, "", 0 );
3348 
3349                 append( sb, "modelContextAttributes", 2 );
3350                 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 );
3351                 append( sb, "", 0 );
3352 
3353                 append( sb, "modelContextFactoryClassName", 2 );
3354                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3355                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3356                 append( sb, "", 0 );
3357 
3358                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3359                 append( sb, "Controls model object class path resolution.", 3 );
3360                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3361                 append( sb, "", 0 );
3362 
3363                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3364                 append( sb, "Controls processing of models.", 3 );
3365                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3366                 append( sb, "", 0 );
3367 
3368                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3369                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3370                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3371                 append( sb, "", 0 );
3372 
3373                 append( sb, "modletLocation", 2 );
3374                 append( sb, "The location to search for modlets.", 3 );
3375                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3376                 append( sb, "", 0 );
3377 
3378                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3379                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3380                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3381                 append( sb, "", 0 );
3382 
3383                 append( sb, "modletSchemaSystemId", 2 );
3384                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3385                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3386                 append( sb, "", 0 );
3387 
3388                 append( sb, "moduleLocation", 2 );
3389                 append( sb, "The location to search for modules.", 3 );
3390                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3391                 append( sb, "", 0 );
3392 
3393                 append( sb, "moduleName (Default: ${project.name})", 2 );
3394                 append( sb, "Name of the module to process.", 3 );
3395                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3396                 append( sb, "", 0 );
3397 
3398                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3399                 append( sb, "Output directory of the project.", 3 );
3400                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3401                 append( sb, "", 0 );
3402 
3403                 append( sb, "platformProviderLocation", 2 );
3404                 append( sb, "The location to search for platform providers.", 3 );
3405                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3406                 append( sb, "", 0 );
3407 
3408                 append( sb, "providerLocation", 2 );
3409                 append( sb, "The location to search for providers.", 3 );
3410                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3411                 append( sb, "", 0 );
3412 
3413                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3414                 append( sb, "Directory holding the reports of the project.", 3 );
3415                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3416                 append( sb, "", 0 );
3417 
3418                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3419                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3420                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3421                 append( sb, "", 0 );
3422 
3423                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3424                 append( sb, "Controls processing of resource files.", 3 );
3425                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3426                 append( sb, "", 0 );
3427 
3428                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3429                 append( sb, "Directory holding the session related files of the project.", 3 );
3430                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3431                 append( sb, "", 0 );
3432 
3433                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3434                 append( sb, "Directory holding the source files of the project.", 3 );
3435                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3436                 append( sb, "", 0 );
3437 
3438                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3439                 append( sb, "The encoding to use for reading and writing files.", 3 );
3440                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3441                 append( sb, "", 0 );
3442 
3443                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3444                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3445                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3446                 append( sb, "", 0 );
3447 
3448                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3449                 append( sb, "Controls processing of source code files.", 3 );
3450                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3451                 append( sb, "", 0 );
3452 
3453                 append( sb, "templateEncoding", 2 );
3454                 append( sb, "The encoding to use for reading templates.", 3 );
3455                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3456                 append( sb, "", 0 );
3457 
3458                 append( sb, "templateLocation", 2 );
3459                 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 );
3460                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3461                 append( sb, "", 0 );
3462 
3463                 append( sb, "templateParameterResources", 2 );
3464                 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 );
3465                 append( sb, "", 0 );
3466 
3467                 append( sb, "templateParameters", 2 );
3468                 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 );
3469                 append( sb, "", 0 );
3470 
3471                 append( sb, "templateProfile", 2 );
3472                 append( sb, "The template profile to use when accessing templates.", 3 );
3473                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3474                 append( sb, "", 0 );
3475 
3476                 append( sb, "testClassesDirectory", 2 );
3477                 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 );
3478                 append( sb, "", 0 );
3479 
3480                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3481                 append( sb, "Name of the test module to process.", 3 );
3482                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3483                 append( sb, "", 0 );
3484 
3485                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3486                 append( sb, "Test output directory of the project.", 3 );
3487                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3488                 append( sb, "", 0 );
3489 
3490                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3491                 append( sb, "Directory holding the test source files of the project.", 3 );
3492                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3493                 append( sb, "", 0 );
3494 
3495                 append( sb, "transformationOutputProperties", 2 );
3496                 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 );
3497                 append( sb, "", 0 );
3498 
3499                 append( sb, "transformationParameterResources", 2 );
3500                 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 );
3501                 append( sb, "", 0 );
3502 
3503                 append( sb, "transformationParameters", 2 );
3504                 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 );
3505                 append( sb, "", 0 );
3506 
3507                 append( sb, "transformerLocation", 2 );
3508                 append( sb, "The location to search for transformers.", 3 );
3509                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3510                 append( sb, "", 0 );
3511 
3512                 append( sb, "validateTestClassesExecutionStrategy (Default: once-per-session)", 2 );
3513                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3514                 append( sb, "Expression: ${jomc.validateTestClassesExecutionStrategy}", 3 );
3515                 append( sb, "", 0 );
3516 
3517                 append( sb, "velocityProperties", 2 );
3518                 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 );
3519                 append( sb, "", 0 );
3520 
3521                 append( sb, "velocityPropertyResources", 2 );
3522                 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 );
3523                 append( sb, "", 0 );
3524 
3525                 append( sb, "verbose (Default: false)", 2 );
3526                 append( sb, "Controls verbosity of the plugin.", 3 );
3527                 append( sb, "Expression: ${jomc.verbose}", 3 );
3528                 append( sb, "", 0 );
3529             }
3530         }
3531 
3532         if ( goal == null || goal.length() <= 0 || "validate-test-classpath".equals( goal ) )
3533         {
3534             append( sb, "jomc:validate-test-classpath", 0 );
3535             append( sb, "Validates a projects\' test class path class file model objects.", 1 );
3536             append( sb, "", 0 );
3537             if ( detail )
3538             {
3539                 append( sb, "Available parameters:", 1 );
3540                 append( sb, "", 0 );
3541 
3542                 append( sb, "classesDirectory", 2 );
3543                 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 );
3544                 append( sb, "", 0 );
3545 
3546                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3547                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3548                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3549                 append( sb, "", 0 );
3550 
3551                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3552                 append( sb, "Controls processing of class files.", 3 );
3553                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3554                 append( sb, "", 0 );
3555 
3556                 append( sb, "defaultTemplateProfile", 2 );
3557                 append( sb, "The default template profile to use when accessing templates.", 3 );
3558                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3559                 append( sb, "", 0 );
3560 
3561                 append( sb, "indentation", 2 );
3562                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3563                 append( sb, "Expression: ${jomc.indentation}", 3 );
3564                 append( sb, "", 0 );
3565 
3566                 append( sb, "lineSeparator", 2 );
3567                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3568                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3569                 append( sb, "", 0 );
3570 
3571                 append( sb, "locale", 2 );
3572                 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 );
3573                 append( sb, "", 0 );
3574 
3575                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3576                 append( sb, "The identifier of the model to process.", 3 );
3577                 append( sb, "Expression: ${jomc.model}", 3 );
3578                 append( sb, "", 0 );
3579 
3580                 append( sb, "modelContextAttributes", 2 );
3581                 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 );
3582                 append( sb, "", 0 );
3583 
3584                 append( sb, "modelContextFactoryClassName", 2 );
3585                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3586                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3587                 append( sb, "", 0 );
3588 
3589                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3590                 append( sb, "Controls model object class path resolution.", 3 );
3591                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3592                 append( sb, "", 0 );
3593 
3594                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3595                 append( sb, "Controls processing of models.", 3 );
3596                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3597                 append( sb, "", 0 );
3598 
3599                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3600                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3601                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3602                 append( sb, "", 0 );
3603 
3604                 append( sb, "modletLocation", 2 );
3605                 append( sb, "The location to search for modlets.", 3 );
3606                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3607                 append( sb, "", 0 );
3608 
3609                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3610                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3611                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3612                 append( sb, "", 0 );
3613 
3614                 append( sb, "modletSchemaSystemId", 2 );
3615                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3616                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3617                 append( sb, "", 0 );
3618 
3619                 append( sb, "moduleLocation", 2 );
3620                 append( sb, "The location to search for modules.", 3 );
3621                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3622                 append( sb, "", 0 );
3623 
3624                 append( sb, "moduleName (Default: ${project.name})", 2 );
3625                 append( sb, "Name of the module to process.", 3 );
3626                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3627                 append( sb, "", 0 );
3628 
3629                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3630                 append( sb, "Output directory of the project.", 3 );
3631                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3632                 append( sb, "", 0 );
3633 
3634                 append( sb, "platformProviderLocation", 2 );
3635                 append( sb, "The location to search for platform providers.", 3 );
3636                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3637                 append( sb, "", 0 );
3638 
3639                 append( sb, "providerLocation", 2 );
3640                 append( sb, "The location to search for providers.", 3 );
3641                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3642                 append( sb, "", 0 );
3643 
3644                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3645                 append( sb, "Directory holding the reports of the project.", 3 );
3646                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3647                 append( sb, "", 0 );
3648 
3649                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3650                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3651                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3652                 append( sb, "", 0 );
3653 
3654                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3655                 append( sb, "Controls processing of resource files.", 3 );
3656                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3657                 append( sb, "", 0 );
3658 
3659                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3660                 append( sb, "Directory holding the session related files of the project.", 3 );
3661                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3662                 append( sb, "", 0 );
3663 
3664                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3665                 append( sb, "Directory holding the source files of the project.", 3 );
3666                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3667                 append( sb, "", 0 );
3668 
3669                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3670                 append( sb, "The encoding to use for reading and writing files.", 3 );
3671                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3672                 append( sb, "", 0 );
3673 
3674                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3675                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3676                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3677                 append( sb, "", 0 );
3678 
3679                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3680                 append( sb, "Controls processing of source code files.", 3 );
3681                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3682                 append( sb, "", 0 );
3683 
3684                 append( sb, "templateEncoding", 2 );
3685                 append( sb, "The encoding to use for reading templates.", 3 );
3686                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3687                 append( sb, "", 0 );
3688 
3689                 append( sb, "templateLocation", 2 );
3690                 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 );
3691                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3692                 append( sb, "", 0 );
3693 
3694                 append( sb, "templateParameterResources", 2 );
3695                 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 );
3696                 append( sb, "", 0 );
3697 
3698                 append( sb, "templateParameters", 2 );
3699                 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 );
3700                 append( sb, "", 0 );
3701 
3702                 append( sb, "templateProfile", 2 );
3703                 append( sb, "The template profile to use when accessing templates.", 3 );
3704                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3705                 append( sb, "", 0 );
3706 
3707                 append( sb, "testClassesDirectory", 2 );
3708                 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 );
3709                 append( sb, "", 0 );
3710 
3711                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3712                 append( sb, "Name of the test module to process.", 3 );
3713                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3714                 append( sb, "", 0 );
3715 
3716                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3717                 append( sb, "Test output directory of the project.", 3 );
3718                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3719                 append( sb, "", 0 );
3720 
3721                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3722                 append( sb, "Directory holding the test source files of the project.", 3 );
3723                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3724                 append( sb, "", 0 );
3725 
3726                 append( sb, "transformationOutputProperties", 2 );
3727                 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 );
3728                 append( sb, "", 0 );
3729 
3730                 append( sb, "transformationParameterResources", 2 );
3731                 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 );
3732                 append( sb, "", 0 );
3733 
3734                 append( sb, "transformationParameters", 2 );
3735                 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 );
3736                 append( sb, "", 0 );
3737 
3738                 append( sb, "transformerLocation", 2 );
3739                 append( sb, "The location to search for transformers.", 3 );
3740                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3741                 append( sb, "", 0 );
3742 
3743                 append( sb, "validateTestClasspathExecutionStrategy (Default: once-per-session)", 2 );
3744                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3745                 append( sb, "Expression: ${jomc.validateTestClasspathExecutionStrategy}", 3 );
3746                 append( sb, "", 0 );
3747 
3748                 append( sb, "velocityProperties", 2 );
3749                 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 );
3750                 append( sb, "", 0 );
3751 
3752                 append( sb, "velocityPropertyResources", 2 );
3753                 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 );
3754                 append( sb, "", 0 );
3755 
3756                 append( sb, "verbose (Default: false)", 2 );
3757                 append( sb, "Controls verbosity of the plugin.", 3 );
3758                 append( sb, "Expression: ${jomc.verbose}", 3 );
3759                 append( sb, "", 0 );
3760             }
3761         }
3762 
3763         if ( goal == null || goal.length() <= 0 || "validate-test-model".equals( goal ) )
3764         {
3765             append( sb, "jomc:validate-test-model", 0 );
3766             append( sb, "Validates a project\'s test model.", 1 );
3767             append( sb, "", 0 );
3768             if ( detail )
3769             {
3770                 append( sb, "Available parameters:", 1 );
3771                 append( sb, "", 0 );
3772 
3773                 append( sb, "classesDirectory", 2 );
3774                 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 );
3775                 append( sb, "", 0 );
3776 
3777                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
3778                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
3779                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
3780                 append( sb, "", 0 );
3781 
3782                 append( sb, "classProcessingEnabled (Default: true)", 2 );
3783                 append( sb, "Controls processing of class files.", 3 );
3784                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
3785                 append( sb, "", 0 );
3786 
3787                 append( sb, "defaultTemplateProfile", 2 );
3788                 append( sb, "The default template profile to use when accessing templates.", 3 );
3789                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
3790                 append( sb, "", 0 );
3791 
3792                 append( sb, "indentation", 2 );
3793                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
3794                 append( sb, "Expression: ${jomc.indentation}", 3 );
3795                 append( sb, "", 0 );
3796 
3797                 append( sb, "lineSeparator", 2 );
3798                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
3799                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
3800                 append( sb, "", 0 );
3801 
3802                 append( sb, "locale", 2 );
3803                 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 );
3804                 append( sb, "", 0 );
3805 
3806                 append( sb, "model (Default: http://jomc.org/model)", 2 );
3807                 append( sb, "The identifier of the model to process.", 3 );
3808                 append( sb, "Expression: ${jomc.model}", 3 );
3809                 append( sb, "", 0 );
3810 
3811                 append( sb, "modelContextAttributes", 2 );
3812                 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 );
3813                 append( sb, "", 0 );
3814 
3815                 append( sb, "modelContextFactoryClassName", 2 );
3816                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
3817                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
3818                 append( sb, "", 0 );
3819 
3820                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
3821                 append( sb, "Controls model object class path resolution.", 3 );
3822                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
3823                 append( sb, "", 0 );
3824 
3825                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
3826                 append( sb, "Controls processing of models.", 3 );
3827                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
3828                 append( sb, "", 0 );
3829 
3830                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
3831                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
3832                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
3833                 append( sb, "", 0 );
3834 
3835                 append( sb, "modletLocation", 2 );
3836                 append( sb, "The location to search for modlets.", 3 );
3837                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
3838                 append( sb, "", 0 );
3839 
3840                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
3841                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
3842                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
3843                 append( sb, "", 0 );
3844 
3845                 append( sb, "modletSchemaSystemId", 2 );
3846                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
3847                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
3848                 append( sb, "", 0 );
3849 
3850                 append( sb, "moduleLocation", 2 );
3851                 append( sb, "The location to search for modules.", 3 );
3852                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
3853                 append( sb, "", 0 );
3854 
3855                 append( sb, "moduleName (Default: ${project.name})", 2 );
3856                 append( sb, "Name of the module to process.", 3 );
3857                 append( sb, "Expression: ${jomc.moduleName}", 3 );
3858                 append( sb, "", 0 );
3859 
3860                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
3861                 append( sb, "Output directory of the project.", 3 );
3862                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
3863                 append( sb, "", 0 );
3864 
3865                 append( sb, "platformProviderLocation", 2 );
3866                 append( sb, "The location to search for platform providers.", 3 );
3867                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
3868                 append( sb, "", 0 );
3869 
3870                 append( sb, "providerLocation", 2 );
3871                 append( sb, "The location to search for providers.", 3 );
3872                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
3873                 append( sb, "", 0 );
3874 
3875                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
3876                 append( sb, "Directory holding the reports of the project.", 3 );
3877                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
3878                 append( sb, "", 0 );
3879 
3880                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
3881                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
3882                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
3883                 append( sb, "", 0 );
3884 
3885                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
3886                 append( sb, "Controls processing of resource files.", 3 );
3887                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
3888                 append( sb, "", 0 );
3889 
3890                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
3891                 append( sb, "Directory holding the session related files of the project.", 3 );
3892                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
3893                 append( sb, "", 0 );
3894 
3895                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
3896                 append( sb, "Directory holding the source files of the project.", 3 );
3897                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
3898                 append( sb, "", 0 );
3899 
3900                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
3901                 append( sb, "The encoding to use for reading and writing files.", 3 );
3902                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
3903                 append( sb, "", 0 );
3904 
3905                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
3906                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
3907                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
3908                 append( sb, "", 0 );
3909 
3910                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
3911                 append( sb, "Controls processing of source code files.", 3 );
3912                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
3913                 append( sb, "", 0 );
3914 
3915                 append( sb, "templateEncoding", 2 );
3916                 append( sb, "The encoding to use for reading templates.", 3 );
3917                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
3918                 append( sb, "", 0 );
3919 
3920                 append( sb, "templateLocation", 2 );
3921                 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 );
3922                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
3923                 append( sb, "", 0 );
3924 
3925                 append( sb, "templateParameterResources", 2 );
3926                 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 );
3927                 append( sb, "", 0 );
3928 
3929                 append( sb, "templateParameters", 2 );
3930                 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 );
3931                 append( sb, "", 0 );
3932 
3933                 append( sb, "templateProfile", 2 );
3934                 append( sb, "The template profile to use when accessing templates.", 3 );
3935                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
3936                 append( sb, "", 0 );
3937 
3938                 append( sb, "testClassesDirectory", 2 );
3939                 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 );
3940                 append( sb, "", 0 );
3941 
3942                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
3943                 append( sb, "Name of the test module to process.", 3 );
3944                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
3945                 append( sb, "", 0 );
3946 
3947                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
3948                 append( sb, "Test output directory of the project.", 3 );
3949                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
3950                 append( sb, "", 0 );
3951 
3952                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
3953                 append( sb, "Directory holding the test source files of the project.", 3 );
3954                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
3955                 append( sb, "", 0 );
3956 
3957                 append( sb, "transformationOutputProperties", 2 );
3958                 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 );
3959                 append( sb, "", 0 );
3960 
3961                 append( sb, "transformationParameterResources", 2 );
3962                 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 );
3963                 append( sb, "", 0 );
3964 
3965                 append( sb, "transformationParameters", 2 );
3966                 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 );
3967                 append( sb, "", 0 );
3968 
3969                 append( sb, "transformerLocation", 2 );
3970                 append( sb, "The location to search for transformers.", 3 );
3971                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
3972                 append( sb, "", 0 );
3973 
3974                 append( sb, "validateTestModelExecutionStrategy (Default: once-per-session)", 2 );
3975                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
3976                 append( sb, "Expression: ${jomc.validateTestModelExecutionStrategy}", 3 );
3977                 append( sb, "", 0 );
3978 
3979                 append( sb, "velocityProperties", 2 );
3980                 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 );
3981                 append( sb, "", 0 );
3982 
3983                 append( sb, "velocityPropertyResources", 2 );
3984                 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 );
3985                 append( sb, "", 0 );
3986 
3987                 append( sb, "verbose (Default: false)", 2 );
3988                 append( sb, "Controls verbosity of the plugin.", 3 );
3989                 append( sb, "Expression: ${jomc.verbose}", 3 );
3990                 append( sb, "", 0 );
3991             }
3992         }
3993 
3994         if ( goal == null || goal.length() <= 0 || "write-main-resources".equals( goal ) )
3995         {
3996             append( sb, "jomc:write-main-resources", 0 );
3997             append( sb, "Writes a projects\' main resource files.", 1 );
3998             append( sb, "", 0 );
3999             if ( detail )
4000             {
4001                 append( sb, "Available parameters:", 1 );
4002                 append( sb, "", 0 );
4003 
4004                 append( sb, "classesDirectory", 2 );
4005                 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 );
4006                 append( sb, "", 0 );
4007 
4008                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
4009                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
4010                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
4011                 append( sb, "", 0 );
4012 
4013                 append( sb, "classProcessingEnabled (Default: true)", 2 );
4014                 append( sb, "Controls processing of class files.", 3 );
4015                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
4016                 append( sb, "", 0 );
4017 
4018                 append( sb, "defaultTemplateProfile", 2 );
4019                 append( sb, "The default template profile to use when accessing templates.", 3 );
4020                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
4021                 append( sb, "", 0 );
4022 
4023                 append( sb, "indentation", 2 );
4024                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
4025                 append( sb, "Expression: ${jomc.indentation}", 3 );
4026                 append( sb, "", 0 );
4027 
4028                 append( sb, "lineSeparator", 2 );
4029                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
4030                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
4031                 append( sb, "", 0 );
4032 
4033                 append( sb, "locale", 2 );
4034                 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 );
4035                 append( sb, "", 0 );
4036 
4037                 append( sb, "mainResourcesOutputDirectory (Default: ${project.build.directory}/generated-resources/jomc)", 2 );
4038                 append( sb, "Directory to write resource files to.", 3 );
4039                 append( sb, "Expression: ${jomc.mainResourcesOutputDirectory}", 3 );
4040                 append( sb, "", 0 );
4041 
4042                 append( sb, "model (Default: http://jomc.org/model)", 2 );
4043                 append( sb, "The identifier of the model to process.", 3 );
4044                 append( sb, "Expression: ${jomc.model}", 3 );
4045                 append( sb, "", 0 );
4046 
4047                 append( sb, "modelContextAttributes", 2 );
4048                 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 );
4049                 append( sb, "", 0 );
4050 
4051                 append( sb, "modelContextFactoryClassName", 2 );
4052                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
4053                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
4054                 append( sb, "", 0 );
4055 
4056                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
4057                 append( sb, "Controls model object class path resolution.", 3 );
4058                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
4059                 append( sb, "", 0 );
4060 
4061                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
4062                 append( sb, "Controls processing of models.", 3 );
4063                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
4064                 append( sb, "", 0 );
4065 
4066                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
4067                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
4068                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
4069                 append( sb, "", 0 );
4070 
4071                 append( sb, "modletLocation", 2 );
4072                 append( sb, "The location to search for modlets.", 3 );
4073                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
4074                 append( sb, "", 0 );
4075 
4076                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
4077                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
4078                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
4079                 append( sb, "", 0 );
4080 
4081                 append( sb, "modletSchemaSystemId", 2 );
4082                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
4083                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
4084                 append( sb, "", 0 );
4085 
4086                 append( sb, "moduleLocation", 2 );
4087                 append( sb, "The location to search for modules.", 3 );
4088                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
4089                 append( sb, "", 0 );
4090 
4091                 append( sb, "moduleName (Default: ${project.name})", 2 );
4092                 append( sb, "Name of the module to process.", 3 );
4093                 append( sb, "Expression: ${jomc.moduleName}", 3 );
4094                 append( sb, "", 0 );
4095 
4096                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
4097                 append( sb, "Output directory of the project.", 3 );
4098                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
4099                 append( sb, "", 0 );
4100 
4101                 append( sb, "platformProviderLocation", 2 );
4102                 append( sb, "The location to search for platform providers.", 3 );
4103                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
4104                 append( sb, "", 0 );
4105 
4106                 append( sb, "providerLocation", 2 );
4107                 append( sb, "The location to search for providers.", 3 );
4108                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
4109                 append( sb, "", 0 );
4110 
4111                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
4112                 append( sb, "Directory holding the reports of the project.", 3 );
4113                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
4114                 append( sb, "", 0 );
4115 
4116                 append( sb, "resourceBundleDefaultLanguage", 2 );
4117                 append( sb, "The language of the default language properties file of generated resource bundle properties resources.", 3 );
4118                 append( sb, "Expression: ${jomc.resourceBundleDefaultLanguage}", 3 );
4119                 append( sb, "", 0 );
4120 
4121                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
4122                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
4123                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
4124                 append( sb, "", 0 );
4125 
4126                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
4127                 append( sb, "Controls processing of resource files.", 3 );
4128                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
4129                 append( sb, "", 0 );
4130 
4131                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
4132                 append( sb, "Directory holding the session related files of the project.", 3 );
4133                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
4134                 append( sb, "", 0 );
4135 
4136                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
4137                 append( sb, "Directory holding the source files of the project.", 3 );
4138                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
4139                 append( sb, "", 0 );
4140 
4141                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
4142                 append( sb, "The encoding to use for reading and writing files.", 3 );
4143                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
4144                 append( sb, "", 0 );
4145 
4146                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
4147                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
4148                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
4149                 append( sb, "", 0 );
4150 
4151                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
4152                 append( sb, "Controls processing of source code files.", 3 );
4153                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
4154                 append( sb, "", 0 );
4155 
4156                 append( sb, "templateEncoding", 2 );
4157                 append( sb, "The encoding to use for reading templates.", 3 );
4158                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
4159                 append( sb, "", 0 );
4160 
4161                 append( sb, "templateLocation", 2 );
4162                 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 );
4163                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
4164                 append( sb, "", 0 );
4165 
4166                 append( sb, "templateParameterResources", 2 );
4167                 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 );
4168                 append( sb, "", 0 );
4169 
4170                 append( sb, "templateParameters", 2 );
4171                 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 );
4172                 append( sb, "", 0 );
4173 
4174                 append( sb, "templateProfile", 2 );
4175                 append( sb, "The template profile to use when accessing templates.", 3 );
4176                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
4177                 append( sb, "", 0 );
4178 
4179                 append( sb, "testClassesDirectory", 2 );
4180                 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 );
4181                 append( sb, "", 0 );
4182 
4183                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
4184                 append( sb, "Name of the test module to process.", 3 );
4185                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
4186                 append( sb, "", 0 );
4187 
4188                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
4189                 append( sb, "Test output directory of the project.", 3 );
4190                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
4191                 append( sb, "", 0 );
4192 
4193                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
4194                 append( sb, "Directory holding the test source files of the project.", 3 );
4195                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
4196                 append( sb, "", 0 );
4197 
4198                 append( sb, "transformationOutputProperties", 2 );
4199                 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 );
4200                 append( sb, "", 0 );
4201 
4202                 append( sb, "transformationParameterResources", 2 );
4203                 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 );
4204                 append( sb, "", 0 );
4205 
4206                 append( sb, "transformationParameters", 2 );
4207                 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 );
4208                 append( sb, "", 0 );
4209 
4210                 append( sb, "transformerLocation", 2 );
4211                 append( sb, "The location to search for transformers.", 3 );
4212                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
4213                 append( sb, "", 0 );
4214 
4215                 append( sb, "velocityProperties", 2 );
4216                 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 );
4217                 append( sb, "", 0 );
4218 
4219                 append( sb, "velocityPropertyResources", 2 );
4220                 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 );
4221                 append( sb, "", 0 );
4222 
4223                 append( sb, "verbose (Default: false)", 2 );
4224                 append( sb, "Controls verbosity of the plugin.", 3 );
4225                 append( sb, "Expression: ${jomc.verbose}", 3 );
4226                 append( sb, "", 0 );
4227 
4228                 append( sb, "writeMainResourcesExecutionStrategy (Default: once-per-session)", 2 );
4229                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
4230                 append( sb, "Expression: ${jomc.writeMainResourcesExecutionStrategy}", 3 );
4231                 append( sb, "", 0 );
4232             }
4233         }
4234 
4235         if ( goal == null || goal.length() <= 0 || "write-test-resources".equals( goal ) )
4236         {
4237             append( sb, "jomc:write-test-resources", 0 );
4238             append( sb, "Writes a projects\' test resource files.", 1 );
4239             append( sb, "", 0 );
4240             if ( detail )
4241             {
4242                 append( sb, "Available parameters:", 1 );
4243                 append( sb, "", 0 );
4244 
4245                 append( sb, "classesDirectory", 2 );
4246                 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 );
4247                 append( sb, "", 0 );
4248 
4249                 append( sb, "classFileProcessorClassName (Default: org.jomc.tools.ClassFileProcessor)", 2 );
4250                 append( sb, "Class name of the ClassFileProcessor backing the goal.", 3 );
4251                 append( sb, "Expression: ${jomc.classFileProcessorClassName}", 3 );
4252                 append( sb, "", 0 );
4253 
4254                 append( sb, "classProcessingEnabled (Default: true)", 2 );
4255                 append( sb, "Controls processing of class files.", 3 );
4256                 append( sb, "Expression: ${jomc.classProcessing}", 3 );
4257                 append( sb, "", 0 );
4258 
4259                 append( sb, "defaultTemplateProfile", 2 );
4260                 append( sb, "The default template profile to use when accessing templates.", 3 );
4261                 append( sb, "Expression: ${jomc.defaultTemplateProfile}", 3 );
4262                 append( sb, "", 0 );
4263 
4264                 append( sb, "indentation", 2 );
4265                 append( sb, "The indentation string (\'\\t\' for tab).", 3 );
4266                 append( sb, "Expression: ${jomc.indentation}", 3 );
4267                 append( sb, "", 0 );
4268 
4269                 append( sb, "lineSeparator", 2 );
4270                 append( sb, "The line separator (\'\\r\\n\' for DOS, \'\\r\' for Mac, \'\\n\' for Unix).", 3 );
4271                 append( sb, "Expression: ${jomc.lineSeparator}", 3 );
4272                 append( sb, "", 0 );
4273 
4274                 append( sb, "locale", 2 );
4275                 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 );
4276                 append( sb, "", 0 );
4277 
4278                 append( sb, "model (Default: http://jomc.org/model)", 2 );
4279                 append( sb, "The identifier of the model to process.", 3 );
4280                 append( sb, "Expression: ${jomc.model}", 3 );
4281                 append( sb, "", 0 );
4282 
4283                 append( sb, "modelContextAttributes", 2 );
4284                 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 );
4285                 append( sb, "", 0 );
4286 
4287                 append( sb, "modelContextFactoryClassName", 2 );
4288                 append( sb, "The name of the ModelContextFactory implementation class backing the task.", 3 );
4289                 append( sb, "Expression: ${jomc.modelContextFactoryClassName}", 3 );
4290                 append( sb, "", 0 );
4291 
4292                 append( sb, "modelObjectClasspathResolutionEnabled (Default: true)", 2 );
4293                 append( sb, "Controls model object class path resolution.", 3 );
4294                 append( sb, "Expression: ${jomc.modelObjectClasspathResolution}", 3 );
4295                 append( sb, "", 0 );
4296 
4297                 append( sb, "modelProcessingEnabled (Default: true)", 2 );
4298                 append( sb, "Controls processing of models.", 3 );
4299                 append( sb, "Expression: ${jomc.modelProcessing}", 3 );
4300                 append( sb, "", 0 );
4301 
4302                 append( sb, "modelResourceValidationEnabled (Default: true)", 2 );
4303                 append( sb, "Flag controlling JAXP schema validation of model resources.", 3 );
4304                 append( sb, "Expression: ${jomc.modelResourceValidationEnabled}", 3 );
4305                 append( sb, "", 0 );
4306 
4307                 append( sb, "modletLocation", 2 );
4308                 append( sb, "The location to search for modlets.", 3 );
4309                 append( sb, "Expression: ${jomc.modletLocation}", 3 );
4310                 append( sb, "", 0 );
4311 
4312                 append( sb, "modletResourceValidationEnabled (Default: true)", 2 );
4313                 append( sb, "Flag controlling JAXP schema validation of modlet resources.", 3 );
4314                 append( sb, "Expression: ${jomc.modletResourceValidationEnabled}", 3 );
4315                 append( sb, "", 0 );
4316 
4317                 append( sb, "modletSchemaSystemId", 2 );
4318                 append( sb, "The http://jomc.org/modlet namespace schema system id.", 3 );
4319                 append( sb, "Expression: ${jomc.modletSchemaSystemId}", 3 );
4320                 append( sb, "", 0 );
4321 
4322                 append( sb, "moduleLocation", 2 );
4323                 append( sb, "The location to search for modules.", 3 );
4324                 append( sb, "Expression: ${jomc.moduleLocation}", 3 );
4325                 append( sb, "", 0 );
4326 
4327                 append( sb, "moduleName (Default: ${project.name})", 2 );
4328                 append( sb, "Name of the module to process.", 3 );
4329                 append( sb, "Expression: ${jomc.moduleName}", 3 );
4330                 append( sb, "", 0 );
4331 
4332                 append( sb, "outputDirectory (Default: ${project.build.outputDirectory})", 2 );
4333                 append( sb, "Output directory of the project.", 3 );
4334                 append( sb, "Expression: ${jomc.outputDirectory}", 3 );
4335                 append( sb, "", 0 );
4336 
4337                 append( sb, "platformProviderLocation", 2 );
4338                 append( sb, "The location to search for platform providers.", 3 );
4339                 append( sb, "Expression: ${jomc.platformProviderLocation}", 3 );
4340                 append( sb, "", 0 );
4341 
4342                 append( sb, "providerLocation", 2 );
4343                 append( sb, "The location to search for providers.", 3 );
4344                 append( sb, "Expression: ${jomc.providerLocation}", 3 );
4345                 append( sb, "", 0 );
4346 
4347                 append( sb, "reportOutputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
4348                 append( sb, "Directory holding the reports of the project.", 3 );
4349                 append( sb, "Expression: ${jomc.reportOutputDirectory}", 3 );
4350                 append( sb, "", 0 );
4351 
4352                 append( sb, "resourceBundleDefaultLanguage", 2 );
4353                 append( sb, "The language of the default language properties file of generated resource bundle properties resources.", 3 );
4354                 append( sb, "Expression: ${jomc.resourceBundleDefaultLanguage}", 3 );
4355                 append( sb, "", 0 );
4356 
4357                 append( sb, "resourceFileProcessorClassName (Default: org.jomc.tools.ResourceFileProcessor)", 2 );
4358                 append( sb, "Class name of the ResourceFileProcessor backing the goal.", 3 );
4359                 append( sb, "Expression: ${jomc.resourceFileProcessorClassName}", 3 );
4360                 append( sb, "", 0 );
4361 
4362                 append( sb, "resourceProcessingEnabled (Default: true)", 2 );
4363                 append( sb, "Controls processing of resource files.", 3 );
4364                 append( sb, "Expression: ${jomc.resourceProcessing}", 3 );
4365                 append( sb, "", 0 );
4366 
4367                 append( sb, "sessionDirectory (Default: ${project.build.directory}/jomc-sessions)", 2 );
4368                 append( sb, "Directory holding the session related files of the project.", 3 );
4369                 append( sb, "Expression: ${jomc.sessionDirectory}", 3 );
4370                 append( sb, "", 0 );
4371 
4372                 append( sb, "sourceDirectory (Default: ${project.build.sourceDirectory})", 2 );
4373                 append( sb, "Directory holding the source files of the project.", 3 );
4374                 append( sb, "Expression: ${jomc.sourceDirectory}", 3 );
4375                 append( sb, "", 0 );
4376 
4377                 append( sb, "sourceEncoding (Default: ${project.build.sourceEncoding})", 2 );
4378                 append( sb, "The encoding to use for reading and writing files.", 3 );
4379                 append( sb, "Expression: ${jomc.sourceEncoding}", 3 );
4380                 append( sb, "", 0 );
4381 
4382                 append( sb, "sourceFileProcessorClassName (Default: org.jomc.tools.SourceFileProcessor)", 2 );
4383                 append( sb, "Class name of the SourceFileProcessor backing the goal.", 3 );
4384                 append( sb, "Expression: ${jomc.sourceFileProcessorClassName}", 3 );
4385                 append( sb, "", 0 );
4386 
4387                 append( sb, "sourceProcessingEnabled (Default: true)", 2 );
4388                 append( sb, "Controls processing of source code files.", 3 );
4389                 append( sb, "Expression: ${jomc.sourceProcessing}", 3 );
4390                 append( sb, "", 0 );
4391 
4392                 append( sb, "templateEncoding", 2 );
4393                 append( sb, "The encoding to use for reading templates.", 3 );
4394                 append( sb, "Expression: ${jomc.templateEncoding}", 3 );
4395                 append( sb, "", 0 );
4396 
4397                 append( sb, "templateLocation", 2 );
4398                 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 );
4399                 append( sb, "Expression: ${jomc.templateLocation}", 3 );
4400                 append( sb, "", 0 );
4401 
4402                 append( sb, "templateParameterResources", 2 );
4403                 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 );
4404                 append( sb, "", 0 );
4405 
4406                 append( sb, "templateParameters", 2 );
4407                 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 );
4408                 append( sb, "", 0 );
4409 
4410                 append( sb, "templateProfile", 2 );
4411                 append( sb, "The template profile to use when accessing templates.", 3 );
4412                 append( sb, "Expression: ${jomc.templateProfile}", 3 );
4413                 append( sb, "", 0 );
4414 
4415                 append( sb, "testClassesDirectory", 2 );
4416                 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 );
4417                 append( sb, "", 0 );
4418 
4419                 append( sb, "testModuleName (Default: ${project.name} Tests)", 2 );
4420                 append( sb, "Name of the test module to process.", 3 );
4421                 append( sb, "Expression: ${jomc.testModuleName}", 3 );
4422                 append( sb, "", 0 );
4423 
4424                 append( sb, "testOutputDirectory (Default: ${project.build.testOutputDirectory})", 2 );
4425                 append( sb, "Test output directory of the project.", 3 );
4426                 append( sb, "Expression: ${jomc.testOutputDirectory}", 3 );
4427                 append( sb, "", 0 );
4428 
4429                 append( sb, "testResourcesOutputDirectory (Default: ${project.build.directory}/generated-test-resources/jomc)", 2 );
4430                 append( sb, "Directory to write test resource files to.", 3 );
4431                 append( sb, "Expression: ${jomc.testResourcesOutputDirectory}", 3 );
4432                 append( sb, "", 0 );
4433 
4434                 append( sb, "testSourceDirectory (Default: ${project.build.testSourceDirectory})", 2 );
4435                 append( sb, "Directory holding the test source files of the project.", 3 );
4436                 append( sb, "Expression: ${jomc.testSourceDirectory}", 3 );
4437                 append( sb, "", 0 );
4438 
4439                 append( sb, "transformationOutputProperties", 2 );
4440                 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 );
4441                 append( sb, "", 0 );
4442 
4443                 append( sb, "transformationParameterResources", 2 );
4444                 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 );
4445                 append( sb, "", 0 );
4446 
4447                 append( sb, "transformationParameters", 2 );
4448                 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 );
4449                 append( sb, "", 0 );
4450 
4451                 append( sb, "transformerLocation", 2 );
4452                 append( sb, "The location to search for transformers.", 3 );
4453                 append( sb, "Expression: ${jomc.transformerLocation}", 3 );
4454                 append( sb, "", 0 );
4455 
4456                 append( sb, "velocityProperties", 2 );
4457                 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 );
4458                 append( sb, "", 0 );
4459 
4460                 append( sb, "velocityPropertyResources", 2 );
4461                 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 );
4462                 append( sb, "", 0 );
4463 
4464                 append( sb, "verbose (Default: false)", 2 );
4465                 append( sb, "Controls verbosity of the plugin.", 3 );
4466                 append( sb, "Expression: ${jomc.verbose}", 3 );
4467                 append( sb, "", 0 );
4468 
4469                 append( sb, "writeTestResourcesExecutionStrategy (Default: once-per-session)", 2 );
4470                 append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
4471                 append( sb, "Expression: ${jomc.writeTestResourcesExecutionStrategy}", 3 );
4472                 append( sb, "", 0 );
4473             }
4474         }
4475 
4476         if ( getLog().isInfoEnabled() )
4477         {
4478             getLog().info( sb.toString() );
4479         }
4480     }
4481 
4482     /**
4483      * <p>Repeat a String <code>n</code> times to form a new string.</p>
4484      *
4485      * @param str String to repeat
4486      * @param repeat number of times to repeat str
4487      * @return String with repeated String
4488      * @throws NegativeArraySizeException if <code>repeat < 0</code>
4489      * @throws NullPointerException if str is <code>null</code>
4490      */
4491     private static String repeat( String str, int repeat )
4492     {
4493         StringBuffer buffer = new StringBuffer( repeat * str.length() );
4494 
4495         for ( int i = 0; i < repeat; i++ )
4496         {
4497             buffer.append( str );
4498         }
4499 
4500         return buffer.toString();
4501     }
4502 
4503     /** 
4504      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
4505      * <b>Note</b>: The last character is always a new line.
4506      * 
4507      * @param sb The buffer to append the description, not <code>null</code>.
4508      * @param description The description, not <code>null</code>.
4509      * @param indent The base indentation level of each line, must not be negative.
4510      */
4511     private void append( StringBuffer sb, String description, int indent )
4512     {
4513         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
4514         {
4515             sb.append( it.next().toString() ).append( '\n' );
4516         }
4517     }
4518 
4519     /** 
4520      * Splits the specified text into lines of convenient display length.
4521      * 
4522      * @param text The text to split into lines, must not be <code>null</code>.
4523      * @param indent The base indentation level of each line, must not be negative.
4524      * @param indentSize The size of each indentation, must not be negative.
4525      * @param lineLength The length of the line, must not be negative.
4526      * @return The sequence of display lines, never <code>null</code>.
4527      * @throws NegativeArraySizeException if <code>indent < 0</code>
4528      */
4529     private static List toLines( String text, int indent, int indentSize, int lineLength )
4530     {
4531         List<String> lines = new ArrayList<String>();
4532 
4533         String ind = repeat( "\t", indent );
4534         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
4535         for ( int i = 0; i < plainLines.length; i++ )
4536         {
4537             toLines( lines, ind + plainLines[i], indentSize, lineLength );
4538         }
4539 
4540         return lines;
4541     }
4542 
4543     /** 
4544      * Adds the specified line to the output sequence, performing line wrapping if necessary.
4545      * 
4546      * @param lines The sequence of display lines, must not be <code>null</code>.
4547      * @param line The line to add, must not be <code>null</code>.
4548      * @param indentSize The size of each indentation, must not be negative.
4549      * @param lineLength The length of the line, must not be negative.
4550      */
4551     private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
4552     {
4553         int lineIndent = getIndentLevel( line );
4554         StringBuffer buf = new StringBuffer( 256 );
4555         String[] tokens = line.split( " +" );
4556         for ( int i = 0; i < tokens.length; i++ )
4557         {
4558             String token = tokens[i];
4559             if ( i > 0 )
4560             {
4561                 if ( buf.length() + token.length() >= lineLength )
4562                 {
4563                     lines.add( buf.toString() );
4564                     buf.setLength( 0 );
4565                     buf.append( repeat( " ", lineIndent * indentSize ) );
4566                 }
4567                 else
4568                 {
4569                     buf.append( ' ' );
4570                 }
4571             }
4572             for ( int j = 0; j < token.length(); j++ )
4573             {
4574                 char c = token.charAt( j );
4575                 if ( c == '\t' )
4576                 {
4577                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
4578                 }
4579                 else if ( c == '\u00A0' )
4580                 {
4581                     buf.append( ' ' );
4582                 }
4583                 else
4584                 {
4585                     buf.append( c );
4586                 }
4587             }
4588         }
4589         lines.add( buf.toString() );
4590     }
4591 
4592     /** 
4593      * Gets the indentation level of the specified line.
4594      * 
4595      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
4596      * @return The indentation level of the line.
4597      */
4598     private static int getIndentLevel( String line )
4599     {
4600         int level = 0;
4601         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
4602         {
4603             level++;
4604         }
4605         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
4606         {
4607             if ( line.charAt( i ) == '\t' )
4608             {
4609                 level++;
4610                 break;
4611             }
4612         }
4613         return level;
4614     }
4615 }