diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-repository-metadata/src/main/mdo/metadata.mdo')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-repository-metadata/src/main/mdo/metadata.mdo | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-repository-metadata/src/main/mdo/metadata.mdo b/framework/src/maven/apache-maven-3.3.3/maven-repository-metadata/src/main/mdo/metadata.mdo new file mode 100644 index 00000000..97920027 --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-repository-metadata/src/main/mdo/metadata.mdo @@ -0,0 +1,371 @@ +<!-- +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. +--> + +<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd" + xsd.namespace="http://maven.apache.org/METADATA/${version}" + xml.schemaLocation="http://maven.apache.org/xsd/metadata-${version}.xsd"> + <id>repository-metadata</id> + <name>Metadata</name> + <description><![CDATA[ + <p>Per-directory repository metadata, for directories representing un-versioned artifact, snapshot artifact + or a group containing Maven plugins.</p> + <p>Notice that most metadata content has a meaning when the directory represents + an artifact (<code>groupId</code>, <code>artifactId</code>, <code>versioning</code>), but + <code>plugins</code> is used when the directory represents a group.</p>]]> + </description> + <defaults> + <default> + <key>package</key> + <value>org.apache.maven.artifact.repository.metadata</value> + </default> + </defaults> + <classes> + <class rootElement="true" java.clone="deep"> + <name>Metadata</name> + <version>1.0.0+</version> + <fields> + <field xml.attribute="true"> + <name>modelVersion</name> + <version>1.1.0+</version> + <type>String</type> + <description>The version of the underlying metadata model.</description> + </field> + <field> + <name>groupId</name> + <version>1.0.0+</version> + <type>String</type> + <description>The groupId that this directory represents, if any.</description> + </field> + <field> + <name>artifactId</name> + <version>1.0.0+</version> + <type>String</type> + <description>The artifactId that this directory represents, if any.</description> + </field> + <field> + <name>version</name> + <version>1.0.0+</version> + <type>String</type> + <description>The version that this directory represents, if any. It is used for artifact snapshots only.</description> + </field> + <field> + <name>versioning</name> + <version>1.0.0+</version> + <association> + <type>Versioning</type> + </association> + <description>Versioning information for the artifact.</description> + </field> + <field xdoc.separator="blank"> + <name>plugins</name> + <version>1.0.0+</version> + <description>The set of plugin mappings for the group represented by this directory</description> + <association> + <type>Plugin</type> + <multiplicity>*</multiplicity> + </association> + </field> + </fields> + <codeSegments> + <codeSegment> + <version>1.0.0+</version> + <code><![CDATA[ + public boolean merge( Metadata sourceMetadata ) + { + boolean changed = false; + + for ( Plugin plugin : sourceMetadata.getPlugins() ) + { + boolean found = false; + + for ( Plugin preExisting : getPlugins() ) + { + if ( preExisting.getPrefix().equals( plugin.getPrefix() ) ) + { + found = true; + break; + } + } + + if ( !found ) + { + Plugin mappedPlugin = new Plugin(); + + mappedPlugin.setArtifactId( plugin.getArtifactId() ); + + mappedPlugin.setPrefix( plugin.getPrefix() ); + + mappedPlugin.setName( plugin.getName() ); + + addPlugin( mappedPlugin ); + + changed = true; + } + } + + Versioning versioning = sourceMetadata.getVersioning(); + if ( versioning != null ) + { + Versioning v = getVersioning(); + if ( v == null ) + { + v = new Versioning(); + setVersioning( v ); + changed = true; + } + + for ( String version : versioning.getVersions() ) + { + if ( !v.getVersions().contains( version ) ) + { + changed = true; + v.getVersions().add( version ); + } + } + + if ( "null".equals( versioning.getLastUpdated() ) ) + { + versioning.setLastUpdated( null ); + } + + if ( "null".equals( v.getLastUpdated() ) ) + { + v.setLastUpdated( null ); + } + + if ( versioning.getLastUpdated() == null || versioning.getLastUpdated().length() == 0 ) + { + // this should only be for historical reasons - we assume local is newer + versioning.setLastUpdated( v.getLastUpdated() ); + } + + if ( v.getLastUpdated() == null || v.getLastUpdated().length() == 0 + || versioning.getLastUpdated().compareTo( v.getLastUpdated() ) >= 0 ) + { + changed = true; + v.setLastUpdated( versioning.getLastUpdated() ); + + if ( versioning.getRelease() != null ) + { + changed = true; + v.setRelease( versioning.getRelease() ); + } + if ( versioning.getLatest() != null ) + { + changed = true; + v.setLatest( versioning.getLatest() ); + } + + Snapshot s = v.getSnapshot(); + Snapshot snapshot = versioning.getSnapshot(); + if ( snapshot != null ) + { + if ( s == null ) + { + s = new Snapshot(); + v.setSnapshot( s ); + changed = true; + } + + // overwrite + if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null + : !s.getTimestamp().equals( snapshot.getTimestamp() ) ) + { + s.setTimestamp( snapshot.getTimestamp() ); + changed = true; + } + if ( s.getBuildNumber() != snapshot.getBuildNumber() ) + { + s.setBuildNumber( snapshot.getBuildNumber() ); + changed = true; + } + if ( s.isLocalCopy() != snapshot.isLocalCopy() ) + { + s.setLocalCopy( snapshot.isLocalCopy() ); + changed = true; + } + } + } + } + return changed; + } + ]]></code> + </codeSegment> + </codeSegments> + </class> + <class java.clone="deep"> + <name>Versioning</name> + <version>1.0.0+</version> + <description>Versioning information for an artifact (un-versioned or snapshot)</description> + <fields> + <field> + <name>latest</name> + <version>1.0.0+</version> + <type>String</type> + <description>What the latest version in the directory is, including snapshots</description> + </field> + <field> + <name>release</name> + <version>1.0.0+</version> + <type>String</type> + <description>What the latest version in the directory is, of the releases only</description> + </field> + <field> + <name>snapshot</name> + <version>1.0.0+</version> + <association> + <type>Snapshot</type> + </association> + <description>The current snapshot data in use for this version (artifact snapshots only)</description> + </field> + <field> + <name>versions</name> + <version>1.0.0+</version> + <description>Versions available of the artifact (both releases and snapshots)</description> + <association> + <type>String</type> + <multiplicity>*</multiplicity> + </association> + </field> + <field> + <name>lastUpdated</name> + <version>1.0.0+</version> + <type>String</type> + <description>When the metadata was last updated</description> + </field> + <field> + <name>snapshotVersions</name> + <version>1.1.0+</version> + <description>Information for each sub-artifact available in this artifact snapshot.</description> + <association> + <type>SnapshotVersion</type> + <multiplicity>*</multiplicity> + </association> + </field> + </fields> + <codeSegments> + <codeSegment> + <version>1.0.0+</version> + <code><![CDATA[ + public void updateTimestamp() + { + setLastUpdatedTimestamp( new java.util.Date() ); + } + + public void setLastUpdatedTimestamp( java.util.Date date ) + { + java.util.TimeZone timezone = java.util.TimeZone.getTimeZone( "UTC" ); + java.text.DateFormat fmt = new java.text.SimpleDateFormat( "yyyyMMddHHmmss" ); + fmt.setTimeZone( timezone ); + setLastUpdated( fmt.format( date ) ); + } + ]]></code> + </codeSegment> + </codeSegments> + </class> + <class java.clone="deep"> + <name>Snapshot</name> + <version>1.0.0+</version> + <description>Snapshot data for the current artifact version</description> + <fields> + <field> + <name>timestamp</name> + <version>1.0.0+</version> + <description>The time it was deployed</description> + <type>String</type> + </field> + <field> + <name>buildNumber</name> + <version>1.0.0+</version> + <description>The incremental build number</description> + <type>int</type> + </field> + <field> + <name>localCopy</name> + <version>1.0.0+</version> + <description>Whether to use a local copy instead (with filename that includes the base version)</description> + <type>boolean</type> + <defaultValue>false</defaultValue> + </field> + </fields> + </class> + <class java.clone="deep"> + <name>SnapshotVersion</name> + <version>1.1.0+</version> + <description>Versioning information for a sub-artifact of the current snapshot artifact.</description> + <fields> + <field> + <name>classifier</name> + <version>1.1.0+</version> + <type>String</type> + <description>The classifier of the sub-artifact.</description> + <defaultValue></defaultValue> + </field> + <field> + <name>extension</name> + <version>1.1.0+</version> + <type>String</type> + <description>The file extension of thesub-artifact.</description> + </field> + <field xml.tagName="value"> + <name>version</name> + <version>1.1.0+</version> + <type>String</type> + <description>The resolved snapshot version of the sub-artifact.</description> + </field> + <field> + <name>updated</name> + <version>1.1.0+</version> + <type>String</type> + <description>The timestamp when this version information was last updated. The timestamp is expressed using UTC in the format yyyyMMddHHmmss.</description> + </field> + </fields> + </class> + <class java.clone="deep"> + <name>Plugin</name> + <version>1.0.0+</version> + <description>Mapping information for a single plugin within this group</description> + <comment>NOTE: plugin version is _NOT_ included here, since it is resolved using a separate algorithm in plugins' artifact.</comment> + <fields> + <field> + <name>name</name> + <type>String</type> + <required>true</required> + <version>1.0.0+</version> + <description>Display name for the plugin.</description> + </field> + <field> + <name>prefix</name> + <type>String</type> + <required>true</required> + <version>1.0.0+</version> + <description>The plugin invocation prefix (i.e. eclipse for eclipse:eclipse)</description> + </field> + <field> + <name>artifactId</name> + <type>String</type> + <required>true</required> + <version>1.0.0+</version> + <description>The plugin artifactId</description> + </field> + </fields> + </class> + </classes> +</model> |