001    package org.jomc.mojo;
002    
003    import java.util.ArrayList;
004    import java.util.Iterator;
005    import java.util.List;
006    
007    import org.apache.maven.plugin.AbstractMojo;
008    import org.apache.maven.plugin.MojoExecutionException;
009    
010    /**
011     * 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.
012     *
013     * @version generated on Sun Apr 01 03:35:56 CEST 2012
014     * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.9)
015     * @goal help
016     * @requiresProject false
017     * @threadSafe
018     */
019    @SuppressWarnings( "all" )
020    public class HelpMojo
021        extends AbstractMojo
022    {
023        /**
024         * If <code>true</code>, display all settable properties for each goal.
025         * 
026         * @parameter expression="${detail}" default-value="false"
027         */
028        private boolean detail;
029    
030        /**
031         * The name of the goal for which to show help. If unspecified, all goals will be displayed.
032         * 
033         * @parameter expression="${goal}"
034         */
035        private java.lang.String goal;
036    
037        /**
038         * The maximum length of a display line, should be positive.
039         * 
040         * @parameter expression="${lineLength}" default-value="80"
041         */
042        private int lineLength;
043    
044        /**
045         * The number of spaces per indentation level, should be positive.
046         * 
047         * @parameter expression="${indentSize}" default-value="2"
048         */
049        private int indentSize;
050    
051    
052        /** {@inheritDoc} */
053        public void execute()
054            throws MojoExecutionException
055        {
056            if ( lineLength <= 0 )
057            {
058                getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
059                lineLength = 80;
060            }
061            if ( indentSize <= 0 )
062            {
063                getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
064                indentSize = 2;
065            }
066    
067            StringBuffer sb = new StringBuffer();
068    
069            append( sb, "org.jomc:maven-jomc-plugin:1.2.4", 0 );
070            append( sb, "", 0 );
071    
072            append( sb, "Maven JOMC Plugin", 0 );
073            append( sb, "Object management and configuration tools for Apache Maven.", 1 );
074            append( sb, "", 0 );
075    
076            if ( goal == null || goal.length() <= 0 )
077            {
078                append( sb, "This plugin has 21 goals:", 0 );
079                append( sb, "", 0 );
080            }
081    
082            if ( goal == null || goal.length() <= 0 || "attach-main-module".equals( goal ) )
083            {
084                append( sb, "jomc:attach-main-module", 0 );
085                append( sb, "Attaches a project\'s main module artifact.", 1 );
086                append( sb, "", 0 );
087                if ( detail )
088                {
089                    append( sb, "Available parameters:", 1 );
090                    append( sb, "", 0 );
091    
092                    append( sb, "attachMainModuleExecutionStrategy (Default: once-per-session)", 2 );
093                    append( sb, "Execution strategy of the goal (always or once-per-session).", 3 );
094                    append( sb, "Expression: ${jomc.attachMainModuleExecutionStrategy}", 3 );
095                    append( sb, "", 0 );
096    
097                    append( sb, "mainModuleArtifactClassifier (Default: jomc-module)", 2 );
098                    append( sb, "Classifier of the attached module artifact.", 3 );
099                    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    }