You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by bz...@apache.org on 2016/11/24 09:31:52 UTC

[1/3] zeppelin git commit: [ZEPPELIN-1695] Enforce pom.xml style while removing useless, unapplied conf

Repository: zeppelin
Updated Branches:
  refs/heads/master 3be4b829a -> 5595bfb9d


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5595bfb9/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2f7ac3c..ea5adf1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -385,6 +385,11 @@
         </executions>
       </plugin>
 
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>xml-maven-plugin</artifactId>
+      </plugin>
+
       <!--TODO(alex): make part of the build and reconcile conflicts
     <plugin>
       <groupId>com.ning.maven.plugins</groupId>
@@ -422,11 +427,8 @@
         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.17</version>
-          <configuration combine.children="append">
+          <configuration>
             <argLine>-Xmx2g -Xms1g -Dfile.encoding=UTF-8</argLine>
-            <encoding>UTF-8</encoding>
-            <inputEncoding>UTF-8</inputEncoding>
-            <outputEncoding>UTF-8</outputEncoding>
           </configuration>
           <!-- <excludes> <exclude>**/itest/**</exclude> </excludes> <executions>
             <execution> <id>surefire-itest</id> <phase>integration-test</phase> <goals>
@@ -469,6 +471,33 @@
           </configuration>
         </plugin>
 
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>xml-maven-plugin</artifactId>
+          <version>1.0.1</version>
+          <executions>
+            <execution>
+              <phase>validate</phase>
+              <goals>
+                <goal>validate</goal>
+              </goals>
+            </execution>
+          </executions>
+          <configuration>
+            <validationSets>
+              <validationSet>
+                <dir>${project.basedir}</dir>
+                <includes>
+                  <include>
+                    pom.xml
+                  </include>
+                </includes>
+                <systemId>_tools/maven-4.0.0.xsd</systemId>
+              </validationSet>
+            </validationSets>
+          </configuration>
+        </plugin>
+
         <!--This plugin's configuration is used to store Eclipse m2e settings
           only. It has no influence on the Maven build itself. -->
         <plugin>
@@ -750,6 +779,7 @@
               <exclude>**/null/**</exclude>
               <exclude>**/notebook/**</exclude>
               <exclude>_tools/site/css/*</exclude>
+              <exclude>_tools/maven-4.0.0.xsd</exclude>
               <exclude>**/README.md</exclude>
               <exclude>DEPENDENCIES</exclude>
               <exclude>DEPLOY.md</exclude>

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5595bfb9/zeppelin-zengine/pom.xml
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/pom.xml b/zeppelin-zengine/pom.xml
index 09a7bd6..ba84f24 100644
--- a/zeppelin-zengine/pom.xml
+++ b/zeppelin-zengine/pom.xml
@@ -250,7 +250,7 @@
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.17</version>
-        <configuration combine.children="append">
+        <configuration>
           <forkMode>always</forkMode>
         </configuration>
       </plugin>


[3/3] zeppelin git commit: [ZEPPELIN-1695] Enforce pom.xml style while removing useless, unapplied conf

Posted by bz...@apache.org.
[ZEPPELIN-1695] Enforce pom.xml style while removing useless, unapplied conf

### What is this PR for?

**First of all, this PR doesn't affect on runtime application behaivor and existing build processes. Just adding validation and styling**

The main goal of this PR is to keep consistency among multiple pom.xml files

