You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by lt...@apache.org on 2005/10/12 02:15:15 UTC
svn commit: r312982 - in /maven/maven-1/plugins/trunk/pom: ./
src/plugin-resources/ src/plugin-resources/xsd/ src/plugin-resources/xsl/
Author: ltheussl
Date: Tue Oct 11 17:15:09 2005
New Revision: 312982
URL: http://svn.apache.org/viewcvs?rev=312982&view=rev
Log:
New attempt at pom:validate:
Every pom that does not extend another one (a root pom) has to comply
with the schema ${plugin.resources}/xsd/pom-strict-3.xsd (this needs review).
Running "pom:validate" on a child pom
will create another schema ${plugin.resources}/xsd/pom-extend-3.xsd
(if this doesn't exist already) via an xslt transformation using the
stylesheet ${plugin.resources}/xsl/pom-extend-3.xsl. This just replaces
all 'minOccurs="1"' attributes in pom-strict-3.xsd by 'minOccurs="0"'.
Namespace is still a problem, I removed it from the xsd (xml:parse seems not
to work on documents with namespace declarations?).
Added:
maven/maven-1/plugins/trunk/pom/src/plugin-resources/
maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/
maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/pom-strict-3.xsd
maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/readme.txt
maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/
maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/pom-extend-3.xsl
Modified:
maven/maven-1/plugins/trunk/pom/plugin.jelly
maven/maven-1/plugins/trunk/pom/project.xml
Modified: maven/maven-1/plugins/trunk/pom/plugin.jelly
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/pom/plugin.jelly?rev=312982&r1=312981&r2=312982&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/pom/plugin.jelly (original)
+++ maven/maven-1/plugins/trunk/pom/plugin.jelly Tue Oct 11 17:15:09 2005
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
/*
- * Copyright 2001-2004 The Apache Software Foundation.
+ * Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,8 @@
xmlns:plugin="plugin"
xmlns:util="jelly:util"
xmlns:ant="jelly:ant"
+ xmlns:x="jelly:xml"
+ xmlns:log="jelly:log"
xmlns:artifact="artifact">
<!-- set up pom tag library -->
@@ -59,14 +61,41 @@
name="pom:validate"
description="Validate the Maven XML project descriptor">
- <j:set var="xsd"
- value="${maven.home}/maven-project-${pom.pomVersion}.xsd"/>
- <util:file var="xsdAsFile" name="${xsd}"/>
- <j:if test="${not(xsdAsFile.exists())}">
- <j:set var="xsd"
- value="${maven.home}/maven-project.xsd"/>
+ <j:set var="xsd" value="${plugin.resources}/xsd/pom-strict-3.xsd"/>
+
+ <util:file var="pomAsFile" name="${pom.file.canonicalPath}" />
+ <j:if test="${pomAsFile != null}">
+ <x:parse var="parsedPom" xml="${pomAsFile}"/>
+ <x:set var="extends" select="$parsedPom/project/extend"/>
</j:if>
- <echo>xsd file: ${xsd}</echo>
+
+ <x:if select="$extends">
+ <log:warn>
+ <j:whitespace>
+ *** WARNING ***
+ *** The current pom extends <x:expr select="$parsedPom/project/extend"/>
+ *** This parent pom has to be validated separately!
+ </j:whitespace>
+ </log:warn>
+ <j:set var="available" value="false"/>
+ <util:available file="${plugin.resources}/xsd/pom-extend-3.xsd">
+ <j:set var="available" value="true"/>
+ </util:available>
+ <j:if test="${available == 'false'}">
+ <j:set var="xsl" value="${plugin.resources}/xsl/pom-extend-3.xsl"/>
+ <x:transform
+ xslt="file://${xsl}"
+ xml="file://${xsd}"
+ var="tmpVar"
+ validate="false"/>
+ <j:file name="${plugin.resources}/xsd/pom-extend-3.xsd">
+ <x:copyOf select="$tmpVar"/>
+ </j:file>
+ </j:if>
+ <j:set var="xsd" value="${plugin.resources}/xsd/pom-extend-3.xsd"/>
+ </x:if>
+
+ <log:info>Using xsd file: ${xsd}</log:info>
<plugin:validate-xml
schema="${xsd}"
@@ -84,7 +113,7 @@
<j:set var="notices" value="${contentvalidator.execute()}"/>
<j:forEach var="notice" items="${notices}">
- <echo>${notice.Level} : ${notice.Section} : ${notice.Message}</echo>
+ <log:info>${notice.Level} : ${notice.Section} : ${notice.Message}</log:info>
</j:forEach>
</goal>
Modified: maven/maven-1/plugins/trunk/pom/project.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/pom/project.xml?rev=312982&r1=312981&r2=312982&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/pom/project.xml (original)
+++ maven/maven-1/plugins/trunk/pom/project.xml Tue Oct 11 17:15:09 2005
@@ -88,6 +88,11 @@
<version>1.4-dev-8</version>
</dependency>
<dependency>
+ <groupId>commons-jelly</groupId>
+ <artifactId>commons-jelly-tags-log</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
<groupId>maven</groupId>
<artifactId>maven</artifactId>
<version>1.0</version>
Added: maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/pom-strict-3.xsd
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/pom-strict-3.xsd?rev=312982&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/pom-strict-3.xsd (added)
+++ maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/pom-strict-3.xsd Tue Oct 11 17:15:09 2005
@@ -0,0 +1,1534 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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">
+ <xs:element name="project" type="Model">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The
+ <code>&lt;project&gt;</code> element specifies
+ various attributes about a project. This is the root element of the
+ project descriptor. The following table lists all of the possible child
+ elements. Child elements with children are then documented further in
+ subsequent sections.</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
+ <code>&lt;project&gt;</code> element specifies
+ various attributes about a project. This is the root element of the
+ project descriptor. The following table lists all of the possible child
+ elements. Child elements with children are then documented further in
+ subsequent sections.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="extend" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.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 path may
+ be absolute, or relative to the current project.xml file. <div
+ class="source"><pre>&lt;extend&gt;${basedir}/../project.xml&lt;/extend&gt;</pre></div></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="pomVersion">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The current version of the
+ Maven project descriptor. This version number enables Maven to
+ automatically update an out-of-date project descriptor when a new
+ version is available. This version number should not be changed
+ after the descriptor has been created. Maven will update it
+ automatically.</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ </xs:element>
+
+ <xs:element minOccurs="0" name="id" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The short name of the
+ project. This value is used when naming <a
+ href="/plugins/java/index.html">jars</a> and <a
+ href="/plugins/dist/index.html">distribution
+ files</a>.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="1" name="groupId" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The short name of the project
+ group. This value is used to group all jars for a project in one
+ directory. For more info look at the <a
+ href="/user-guide.html#Naming%20Conventions">user
+ guide</a>.</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 short name of the
+ project. This value is used in conjunction with
+ <code>groupId</code> when naming <a
+ href="/plugins/java/index.html">jars</a> and <a
+ href="/plugins/dist/index.html">distribution
+ files</a>.</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.
+ This value is used when generating <a
+ href="/plugins/javadoc/index.html">JavaDoc</a>
+ titles.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="1" name="currentVersion" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The current version of the
+ project. This value is used when naming <a
+ href="/plugins/java/index.html">jars</a> and <a
+ href="/plugins/dist/index.html">distribution
+ files</a>.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="shortDescription" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">A short description of the
+ project. The short description should be limited to a single
+ line.</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">Optional. A detailed
+ description of the project. This description is used as the default
+ to generate the <a href="/plugins/site/index.html">Mailing
+ Lists</a> of the project's web site, and is shown when
+ <code>maven --usage</code> is called on the project.
+ While this element can be specified as CDATA to enable the use of
+ HTML tags within the description, you are encouraged to provide an
+ alternative home page using <code>xdocs/index.xml</code>
+ if this is required.</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's
+ homepage.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="logo" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The URL to the project's logo
+ image. This can be an URL relative to the base directory of the
+ generated web site, (e.g.,
+ <code>/images/project-logo.png</code>) or an absolute
+ URL (e.g.,
+ <code>http://my.corp/project-logo.png</code>). This is
+ used when generating the project documentation.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="issueTrackingUrl" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. The URL to the
+ project's issue tracking system.</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's
+ inception specified with 4 digits. This value is used when
+ generating <a
+ href="/plugins/javadoc/index.html">JavaDoc</a> copyright
+ notices.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="gumpRepositoryId" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. This is the Id of
+ the Gump repository that this project is part of (assuming it
+ participates in the Gump integration effort).</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="siteAddress" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. The hostname of the
+ web server that hosts the project's web site. This is used when the
+ web site is <a
+ href="/plugins/site/index.html">deployed</a>.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="siteDirectory" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. The directory on
+ the web server where the public web site for this project resides.
+ This is used when the web site is <a
+ href="/plugins/site/index.html">deployed</a>.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="distributionSite" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. The server server
+ where the final distributions will be published. This is used when
+ the distributions are <a
+ href="/plugins/dist/index.html">deployed</a>. <p> If
+ this isn't defined, the central repository is used instead as
+ determined by <code>maven.repo.central</code> and
+ <code>maven.repo.central.directory</code>
+ </p></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="distributionDirectory" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. The directory on
+ the web server where the final distributions will be published. This
+ is used when the distributions are <a
+ href="/plugins/dist/index.html">deployed</a>.</xs:documentation>
+ </xs:annotation>
+ </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's mailing lists. This is used to generate the <a
+ href="/plugins/site/index.html">front page</a> of the
+ site's web site.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="mailingList"
+ type="MailingList"/>
+ </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 to a
+ project. This is used to generate the <a
+ href="/plugins/site/index.html">Project Team</a> page of
+ the project's web site.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="developer"
+ 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. This is used to generate the <a
+ href="/plugins/site/index.html">Project Team</a> page of
+ the project's web site.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="contributor"
+ type="Contributor"/>
+ </xs:sequence>
+ </xs:complexType>
+ </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
+ <code>license</code> element, which is then described by
+ additional elements (described below). The auto-generated site
+ documentation references this information. Projects should only list
+ the license(s) that applies to the project and not the licenses that
+ apply to dependencies.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="license"
+ type="License"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="versions">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. Contains
+ information on previous versions of the project. This information is
+ used when invoking the <a
+ href="/plugins/dist/index.html"><code>maven:dist</code></a>
+ target.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="version"
+ type="Version"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="branches">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. Contains
+ information on branches of the project. This information is used
+ when invoking the <a
+ href="/plugins/dist/index.html"><code>maven:dist</code></a>
+ target.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="branch"
+ type="Branch"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="packageGroups">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Package groups required for
+ complete javadocs.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded"
+ name="packageGroup" type="PackageGroup"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="reports">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element includes the
+ specification of reports to be included in a Maven-generated site.
+ These reports will be run when a user executes <code>maven
+ site</code>. All of the reports will be included in the
+ navigation bar for browsing in the order they are
+ specified.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="report"
+ type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="repository" type="Repository">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Specification for the SCM
+ used by the project.</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="properties">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Project properties that will
+ be used by various plugins</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="package" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The Java package name of the
+ project. This value is used when generating <a
+ href="/plugins/javadoc/index.html">JavaDoc</a>.</xs:documentation>
+ </xs:annotation>
+ </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="dependencies">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description"><p> This element
+ describes all of the dependencies associated with a project. Each
+ dependency is described by a <code>dependency</code>
+ element, which is then described by additional elements (described
+ below). </p> <p> These dependencies are used to
+ construct a classpath for your project during the build process.
+ </p> <p> Maven can automatically download these
+ dependencies from a <a
+ href="/user-guide.html#Remote%20Repository%20Layout">remote
+ repository</a>. </p> <p> The filename that Maven
+ downloads from the repository is
+ <code>artifactId-version.jar</code> where
+ <code>artifactId</code> corresponds to the
+ <code>artifactId</code> element and
+ <code>version</code> corresponds to the
+ <code>version</code> element. </p> <p> When
+ Maven goes looking for a dependency in the remote repository, it
+ uses the dependency element to construct the URL to download from.
+ This URL is defined as: </p> <div class="source">
+ <pre>${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}</pre>
+ </div> <p> Where </p> <dl>
+ <dt>repo</dt> <dd> is the remote repository URL
+ specified by <code>${maven.repo.remote}</code>
+ </dd> <dt>groupId</dt> <dd>is taken from the
+ dependency element</dd> <dt>type</dt> <dd>is
+ taken from the dependency element</dd>
+ <dt>artifactId</dt> <dd>is taken from the
+ dependency element</dd> <dt>version</dt>
+ <dd>is taken from the dependency element</dd>
+ </dl></xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="dependency"
+ type="Dependency"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="Build">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="nagEmailAddress" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">An address to which
+ notifications regarding the status of builds for this project can be
+ sent. This is intended for use by tools which do unattended builds,
+ for example those providing for continuous integration. Currently
+ this is used by the <a href="/plugins/gump/">gump
+ plugin</a> target.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="sourceDirectory" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">This element specifies a
+ directory containing the source of the project. The generated build
+ system will compile the source in this directory when the project is
+ built. The path given is relative to the project
+ descriptor.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="unitTestSourceDirectory"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element specifies a
+ directory containing the unit test source of the project. The
+ generated build system will compile these directories when the
+ project is being tested. The unit tests must use the JUnit test
+ framework. The path given is relative to the project
+ descriptor.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="aspectSourceDirectory" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element specifies a
+ directory containing Aspect sources of the project. The generated
+ build system will compile the Aspects in this directory when the
+ project is built if Aspects have been enabled (see the <a
+ href="/plugins/aspectj/goals.html">Aspectj goals</a>
+ document). The path given is relative to the project
+ descriptor.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="integrationUnitTestSourceDirectory"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element specifies a
+ directory containing integration test sources of the
+ project.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="sourceModifications">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element describes all of
+ the sourceModifications associated with a project. Each source
+ modification is described by a
+ <code>sourceModification</code> element, which is then
+ described by additional elements (described below). These
+ modifications are used to exclude or include various source
+ depending on the environment the build is running
+ in.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
+ name="sourceModification" type="SourceModification"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="unitTest" type="UnitTest">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element specifies unit
+ tests associated with the project.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <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.</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 resources associated with a project or unit tests. Each resource
+ is described by a resource element, which is then described by
+ additional elements (described <a
+ href="#resource">below</a>). These resources are used to
+ complete the jar file or to run unit test.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="resource"
+ type="Resource"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="UnitTest">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="resources">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="resource"
+ type="Resource"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="includes">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="include"
+ 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">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="exclude"
+ type="xs:string"/>
+ </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
+ resources associated with a project or unit tests. Each resource is
+ described by a resource element, which is then described by additional
+ elements (described <a href="#resource">below</a>). These
+ resources are used to complete the jar file or to run unit
+ test.</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. For example, if you want that resource appear into a specific
+ package (<code>org.apache.maven.messages</code>), you
+ must specify this element with this value :
+ <code>org/apache/maven/messages</code></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element default="false" minOccurs="0" name="filtering"
+ type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Boolean. Describe if
+ resources are filtered or not.</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 resource is stored. The path may be absolute, or relative to the
+ project.xml file.</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">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="include"
+ 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">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="exclude"
+ type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="SourceModification">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element describes all of the
+ sourceModifications associated with a project. Each source modification
+ is described by a <code>sourceModification</code> element,
+ which is then described by additional elements (described below). These
+ modifications are used to exclude or include various source depending on
+ the environment the build is running in.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="className" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">If the class with this name
+ can <strong>not</strong> be loaded, then the includes
+ and excludes specified below will be applied to the contents of the
+ <a
+ href="#sourceDirectory">sourceDirectory</a></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="property" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">the
+ description</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 resource is stored. The path may be absolute, or relative to the
+ project.xml file.</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">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="include"
+ 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">the
+ description</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="exclude"
+ type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </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 who
+ produces this project.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element 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's
+ home page.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="logo" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The URL to the organization's
+ logo image. This can be an URL relative to the base directory of the
+ generated web site, (e.g.,
+ <code>/images/org-logo.png</code>) or an absolute URL
+ (e.g., <code>http://my.corp/logo.png</code>). This value
+ is used when generating the project
+ documentation.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="Developer">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">Information about one of the
+ committers on this project. Derived from
+ <code>Contributor</code>.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="id" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The username of the
+ developer.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element 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
+ <code>role</code> element, the body of which is a role
+ name.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="role"
+ 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. This is a number in the range -11 to 12.</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 maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
+ </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:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="id" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description"><p>The name of the
+ dependency.</p> <p> <strong>Note:</strong>
+ The use of the id element for a dependency is deprecated. Please use
+ <code>groupId</code> and
+ <code>artifactId</code> together instead.
+ </p></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element 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.
+ <code>geronimo</code>.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element 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.
+ <code>germonimo-jms</code></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element 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. <code>3.2.1</code></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">This url will be provided to
+ the user if the jar file cannot be downloaded from the central
+ repository.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="jar" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Literal name of the artifact.
+ Used to override the calculated artifact name.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element default="jar" minOccurs="0" name="type" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The type of dependency. This
+ defaults to <code>jar</code>. Known recognised
+ dependency types are: <ul>
+ <li><code>jar</code></li>
+ <li><code>ejb</code></li>
+ <li><code>plugin</code></li>
+ </ul></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
+ dependency. Various plugins allow you to
+ <code>mark</code> dependencies with properties. For
+ example the <a href="/plugins/war/index.html">war</a>
+ plugin looks for a <code>war.bundle</code> property, and
+ if found will include the dependency in
+ <code>WEB-INF/lib</code>. For example syntax, check the
+ war plugin docs.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="Repository">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="connection" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description"><p> Optional. The
+ source configuration management system URL that describes the
+ repository and how to connect to the repository. This is used by
+ Maven when <a href="/plugins/dist/index.html">building
+ versions</a> from specific ID. </p> <p> The format
+ of this element is as follows: </p>
+ <pre>scm:&lt;provider&gt;:&lt;provider-parameters&gt;</pre>
+ <p>For cvs, the format for pserver repositories should
+ be:</p> <div class="source">
+ <pre>scm:cvs:pserver:user@host:/cvs/root:module-name</pre>
+ </div> <p> For local networked repositories (eg. pserver
+ to local machine) </p> <div class="source">
+ <pre>scm:cvs:lserver:user@host:/cvs/root:module-name</pre>
+ </div> <p> For ssh access: </p> <div
+ class="source">
+ <pre>scm:cvs:ext:user@host:/cvs/root:module-name</pre>
+ </div> Remember that CVS will expect an environment variable
+ called <code>CVS_RSH</code> to be set, typically to
+ <code>ssh</code> or your ssh client. <p> Some cvs
+ clients support other protocols, such as ntserver and extssh. Here's
+ an example using CVS NT and ntserver: </p> <div
+ class="source">
+ <pre>scm|cvs|ntserver|user@server|e:\cvs|Deployment</pre>
+ </div> Note the use of the vertical bar as delimiter as the
+ repository has a colon (<code>:</code>) in it. <p>
+ For local file system repositories </p> <div
+ class="source">
+ <pre>scm:cvs:local:ignored:/cvs/root:module-name</pre>
+ </div> <p> For StarTeam access: </p> <div
+ class="source">
+ <pre>scm:starteam:username:password@host:port/project/view/folder</pre>
+ </div> All of this information can be had from either the
+ StarTeam Universal Client (Tools-&gt;Server
+ Administration-&gt;Server Properties) or from the administrator.
+ <p> The delimiter is determined by the character after "scm".
+ eg.
+ <code>scm|cvs|pserver|user@host|/cvs/root|module-name</code>
+ is equivalent to that listed above. This can be useful for Windows
+ users who have : in their cvsroot parameter (eg. D:\cvsroot)
+ </p> <p> Where <code>pserver</code> is the
+ protocol used to access CVS, <code>user@host</code> is
+ the user name to log in to the specified cvs
+ <strong>host</strong>,
+ <code>/cvs/root</code> is the cvs root directory, and
+ <code>module-name</code> is the name of the cvs module
+ to be worked on </p> <p>As an example, the settings for
+ an Apache project are usually:</p>
+ <pre>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:module-name</pre>
+ <p> Currently CVS, Starteam and SubVersion are the only
+ supported scm's. Others will be added as soon as possible
+ </p></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="developerConnection" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Just like connection, but for
+ developers, i.e. this scm connection will not be read
+ only.</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's
+ browsable CVS repository.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="PackageGroup">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element minOccurs="0" name="title" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">the
+ description</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="packages" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">the
+ description</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="Version">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">This element describes each of
+ the previous versions of the project. Each version is described by a
+ <code>version</code> element</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="name" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The external version number
+ under which this release was distributed. Examples include:
+ <code>1.0</code>, <code>1.1-alpha1</code>,
+ <code>1.2-beta</code>, <code>1.3.2</code>
+ etc.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="tag" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The name given in the version
+ control system (e.g. cvs) used by the project for the source code
+ associated with this version of the project.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="id" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">A unique identifier for a
+ version. This ID is used to specify the version that <a
+ href="/plugins/dist/index.html">
+ <code>maven:dist</code> </a>
+ builds.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="License">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">Describes the licenses for this
+ project. This is used to generate the <a
+ href="/plugins/site/index.html">License</a> page of the
+ project's web site. Typically the licenses listed for the project are
+ that of the project itself, and not of dependencies.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="name" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The full legal name of the
+ license.</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 official url for the
+ license text.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="distribution" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The primary method by which
+ this project may be distributed. <dl>
+ <dt>repo</dt> <dd>may be downloaded from the Maven
+ repository</dd> <dt>manual</dt> <dd>user
+ must manually download and install the dependency.</dd>
+ </dl></xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="comments" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">Addendum information
+ pertaining to this license.</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 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
+ <code>role</code> element, the body of which is a role
+ name.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="role"
+ 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. This is a number in the range -11 to 12.</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 maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="Branch">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">Optional. Contains information on
+ branches of the project. This information is used when invoking the
+ <a
+ href="/plugins/dist/index.html"><code>maven:dist</code></a>
+ target.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="tag" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0</xs:documentation>
+
+ <xs:documentation source="description">The branch tag in the version
+ control system (e.g. cvs) used by the project for the source code
+ associated with this branch of the project.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="MailingList">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">This element describes all of the
+ mailing lists associated with a project. Each mailing list is described
+ by a <code>mailingList</code> element, which is then
+ described by additional elements (described below). The auto-generated
+ site documentation references this information.</xs:documentation>
+ </xs:annotation>
+
+ <xs:all>
+ <xs:element name="name" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The name of the mailing
+ list.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="subscribe" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The email address or link
+ that can be used to subscribe to the mailing list. If this is an
+ email address, a <code>mailto:</code> link will
+ automatically be created when the documentation is
+ created.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="unsubscribe" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The email address or link
+ that can be used to unsubscribe to the mailing list. If this is an
+ email address, a <code>mailto:</code> link will
+ automatically be created when the documentation is
+ created.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="post" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The email address or link
+ that can be used to post to the mailing list. If this is an email
+ address, a <code>mailto:</code> link will automatically
+ be created when the documentation is created.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="archive" type="xs:string">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The link to a URL where you
+ can browse the mailing list archive.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element minOccurs="0" name="otherArchives">
+ <xs:annotation>
+ <xs:documentation source="version">3.0.0+</xs:documentation>
+
+ <xs:documentation source="description">The link to other URLs where
+ you can browse the list archive.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
+ name="otherArchive" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+</xs:schema>
Added: maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/readme.txt
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/readme.txt?rev=312982&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/readme.txt (added)
+++ maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsd/readme.txt Tue Oct 11 17:15:09 2005
@@ -0,0 +1,17 @@
+Every pom that does not extend another one (a 'root' pom) has to comply
+with the schema ${plugin.resources}/xsd/pom-strict-3.xsd.
+
+Running "pom:validate" on a child pom (a pom that extends another one)
+will create another schema ${plugin.resources}/xsd/pom-extend-3.xsd
+(if this doesn't exist already) via an xslt transformation using the
+stylesheet ${plugin.resources}/xsl/pom-extend-3.xsl. This just replaces
+all 'minOccurs="1"' attributes in pom-strict-3.xsd by 'minOccurs="0"'.
+
+
+Note:
+
+* Every element that is required in a root pom but is not obligatory
+ in a child pom, needs a 'minOccurs="1"'.
+
+* Elements that are required in both parent and child poms, must not have
+ a 'minOccurs' attribute (so they default to 1).
Added: maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/pom-extend-3.xsl
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/pom-extend-3.xsl?rev=312982&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/pom-extend-3.xsl (added)
+++ maven/maven-1/plugins/trunk/pom/src/plugin-resources/xsl/pom-extend-3.xsl Tue Oct 11 17:15:09 2005
@@ -0,0 +1,38 @@
+<!--
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
+
+ <xsl:output method="xml" indent="yes" />
+
+ <xsl:template match="*|text()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="*[@minOccurs]">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="minOccurs">0</xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>