blob: 2903da52b476eef4b7abea6e8ca98ce1a7ff4069 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
elementFormDefault="qualified">
<xs:element name="project">
<xs:complexType>
<xs:sequence>
<xs:element ref="extend" minOccurs="0"/>
<xs:element ref="pomVersion"/>
<xs:element ref="id"/>
<xs:element ref="name"/>
<xs:element ref="groupId" minOccurs="0"/>
<xs:element ref="currentVersion"/>
<xs:element ref="organization"/>
<xs:element ref="inceptionYear"/>
<xs:element ref="package" minOccurs="0"/>
<xs:element ref="logo" minOccurs="0"/>
<xs:element ref="gumpRepositoryId" minOccurs="0"/>
<xs:element ref="description" minOccurs="0"/>
<xs:element ref="shortDescription"/>
<xs:element ref="url" minOccurs="0" />
<xs:element ref="issueTrackingUrl" minOccurs="0"/>
<xs:element ref="siteAddress" minOccurs="0"/>
<xs:element ref="siteDirectory" minOccurs="0"/>
<xs:element ref="distributionSite" minOccurs="0"/>
<xs:element ref="distributionDirectory" minOccurs="0"/>
<xs:element ref="repository" minOccurs="0"/>
<xs:element ref="versions" minOccurs="0"/>
<xs:element ref="branches" minOccurs="0"/>
<xs:element ref="mailingLists" minOccurs="0"/>
<xs:element ref="developers"/>
<xs:element ref="contributors" minOccurs="0"/>
<xs:element ref="licenses" minOccurs="0"/>
<xs:element ref="dependencies" minOccurs="0"/>
<xs:element ref="build"/>
<xs:element ref="reports" minOccurs="0"/>
<xs:element ref="properties" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="extend" type='xs:string'/>
<xs:element name="connection" type='xs:string'/>
<xs:element name="developerConnection" type='xs:string'/>
<xs:element name="currentVersion" type='xs:string'/>
<xs:element name="description" type='xs:string'/>
<xs:element name="distributionSite" type='xs:string'/>
<xs:element name="distributionDirectory" type='xs:string'/>
<xs:element name="name" type='xs:string'/>
<xs:element name="groupId" type='xs:string'/>
<xs:element name="artifactId" type='xs:string'/>
<xs:element name="gumpRepositoryId" type='xs:string'/>
<xs:element name="id" type='xs:string'/>
<xs:element name="inceptionYear" type='xs:gYear'/>
<!-- not anyURI as it can contain ${pom....} -->
<xs:element name="issueTrackingUrl" type='xs:string'/>
<xs:element name="logo" type='xs:string'/>
<xs:element name="package" type='xs:string'/>
<xs:element name="pomVersion" type='xs:string'/>
<xs:element name="shortDescription" type='xs:string'/>
<xs:element name="siteAddress" type='xs:string'/>
<xs:element name="siteDirectory" type='xs:string'/>
<!-- not anyURI as it can contain ${pom....} -->
<xs:element name="url" type='xs:string'/>
<!-- /repository element -->
<xs:element name="repository">
<xs:complexType>
<xs:sequence>
<xs:element ref="connection"/>
<xs:element ref="developerConnection" minOccurs="0"/>
<xs:element ref="url" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /organization element -->
<xs:element name="organization">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="url" minOccurs="0" />
<xs:element ref="logo" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /versions element -->
<xs:element name="versions">
<xs:complexType>
<xs:sequence>
<xs:element ref="version" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /versions/version element -->
<xs:element name="version">
<xs:complexType>
<xs:sequence>
<xs:element ref="id"/>
<xs:element ref="name"/>
<xs:element ref="tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /versions/version/tag and branches/branch/tag-->
<xs:element name="tag" type='xs:string'/>
<!-- /branches element -->
<xs:element name="branches">
<xs:complexType>
<xs:sequence>
<xs:element ref="branch" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /branches/branch element -->
<xs:element name="branch">
<xs:complexType>
<xs:sequence>
<xs:element ref="tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /mailingLists element -->
<xs:element name="mailingLists">
<xs:complexType>
<xs:sequence>
<xs:element ref="mailingList" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /mailingLists/mailingList element -->
<xs:element name="mailingList">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="subscribe"/>
<xs:element ref="unsubscribe"/>
<xs:element ref="archive" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /mailingLists/mailingList/subscribe element -->
<xs:element name="subscribe" type='xs:string'/>
<!-- /mailingLists/mailingList/unsubscribe element -->
<xs:element name="unsubscribe" type='xs:string'/>
<!-- /mailingLists/mailingList/archive element -->
<xs:element name="archive" type='xs:string'/>
<!-- /developers element -->
<xs:element name="developers">
<xs:complexType>
<xs:sequence>
<xs:element ref="developer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /developers/developer element -->
<xs:element name="developer">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="id"/>
<xs:group ref="contactDetails" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /developers/developer/contactDetails group and
/contributors/contributor/contactDetails group -->
<xs:group name="contactDetails">
<xs:sequence>
<xs:element ref="email"/>
<xs:element name="organization" type='xs:string' minOccurs="0"/>
<xs:element ref="roles" minOccurs="0" />
<xs:element ref="url" minOccurs="0" />
<xs:element ref="timezone" minOccurs="0" />
</xs:sequence>
</xs:group>
<!-- contactDetails/email element -->
<xs:element name="email" type='xs:string'/>
<!-- contactDetails/roles element -->
<xs:element name="roles">
<xs:complexType>
<xs:sequence>
<xs:element ref="role" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- contactDetails/roles/role element -->
<xs:element name="role" type='xs:string'/>
<!-- type for contactDetails/roles/timezone element -->
<xs:simpleType name="timezoneType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="-14"/>
<xs:maxInclusive value="+14"/>
</xs:restriction>
</xs:simpleType>
<!-- contactDetails/roles/timezone element
Stores a decimal that is the offset to GMT.
-->
<xs:element name="timezone" type='timezoneType'/>
<!-- /contributors element -->
<xs:element name="contributors">
<xs:complexType>
<xs:sequence>
<xs:element ref="contributor" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /contributors/contributor element -->
<xs:element name="contributor">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:group ref="contactDetails" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /licenses element -->
<xs:element name="licenses">
<xs:complexType>
<xs:sequence>
<xs:element ref="license" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /licenses/license element -->
<xs:element name="license">
<xs:complexType>
<xs:sequence>
<!-- name of the license, e.g. ASL 1.1 -->
<xs:element ref="name" minOccurs="0"/>
<!-- fetchable version of the license -->
<xs:element ref="url" minOccurs="0" />
<!-- 'manual' or 'repo' -->
<xs:element ref="distribution" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /licenses/license/distribution element -->
<xs:element name="distribution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="manual|repo"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- /dependencies element -->
<xs:element name="dependencies">
<xs:complexType>
<xs:sequence>
<xs:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /dependencies/dependency element -->
<xs:element name="dependency">
<xs:complexType>
<xs:sequence>
<xs:element ref="id" minOccurs="0" />
<xs:element ref="groupId" minOccurs="0" />
<xs:element ref="artifactId" minOccurs="0" />
<xs:element name="version" type="xs:string" />
<xs:element ref="jar" minOccurs="0"/>
<xs:element ref="type" minOccurs="0"/>
<xs:element ref="url" minOccurs="0"/>
<xs:element ref="properties" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- /dependencies/dependency/type element -->
<xs:element name="type" type='xs:string'/>
<!-- /dependencies/dependency/jar element -->
<xs:element name="jar" type='xs:string'/>
<!-- /build element -->
<xs:element name="build">
<xs:complexType>
<xs:sequence>
<xs:element ref="nagEmailAddress" minOccurs="0"/>
<xs:element ref="sourceDirectory" minOccurs="0"/>
<xs:element ref="sourceModifications" minOccurs="0"/>
<xs:element ref="unitTestSourceDirectory" minOccurs="0"/>
<xs:element ref="integrationUnitTestSourceDirectory" minOccurs="0"/>
<xs:element ref="aspectSourceDirectory" minOccurs="0"/>
<xs:element ref="unitTest" minOccurs="0"/>
<!-- no longer appears in build.java
<xs:element ref="integrationUnitTest" minOccurs="0"/>
-->
<xs:element ref="resources" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="nagEmailAddress" type='xs:string'/>
<xs:element name="sourceDirectory" type='xs:string'/>
<xs:element name="sourceModifications">
<xs:complexType>
<xs:sequence>
<xs:element ref="sourceModification" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sourceModification">
<xs:complexType>
<xs:sequence>
<xs:element name="className" type='xs:string'/>
<xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unitTestSourceDirectory" type='xs:string'/>
<xs:element name="integrationUnitTestSourceDirectory" type='xs:string'/>
<xs:element name="aspectSourceDirectory" type='xs:string'/>
<xs:element name="unitTest">
<xs:complexType>
<xs:sequence>
<xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="resources" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="includes">
<xs:complexType>
<xs:sequence>
<xs:element ref="include" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="excludes">
<xs:complexType>
<xs:sequence>
<xs:element ref="exclude" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="include" type='xs:string'/>
<xs:element name="exclude" type='xs:string'/>
<!-- no longer appears in build.java
<xs:element name="integrationUnitTest">
<xs:complexType>
<xs:sequence>
<xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
-->
<xs:element name="resources">
<xs:complexType>
<xs:sequence>
<xs:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="directory" type='xs:string'/>
<xs:element name="targetPath" type='xs:string'/>
<xs:element name="filtering" type="xs:boolean" />
<xs:element name="resource">
<xs:complexType>
<xs:sequence>
<!-- FIXME: I think that this defaults to basedir, need a check -->
<xs:element ref="directory" minOccurs="0"/>
<xs:element ref="targetPath" minOccurs="0"/>
<xs:element ref="includes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="excludes" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="filtering" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reports">
<xs:complexType>
<xs:sequence>
<xs:element name="report" minOccurs="0" maxOccurs="unbounded"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="classloader">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="root|root.maven"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>