- added xml-maven-plugin to enforce valid maven conf and xml code style (included in maven verify phase)
- while removing 2 invalid `combine.children` conf (they are invalid, useless. see commit messages)
- apply 2 space indent according to [maven style guide](https://maven.apache.org/developers/conventions/code.html)

For reviewers,

most code modification is due to 4064057 (re-indent commit), **so skipping the commit will be helpful to review this**.

### What type of PR is it?
[Improvement]

### Todos

* [x] - Add maven xml plugin
* [x] - Reindent according to maven style guide

### What is the Jira issue?

[ZEPPELIN-1695](https://issues.apache.org/jira/browse/ZEPPELIN-1695)

### How should this be tested?

CI will do that. Also you can type `mvn xml:validate` usually it takes 10+- seconds.

```
[INFO] Reactor Summary:
[INFO]
[INFO] Zeppelin ........................................... SUCCESS [  2.444 s]
[INFO] Zeppelin: Interpreter .............................. SUCCESS [  0.048 s]
[INFO] Zeppelin: Zengine .................................. SUCCESS [  0.029 s]
[INFO] Zeppelin: Display system apis ...................... SUCCESS [  0.025 s]
[INFO] Zeppelin: Spark dependencies ....................... SUCCESS [  0.038 s]
[INFO] Zeppelin: Spark .................................... SUCCESS [  0.040 s]
[INFO] Zeppelin: Markdown interpreter ..................... SUCCESS [  0.022 s]
[INFO] Zeppelin: Angular interpreter ...................... SUCCESS [  0.013 s]
[INFO] Zeppelin: Shell interpreter ........................ SUCCESS [  0.019 s]
[INFO] Zeppelin: Livy interpreter ......................... SUCCESS [  0.018 s]
[INFO] Zeppelin: HBase interpreter ........................ SUCCESS [  0.014 s]
[INFO] Zeppelin: Apache Pig Interpreter ................... SUCCESS [  0.016 s]
[INFO] Zeppelin: PostgreSQL interpreter ................... SUCCESS [  0.012 s]
[INFO] Zeppelin: JDBC interpreter ......................... SUCCESS [  0.012 s]
[INFO] Zeppelin: File System Interpreters ................. SUCCESS [  0.025 s]
[INFO] Zeppelin: Flink .................................... SUCCESS [  0.048 s]
[INFO] Zeppelin: Apache Ignite interpreter ................ SUCCESS [  0.013 s]
[INFO] Zeppelin: Kylin interpreter ........................ SUCCESS [  0.010 s]
[INFO] Zeppelin: Python interpreter ....................... SUCCESS [  0.011 s]
[INFO] Zeppelin: Lens interpreter ......................... SUCCESS [  0.015 s]
[INFO] Zeppelin: Apache Cassandra interpreter ............. SUCCESS [  0.036 s]
[INFO] Zeppelin: Elasticsearch interpreter ................ SUCCESS [  0.014 s]
[INFO] Zeppelin: BigQuery interpreter ..................... SUCCESS [  0.012 s]
[INFO] Zeppelin: Alluxio interpreter ...................... SUCCESS [  0.011 s]
[INFO] Zeppelin: Scio ..................................... SUCCESS [  0.026 s]
[INFO] Zeppelin: web Application .......................... SUCCESS [  1.193 s]
[INFO] Zeppelin: Server ................................... SUCCESS [  0.015 s]
[INFO] Zeppelin: Packaging distribution ................... SUCCESS [  0.022 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.678 s
[INFO] Finished at: 2016-11-22T00:24:32+09:00
[INFO] Final Memory: 27M/703M
[INFO] ------------------------------------------------------------------------
```

### Questions:
* Does the licenses files need update? NO
* Is there breaking changes for older versions? NO
* Does this needs documentation? NO

Author: 1ambda <1a...@gmail.com>

Closes #1662 from 1ambda/feat/check-pom-file-is-well-formed and squashes the following commits:

2d8d7d2 [1ambda] fix: Remove useless combine.children=append
f858a16 [1ambda] fix: Use _tools/maven-4.0.0.xsd
1142b46 [1ambda] fix: Remove useless encoding options
03579e7 [1ambda] fix: Remove useless combine.chdilren
4418cad [1ambda] feat: Add xml-maven-plugin to validate pom.xml


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/5595bfb9
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/5595bfb9
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/5595bfb9

Branch: refs/heads/master
Commit: 5595bfb9d06267712505dd9d3f4479d16a54aef8
Parents: 3be4b82
Author: 1ambda <1a...@gmail.com>
Authored: Tue Nov 22 00:17:03 2016 +0900
Committer: Alexander Bezzubov <bz...@apache.org>
Committed: Thu Nov 24 18:31:41 2016 +0900

----------------------------------------------------------------------
 _tools/maven-4.0.0.xsd   | 2484 +++++++++++++++++++++++++++++++++++++++++
 pom.xml                  |   38 +-
 zeppelin-zengine/pom.xml |    2 +-
 3 files changed, 2519 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[2/3] zeppelin git commit: [ZEPPELIN-1695] Enforce pom.xml style while removing useless, unapplied conf

Posted by bz...@apache.org.
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5595bfb9/_tools/maven-4.0.0.xsd
----------------------------------------------------------------------
diff --git a/_tools/maven-4.0.0.xsd b/_tools/maven-4.0.0.xsd
new file mode 100644
index 0000000..f3a3683
--- /dev/null
+++ b/_tools/maven-4.0.0.xsd
@@ -0,0 +1,2484 @@
+<?xml version="1.0"?>
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 1.8.3,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/POM/4.0.0" targetNamespace="http://maven.apache.org/POM/4.0.0">
+  <xs:element name="project" type="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element is the root of the descriptor.
+        The following table lists all of the possible child elements.
+        
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Model">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; element is the root of the descriptor.
+        The following table lists all of the possible child elements.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="modelVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Declares to which version of project descriptor this POM conforms.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="parent" type="Parent">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The location of the parent project, if one exists. Values from the parent
+            project will be the default for this project if they are left unspecified. The location
+            is given as a group ID, artifact ID and version.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A universally unique identifier for a project. It is normal to
+            use a fully-qualified package name to distinguish it from other
+            projects with a similar name (eg. &lt;code&gt;org.apache.maven&lt;/code&gt;).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier for this artifact that is unique within the group given by the
+            group ID. An artifact is something that is either produced or used by a project.
+            Examples of artifacts produced by Maven for a project include: JARs, source and binary
+            distributions, and WARs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The current version of the artifact produced by this project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="packaging" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The type of artifact this project produces, for example &lt;code&gt;jar&lt;/code&gt;
+              &lt;code&gt;war&lt;/code&gt;
+              &lt;code&gt;ear&lt;/code&gt;
+              &lt;code&gt;pom&lt;/code&gt;.
+            Plugins can create their own packaging, and
+            therefore their own packaging types,
+            so this list does not contain all possible types.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="description" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">A detailed description of the project, used by Maven whenever it needs to
+            describe the project, such as on the web site. While this element can be specified as
+            CDATA to enable the use of HTML tags within the description, it is discouraged to allow
+            plain text representation. If you need to modify the index page of the generated web
+            site, you are able to specify your own instead of adjusting this text.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The URL to the project&apos;s homepage.
+            &lt;br /&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + artifactId
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="inceptionYear" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The year of the project&apos;s inception, specified with 4 digits. This value is
+            used when generating copyright notices as well as being informational.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organization" type="Organization">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">This element describes various attributes of the organization to which the
+            project belongs. These attributes are utilized when documentation is created (for
+            copyright notices and links).</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="licenses">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element describes all of the licenses for this project.
+            Each license is described by a &lt;code&gt;license&lt;/code&gt; element, which
+            is then described by additional elements.
+            Projects should only list the license(s) that applies to the project
+            and not the licenses that apply to dependencies.
+            If multiple licenses are listed, it is assumed that the user can select
+            any of them, not that they must accept all.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="license" minOccurs="0" maxOccurs="unbounded" type="License"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="developers">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the committers of a project.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="developer" minOccurs="0" maxOccurs="unbounded" type="Developer"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="contributors">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the contributors to a project that are not yet committers.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="contributor" minOccurs="0" maxOccurs="unbounded" type="Contributor"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="mailingLists">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Contains information about a project&apos;s mailing lists.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="mailingList" minOccurs="0" maxOccurs="unbounded" type="MailingList"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="prerequisites" type="Prerequisites">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Describes the prerequisites in the build environment for this project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="modules">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The modules (sometimes called subprojects) to build as a part of this
+            project. Each module listed is a relative path to the directory containing the module.
+            To be consistent with the way default urls are calculated from parent, it is recommended
+            to have module names match artifact ids.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="module" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="scm" type="Scm">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Specification for the SCM used by the project, such as CVS, Subversion, etc.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="issueManagement" type="IssueManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The project&apos;s issue management system information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="ciManagement" type="CiManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The project&apos;s continuous integration information.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="distributionManagement" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project that enables deployment of the site
+            and artifacts to remote web servers and repositories respectively.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Properties that can be used throughout the POM as a substitution, and
+            are used as filters in resources if enabled.
+            The format is &lt;code&gt;&amp;lt;name&amp;gt;value&amp;lt;/name&amp;gt;&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyManagement" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default dependency information for projects that inherit from this one. The
+            dependencies in this section are not immediately resolved. Instead, when a POM derived
+            from this one declares a dependency described by a matching groupId and artifactId, the
+            version and other values from this section are used for that dependency if they were not
+            already specified.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element describes all of the dependencies associated with a
+            project.
+            These dependencies are used to construct a classpath for your
+            project during the build process. They are automatically downloaded from the
+            repositories defined in this project.
+            See &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;the
+            dependency mechanism&lt;/a&gt; for more information.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering dependencies and
+            extensions.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="repository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins for builds and
+            reports.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="pluginRepository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="build" type="Build">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="reports">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;b&gt;Deprecated&lt;/b&gt;. Now ignored by Maven.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="reporting" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element includes the specification of report plugins to use
+            to generate the reports on the Maven-generated site.
+            These reports will be run when a user executes &lt;code&gt;mvn site&lt;/code&gt;.
+            All of the reports will be included in the navigation bar for browsing.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="profiles">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">A listing of project-local build profiles which will modify the build process
+            when activated.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="profile" minOccurs="0" maxOccurs="unbounded" type="Profile"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Parent">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;parent&amp;gt;&lt;/code&gt; element contains information required to locate the parent project from which
+        this project will inherit from.
+        &lt;strong&gt;Note:&lt;/strong&gt; The children of this element are not interpolated and must be given as literal values.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group id of the parent project to inherit from.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact id of the parent project to inherit from.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version of the parent project to inherit.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="relativePath" type="xs:string" default="../pom.xml">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The relative path of the parent &lt;code&gt;pom.xml&lt;/code&gt; file within the check out.
+            If not specified, it defaults to &lt;code&gt;../pom.xml&lt;/code&gt;.
+            Maven looks for the parent POM first in this location on
+            the filesystem, then the local repository, and lastly in the remote repo.
+            &lt;code&gt;relativePath&lt;/code&gt; allows you to select a different location,
+            for example when your structure is flat, or deeper without an intermediate parent POM.
+            However, the group ID, artifact ID and version are still required,
+            and must match the file in the location given or it will revert to the repository for the POM.
+            This feature is only for enhancing the development in a local checkout of that project.
+            Set the value to an empty string in case you want to disable the feature and always resolve
+            the parent POM from the repositories.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Organization">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Specifies the organization that produces this project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL to the organization&apos;s home page.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DistributionManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">This elements describes all that pertains to distribution for a project. It is
+        primarily used for deployment of artifacts and the site produced by the build.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="repository" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information needed to deploy the artifacts generated by the project to a
+            remote repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshotRepository" type="DeploymentRepository">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Where to deploy snapshots of artifacts to. If not given, it defaults to the
+            &lt;code&gt;repository&lt;/code&gt; element.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="site" type="Site">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information needed for deploying the web site of the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="downloadUrl" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The URL of the project&apos;s download page. If not given users will be
+            referred to the homepage given by &lt;code&gt;url&lt;/code&gt;.
+            This is given to assist in locating artifacts that are not in the repository due to
+            licensing restrictions.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="relocation" type="Relocation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Relocation information of the artifact if it has been moved to a new group ID
+            and/or artifact ID.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="status" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Gives the status of this artifact in the remote repository.
+            This must not be set in your local project, as it is updated by
+            tools placing it in the reposiory. Valid values are: &lt;code&gt;none&lt;/code&gt; (default),
+            &lt;code&gt;converted&lt;/code&gt; (repository manager converted this from an Maven 1 POM),
+            &lt;code&gt;partner&lt;/code&gt;
+            (directly synced from a partner Maven 2 repository), &lt;code&gt;deployed&lt;/code&gt; (was deployed from a Maven 2
+            instance), &lt;code&gt;verified&lt;/code&gt; (has been hand verified as correct and final).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Relocation">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes where an artifact has moved to. If any of the values are omitted, it is
+        assumed to be the same as it was before.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID the artifact has moved to.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The new artifact ID of the artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The new version of the artifact.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="message" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">An additional message to show the user about the move, such as the reason.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Site">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Contains the information needed for deploying websites.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A unique identifier for a deployment location. This is used to match the
+            site to configuration in the &lt;code&gt;settings.xml&lt;/code&gt; file, for example.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the deployment location.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The url of the location where website is deployed, in the form &lt;code&gt;protocol://hostname/path&lt;/code&gt;.
+            &lt;br /&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + artifactId
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DeploymentRepository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Repository contains the information needed for deploying to the remote
+        repository.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="uniqueVersion" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to assign snapshots a unique version comprised of the timestamp and
+            build number, or to use the same version each time</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of releases from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of snapshots from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A unique identifier for a repository. This is used to match the repository
+            to configuration in the &lt;code&gt;settings.xml&lt;/code&gt; file, for example. Furthermore, the identifier is
+            used during POM inheritance and profile injection to detect repositories that should be merged.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The url of the repository, in the form &lt;code&gt;protocol://hostname/path&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The type of layout this repository uses for locating and storing artifacts -
+            can be &lt;code&gt;legacy&lt;/code&gt; or &lt;code&gt;default&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="RepositoryPolicy">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Download policy.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="enabled" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether to use this repository for downloading this type of artifact. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;true&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="updatePolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The frequency for downloading updates - can be
+            &lt;code&gt;always,&lt;/code&gt;
+            &lt;code&gt;daily&lt;/code&gt;
+            (default),
+            &lt;code&gt;interval:XXX&lt;/code&gt;
+            (in minutes) or
+            &lt;code&gt;never&lt;/code&gt;
+            (only if it doesn&apos;t exist locally).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="checksumPolicy" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            What to do when verification of an artifact checksum fails. Valid values are
+            &lt;code&gt;ignore&lt;/code&gt;
+            ,
+            &lt;code&gt;fail&lt;/code&gt;
+            or
+            &lt;code&gt;warn&lt;/code&gt;
+            (the default).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Prerequisites">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Describes the prerequisites a project can have.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="maven" type="xs:string" default="2.0">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            For a plugin project, the minimum version of Maven required to use
+            the resulting plugin.&lt;br /&gt;
+            For specifying the minimum version of Maven required to build a
+            project, this element is &lt;b&gt;deprecated&lt;/b&gt;. Use the Maven Enforcer
+            Plugin&apos;s &lt;a href=&quot;https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html&quot;&gt;&lt;code&gt;requireMavenVersion&lt;/code&gt;&lt;/a&gt;
+            rule instead.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Contributor">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Description of a person who has contributed to the project, but who does not have
+        commit privileges. Usually, these contributions come in the form of patches submitted.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The full name of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="email" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The email address of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL for the homepage of the contributor.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organization" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The organization to which the contributor belongs.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="organizationUrl" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The URL of the organization.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="roles">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The roles the contributor plays in the project. Each role is described by a
+            &lt;code&gt;role&lt;/code&gt; element, the body of which is a role name. This can also be used to
+            describe the contribution.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="role" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="timezone" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+              The timezone the contributor is in. Typically, this is a number in the range
+              &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%E2%88%9212:00&quot;&gt;-12&lt;/a&gt; to &lt;a href=&quot;http://en.wikipedia.org/wiki/UTC%2B14:00&quot;&gt;+14&lt;/a&gt;
+              or a valid time zone id like &quot;America/Montreal&quot; (UTC-05:00) or &quot;Europe/Paris&quot; (UTC+01:00).
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Properties about the contributor, such as an instant messenger handle.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Scm">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;scm&amp;gt;&lt;/code&gt; element contains informations required to the SCM
+        (Source Control Management) of the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="connection" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The source control management system URL
+            that describes the repository and how to connect to the
+            repository. For more information, see the
+            &lt;a href=&quot;http://maven.apache.org/scm/scm-url-format.html&quot;&gt;URL format&lt;/a&gt;
+            and &lt;a href=&quot;http://maven.apache.org/scm/scms-overview.html&quot;&gt;list of supported SCMs&lt;/a&gt;.
+            This connection is read-only.
+            &lt;br /&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + artifactId
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="developerConnection" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Just like &lt;code&gt;connection&lt;/code&gt;, but for developers, i.e. this scm connection
+            will not be read only.
+            &lt;br /&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + artifactId
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="tag" type="xs:string" default="HEAD">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The tag of current code. By default, it&apos;s set to HEAD during development.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The URL to the project&apos;s browsable SCM repository, such as ViewVC or Fisheye.
+            &lt;br /&gt;&lt;b&gt;Default value is&lt;/b&gt;: parent value [+ path adjustment] + artifactId
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Repository">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">A repository contains the information needed for establishing connections with
+        remote repository.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of releases from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">How to handle downloading of snapshots from this repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="id" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A unique identifier for a repository. This is used to match the repository
+            to configuration in the &lt;code&gt;settings.xml&lt;/code&gt; file, for example. Furthermore, the identifier is
+            used during POM inheritance and profile injection to detect repositories that should be merged.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Human readable name of the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The url of the repository, in the form &lt;code&gt;protocol://hostname/path&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The type of layout this repository uses for locating and storing artifacts -
+            can be &lt;code&gt;legacy&lt;/code&gt; or &lt;code&gt;default&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="IssueManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Information about the issue tracking (or bug tracking) system used to manage this
+        project.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="system" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The name of the issue management system, e.g. Bugzilla</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">URL for the issue management system used by the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="CiManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;CiManagement&amp;gt;&lt;/code&gt; element contains informations required to the
+        continuous integration system of the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="system" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The name of the continuous integration system, e.g. &lt;code&gt;continuum&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">URL for the continuous integration system used by the project if it has a web
+            interface.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="notifiers">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration for notifying developers/users when a build is unsuccessful,
+            including user information and notification mode.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="notifier" minOccurs="0" maxOccurs="unbounded" type="Notifier"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Notifier">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Configures one method for notifying users/developers when a build breaks.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="type" type="xs:string" default="mail">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The mechanism used to deliver notifications.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnError" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on error.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnFailure" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on failure.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnSuccess" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on success.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sendOnWarning" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Whether to send notifications on warning.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="address" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;b&gt;Deprecated&lt;/b&gt;. Where to send the notification to - eg email address.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Extended configuration specific to this notifier goes here.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Profile">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Modifications to the build process which is activated based on environmental
+        parameters or command line arguments.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier of this build profile. This is used for command line
+            activation, and identifies profiles to be merged.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="activation" type="Activation">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The conditional logic which will automatically trigger the inclusion of this
+            profile.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="build" type="BuildBase">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Information required to build the project.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="modules">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The modules (sometimes called subprojects) to build as a part of this
+            project. Each module listed is a relative path to the directory containing the module.
+            To be consistent with the way default urls are calculated from parent, it is recommended
+            to have module names match artifact ids.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="module" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="distributionManagement" type="DistributionManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Distribution information for a project that enables deployment of the site
+            and artifacts to remote web servers and repositories respectively.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Properties that can be used throughout the POM as a substitution, and
+            are used as filters in resources if enabled.
+            The format is &lt;code&gt;&amp;lt;name&amp;gt;value&amp;lt;/name&amp;gt;&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencyManagement" type="DependencyManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default dependency information for projects that inherit from this one. The
+            dependencies in this section are not immediately resolved. Instead, when a POM derived
+            from this one declares a dependency described by a matching groupId and artifactId, the
+            version and other values from this section are used for that dependency if they were not
+            already specified.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element describes all of the dependencies associated with a
+            project.
+            These dependencies are used to construct a classpath for your
+            project during the build process. They are automatically downloaded from the
+            repositories defined in this project.
+            See &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;the
+            dependency mechanism&lt;/a&gt; for more information.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="repositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering dependencies and
+            extensions.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="repository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginRepositories">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The lists of the remote repositories for discovering plugins for builds and
+            reports.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="pluginRepository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="reports">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;b&gt;Deprecated&lt;/b&gt;. Now ignored by Maven.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="reporting" type="Reporting">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            This element includes the specification of report plugins to use
+            to generate the reports on the Maven-generated site.
+            These reports will be run when a user executes &lt;code&gt;mvn site&lt;/code&gt;.
+            All of the reports will be included in the navigation bar for browsing.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="BuildBase">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">Generic informations for a build.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="defaultGoal" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">The default goal (or phase in Maven 2) to execute when none is specified for
+            the project. Note that in case of a multi-module build, only the default goal of the top-level
+            project is relevant, i.e. the default goals of child modules are ignored. Since Maven 3,
+            multiple goals/phases can be separated by whitespace.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="resources">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the classpath resources such as properties
+            files associated with a project. These resources are often included in the final
+            package.
+            The default value is &lt;code&gt;src/main/resources&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="resource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="testResources">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            This element describes all of the classpath resources such as properties
+            files associated with a project&apos;s unit tests.
+            The default value is &lt;code&gt;src/test/resources&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="testResource" minOccurs="0" maxOccurs="unbounded" type="Resource"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            The directory where all files generated by the build are placed.
+            The default value is &lt;code&gt;target&lt;/code&gt;.
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="finalName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The filename (excluding the extension, and with no path information) that
+            the produced artifact will be called.
+            The default value is &lt;code&gt;${artifactId}-${version}&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filters">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of filter properties files that are used when filtering is enabled.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="filter" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginManagement" type="PluginManagement">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Default plugin information to be made available for reference by projects
+            derived from this one. This plugin configuration will not be resolved or bound to the
+            lifecycle unless referenced. Any local configuration for a given plugin will override
+            the plugin&apos;s entire definition here.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of plugins to use.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="Plugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Plugin">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;plugin&amp;gt;&lt;/code&gt; element contains informations required for a plugin.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string" default="org.apache.maven.plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the plugin in the repository.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The version (or valid range of versions) of the plugin to be used.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="extensions" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether to load Maven extensions (such as packaging and type handlers) from
+            this plugin. For performance reasons, this should only be enabled when necessary. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;false&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Multiple specifications of a set of goals to execute during the build
+            lifecycle, each having (possibly) a different configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execution" minOccurs="0" maxOccurs="unbounded" type="PluginExecution"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dependencies">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Additional dependencies that this project needs to introduce to the plugin&apos;s
+            classloader.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="Dependency"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;b&gt;Deprecated&lt;/b&gt;. Unused by Maven.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;true&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            &lt;code&gt;xml:space=&quot;preserve&quot;&lt;/code&gt; to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding &lt;code&gt;combine.children&lt;/code&gt;
+            or &lt;code&gt;combine.self&lt;/code&gt; attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;&lt;code&gt;combine.children&lt;/code&gt;: available values are &lt;code&gt;merge&lt;/code&gt; (default) and &lt;code&gt;append&lt;/code&gt;,&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;combine.self&lt;/code&gt;: available values are &lt;code&gt;merge&lt;/code&gt; (default) and &lt;code&gt;override&lt;/code&gt;.&lt;/li&gt;
+            &lt;/ul&gt;
+            &lt;p&gt;See &lt;a href=&quot;http://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt; and
+            &lt;a href=&quot;http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            for more information.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Dependency">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;dependency&amp;gt;&lt;/code&gt; element contains information about a dependency
+        of the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The project group that produced the dependency, e.g.
+            &lt;code&gt;org.apache.maven&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The unique id for an artifact produced by the project group, e.g.
+            &lt;code&gt;maven-artifact&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The version of the dependency, e.g. &lt;code&gt;3.2.1&lt;/code&gt;. In Maven 2, this can also be
+            specified as a range of versions.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="type" type="xs:string" default="jar">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The type of dependency. While it
+            usually represents the extension on the filename of the dependency,
+            that is not always the case. A type can be mapped to a different
+            extension and a classifier.
+            The type often corresponds to the packaging used, though this is also
+            not always the case.
+            Some examples are &lt;code&gt;jar&lt;/code&gt;, &lt;code&gt;war&lt;/code&gt;, &lt;code&gt;ejb-client&lt;/code&gt;
+            and &lt;code&gt;test-jar&lt;/code&gt;: see &lt;a href=&quot;../maven-core/artifact-handlers.html&quot;&gt;default
+            artifact handlers&lt;/a&gt; for a list.
+            New types can be defined by plugins that set
+            &lt;code&gt;extensions&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;, so this is not a complete list.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="classifier" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The classifier of the dependency. It is appended to
+            the filename after the version. This allows:
+            &lt;ul&gt;
+            &lt;li&gt;refering to attached artifact, for example &lt;code&gt;sources&lt;/code&gt; and &lt;code&gt;javadoc&lt;/code&gt;:
+            see &lt;a href=&quot;../maven-core/artifact-handlers.html&quot;&gt;default artifact handlers&lt;/a&gt; for a list,&lt;/li&gt;
+            &lt;li&gt;distinguishing two artifacts
+            that belong to the same POM but were built differently.
+            For example, &lt;code&gt;jdk14&lt;/code&gt; and &lt;code&gt;jdk15&lt;/code&gt;.&lt;/li&gt;
+            &lt;/ul&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="scope" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            The scope of the dependency - &lt;code&gt;compile&lt;/code&gt;, &lt;code&gt;runtime&lt;/code&gt;,
+            &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;system&lt;/code&gt;, and &lt;code&gt;provided&lt;/code&gt;. Used to
+            calculate the various classpaths used for compilation, testing, and so on.
+            It also assists in determining which artifacts to include in a distribution of
+            this project. For more information, see
+            &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html&quot;&gt;the
+            dependency mechanism&lt;/a&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="systemPath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            FOR SYSTEM SCOPE ONLY. Note that use of this property is &lt;b&gt;discouraged&lt;/b&gt;
+            and may be replaced in later versions. This specifies the path on the filesystem
+            for this dependency.
+            Requires an absolute path for the value, not relative.
+            Use a property that gives the machine specific absolute path,
+            e.g. &lt;code&gt;${java.home}&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="exclusions">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">Lists a set of artifacts that should be excluded from this dependency&apos;s
+            artifact list when it comes to calculating transitive dependencies.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclusion" minOccurs="0" maxOccurs="unbounded" type="Exclusion"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="optional" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Indicates the dependency is optional for use of this library. While the
+            version of the dependency will be taken into account for dependency calculation if the
+            library is used elsewhere, it will not be passed on transitively. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;false&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Exclusion">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;exclusion&amp;gt;&lt;/code&gt; element contains informations required to exclude
+        an artifact to the project.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The artifact ID of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The group ID of the project to exclude.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginExecution">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">
+        
+        The &lt;code&gt;&amp;lt;execution&amp;gt;&lt;/code&gt; element contains informations required for the
+        execution of a plugin.
+        
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" default="default">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The identifier of this execution for labelling the goals during the build,
+            and for matching executions to merge during inheritance and profile injection.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="phase" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The build lifecycle phase to bind the goals in this execution to. If omitted,
+            the goals will be bound to the default phase specified by the plugin. </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The goals to execute with the given configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="goal" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="inherited" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether any configuration should be propagated to child POMs. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;true&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            &lt;p&gt;The configuration as DOM object.&lt;/p&gt;
+            &lt;p&gt;By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+            &lt;code&gt;xml:space=&quot;preserve&quot;&lt;/code&gt; to elements you want to preserve whitespace.&lt;/p&gt;
+            &lt;p&gt;You can control how child POMs inherit configuration from parent POMs by adding &lt;code&gt;combine.children&lt;/code&gt;
+            or &lt;code&gt;combine.self&lt;/code&gt; attributes to the children of the configuration element:&lt;/p&gt;
+            &lt;ul&gt;
+            &lt;li&gt;&lt;code&gt;combine.children&lt;/code&gt;: available values are &lt;code&gt;merge&lt;/code&gt; (default) and &lt;code&gt;append&lt;/code&gt;,&lt;/li&gt;
+            &lt;li&gt;&lt;code&gt;combine.self&lt;/code&gt;: available values are &lt;code&gt;merge&lt;/code&gt; (default) and &lt;code&gt;override&lt;/code&gt;.&lt;/li&gt;
+            &lt;/ul&gt;
+            &lt;p&gt;See &lt;a href=&quot;http://maven.apache.org/pom.html#Plugins&quot;&gt;POM Reference documentation&lt;/a&gt; and
+            &lt;a href=&quot;http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html&quot;&gt;Xpp3DomUtils&lt;/a&gt;
+            for more information.&lt;/p&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Resource">
+    <xs:annotation>
+      <xs:documentation source="version">3.0.0+</xs:documentation>
+      <xs:documentation source="description">This element describes all of the classpath resources associated with a project
+        or unit tests.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="targetPath" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Describe the resource target path. The path is relative to the target/classes
+            directory (i.e. &lt;code&gt;${project.build.outputDirectory}&lt;/code&gt;).
+            For example, if you want that resource to appear in a specific package
+            (&lt;code&gt;org.apache.maven.messages&lt;/code&gt;), you must specify this
+            element with this value: &lt;code&gt;org/apache/maven/messages&lt;/code&gt;.
+            This is not required if you simply put the resources in that directory
+            structure at the source, however.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="filtering" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Whether resources are filtered to replace tokens with parameterised values or not.
+            The values are taken from the &lt;code&gt;properties&lt;/code&gt; element and from the
+            properties in the files listed in the &lt;code&gt;filters&lt;/code&gt; element. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;false&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="directory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">Describe the directory where the resources are stored. The path is relative
+            to the POM.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="includes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A list of patterns to include, e.g. &lt;code&gt;**&amp;#47;*.xml&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="excludes">
+        <xs:annotation>
+          <xs:documentation source="version">3.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            A list of patterns to exclude, e.g. &lt;code&gt;**&amp;#47;*.xml&lt;/code&gt;
+            
+          </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginManagement">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Section for management of default plugin information for use in a group of POMs.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The list of plugins to use.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="Plugin"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Reporting">
+    <xs:annotation>
+      <xs:documentation source="version">4.0.0+</xs:documentation>
+      <xs:documentation source="description">Section for management of reports and their configuration.</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="excludeDefaults" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            If true, then the default reports are not included in the site generation.
+            This includes the reports in the &quot;Project Info&quot; menu. Note: While the type
+            of this field is &lt;code&gt;String&lt;/code&gt; for technical reasons, the semantic type is actually
+            &lt;code&gt;Boolean&lt;/code&gt;. Default value is &lt;code&gt;false&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="outputDirectory" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">
+            
+            Where to store all of the generated reports. The default is
+            &lt;code&gt;${project.build.directory}/site&lt;/code&gt;.
+            
+          </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">4.0.0+</xs:documentation>
+          <xs:documentation source="description">The reporting plugins to use and their configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="ReportPlugin"/>
+          </xs:sequence>
+        </xs:complexType>
+   

<TRUNCATED>