From b1fc5fb287a45ce6100bd32a32347e1cf154bc83 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 11 Apr 2007 20:26:34 +0000 Subject: [PATCH] Model / Configuration / Repository Layer / Proxy Updates git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches@527649 13f79535-47bb-0310-9956-ffa450edef68 --- .../MavenProxyPropertyLoader.java | 8 +- .../src/main/mdo/configuration.mdo | 111 +-- .../archiva/configuration/default-archiva.xml | 8 +- .../MavenProxyPropertyLoaderTest.java | 2 +- .../archiva/model/ArchivaModelCloner.java | 131 ++- .../archiva/model/ArchivaRepository.java | 43 +- ...dencyKey.java => ProjectReferenceKey.java} | 14 +- .../src/main/mdo/archiva-base.xml | 649 ++++++++++--- .../archiva-base/archiva-proxy/pom.xml | 6 +- .../proxy/DefaultProxyRequestHandler.java | 855 ------------------ .../DefaultRepositoryProxyConnectors.java | 561 ++++++++++++ .../proxy/ProxiedArtifactRepository.java | 200 ---- .../maven/archiva/proxy/ProxyConnector.java | 131 +++ .../archiva/proxy/ProxyRequestHandler.java | 104 --- .../proxy/RepositoryProxyConnectors.java | 83 ++ .../proxy/policy/ArtifactUpdatePolicy.java | 139 +++ .../archiva/proxy/policy/ChecksumPolicy.java | 252 ++++++ .../archiva/proxy/policy/PostfetchPolicy.java | 42 + .../archiva/proxy/policy/PrefetchPolicy.java | 41 + .../archiva/proxy/AbstractProxyTestCase.java | 94 ++ .../proxy/RepositoryProxyConnectorsTest.java | 116 +++ .../AbstractArtifactExtensionMapping.java | 13 +- .../content/ArtifactExtensionMapping.java | 6 +- .../layout/BidirectionalRepositoryLayout.java | 22 +- .../BidirectionalRepositoryLayoutFactory.java | 50 + .../DefaultBidirectionalRepositoryLayout.java | 58 +- .../LegacyBidirectionalRepositoryLayout.java | 60 +- .../repository/project/ProjectModelMerge.java | 91 +- .../filters/EffectiveProjectModelFilter.java | 6 +- .../filters/ProjectModelExpressionFilter.java | 8 +- .../readers/ProjectModel400Reader.java | 61 +- .../resolvers/RepositoryProjectResolver.java | 2 +- .../archiva/repository/layout/AllTests.java | 2 + ...irectionalRepositoryLayoutFactoryTest.java | 77 ++ ...aultBidirectionalRepositoryLayoutTest.java | 8 +- ...gacyBidirectionalRepositoryLayoutTest.java | 8 +- .../EffectiveProjectModelFilterTest.java | 112 ++- .../ProjectModelExpressionExpanderTest.java | 19 +- .../readers/ProjectModel400ReaderTest.java | 10 +- 39 files changed, 2700 insertions(+), 1503 deletions(-) rename archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/{DependencyKey.java => ProjectReferenceKey.java} (79%) delete mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultProxyRequestHandler.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java delete mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxiedArtifactRepository.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java delete mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRequestHandler.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/RepositoryProxyConnectors.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/policy/ArtifactUpdatePolicy.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/policy/ChecksumPolicy.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/policy/PostfetchPolicy.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/policy/PrefetchPolicy.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/RepositoryProxyConnectorsTest.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayoutFactory.java create mode 100644 archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayoutFactoryTest.java diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoader.java b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoader.java index 070ed0539..599e36ac7 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoader.java +++ b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoader.java @@ -62,7 +62,7 @@ public class MavenProxyPropertyLoader String key = tok.nextToken(); if ( StringUtils.isNotEmpty( key ) ) { - ProxyConfiguration proxy = new ProxyConfiguration(); + NetworkProxyConfiguration proxy = new NetworkProxyConfiguration(); proxy.setHost( getMandatoryProperty( props, "proxy." + key + ".host" ) ); proxy.setPort( Integer.parseInt( getMandatoryProperty( props, "proxy." + key + ".port" ) ) ); @@ -104,9 +104,9 @@ public class MavenProxyPropertyLoader proxyConnector.setSourceRepoId( "maven-proxy" ); proxyConnector.setTargetRepoId( key ); proxyConnector.setProxyId( proxyKey ); - proxyConnector.setFailurePolicy( RepositoryProxyConnectorConfiguration.NOT_FOUND ); - proxyConnector.setSnapshotsPolicy( String.valueOf( cachePeriod ) ); - proxyConnector.setReleasesPolicy( RepositoryProxyConnectorConfiguration.NEVER ); + // TODO: convert cachePeriod to closest "daily" or "hourly" + proxyConnector.setSnapshotsPolicy( "daily" ); + proxyConnector.setReleasesPolicy( "never" ); configuration.addProxyConnector( proxyConnector ); } diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo index 5bf26e4ba..ccac6d6e6 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo +++ b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo @@ -67,7 +67,7 @@ networkProxies 1.0.0+ - ProxyConfiguration + NetworkProxyConfiguration * @@ -320,79 +320,58 @@ 1.0.0+ String disabled - - The policy for snapshots: - Can be one of the following keywords: - "disabled" - means retrieval isn't even attempted. - "daily" - means snapshot is fetched, but only updated on - a daily basis. (equivalent to "1440" minutes) - "hourly" - means snapshot is fetched, but only updated on - an hourly basis. (equivalent to "60" minutes) - "never" - means snapshot is fetched once, but never updated. - (equivalent to "-1" minutes) - Or it can be a number of minutes before updating of the snapshot. - + + + The policy for snapshots, one of the following: + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#DISABLED disabled}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#DAILY daily}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#HOURLY hourly}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#ONCE once} +

+ + @see org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy + ]]> +
releasesPolicy 1.0.0+ String never - - The policy for releases: - Can be one of the following keywords: - "disabled" - means retrieval isn't even attempted. - "daily" - means release is fetched, but only updated on - a daily basis. (equivalent to "1440" minutes) - "hourly" - means release is fetched, but only updated on - an hourly basis. (equivalent to "60" minutes) - "never" - means release is fetched once, but never updated. - (equivalent to "-1" minutes) - Or it can be a number of minutes before updating of the release. + + + The policy for releases, one of the following: + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#DISABLED disabled}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#DAILY daily}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#HOURLY hourly}, + {@link org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy#ONCE once} +

+ + @see org.apache.maven.archiva.proxy.policy.ArtifactUpdatePolicy + ]]>
- - failurePolicy - 1.0.0+ - String - not-found + + checksumPolicy + 1.0.0+ + String + fail - The policy for dealing with proxy failures. - Can be one of the following keywords: - "not-found" - means if the retrieval has a failure, an HTTP 404 - (not found) is returned to the client of this - archiva instance. - This policy setting will allow other proxies - to be checked for content. - "failure" - means if the retrieval has a failure, an HTTP 500 - (server error) is returned to the client of this - archiva instance. - This policy setting will return immediately to the - client of the archiva instance and not allow - furthor attempts on other proxies for this content. - + + The policy for dealing with checksums, one of the following: + {@link org.apache.maven.archiva.proxy.policy.ChecksumPolicy#FAIL fail}, + {@link org.apache.maven.archiva.proxy.policy.ChecksumPolicy#FIX fix}, or + {@link org.apache.maven.archiva.proxy.policy.ChecksumPolicy#IGNORE ignore} +

+ + @see org.apache.maven.archiva.proxy.policy.ChecksumPolicy + ]]> +
- - - 1.0.0+ - - - @@ -438,7 +417,7 @@ --> - ProxyConfiguration + NetworkProxyConfiguration 1.0.0+ @@ -453,12 +432,12 @@ protocol 1.0.0+ - The network protocol to use with this proxy. + The network protocol to use with this proxy: "http", "socks-4" String true http - + host 1.0.0+ diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/resources/org/apache/maven/archiva/configuration/default-archiva.xml b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/resources/org/apache/maven/archiva/configuration/default-archiva.xml index ba150b058..42c508556 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/resources/org/apache/maven/archiva/configuration/default-archiva.xml +++ b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/main/resources/org/apache/maven/archiva/configuration/default-archiva.xml @@ -47,16 +47,16 @@ central disabled - never - not-found + once + fix internal maven2-repository.dev.java.net disabled - never - not-found + once + fix javax/** diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoaderTest.java b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoaderTest.java index 091126087..8d1d3909c 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoaderTest.java +++ b/archiva-jpox-database-refactor/archiva-base/archiva-configuration/src/test/java/org/apache/maven/archiva/configuration/MavenProxyPropertyLoaderTest.java @@ -42,7 +42,7 @@ public class MavenProxyPropertyLoaderTest extends PlexusTestCase File confFile = getTestFile( "src/test/conf/maven-proxy-complete.conf" ); Configuration configuration = new Configuration(); - ProxyConfiguration proxy = new ProxyConfiguration(); + NetworkProxyConfiguration proxy = new NetworkProxyConfiguration(); proxy.setHost( "original-host" ); configuration.addNetworkProxy( proxy ); // overwritten diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java index cdad4f850..7f80c89ed 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java +++ b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java @@ -54,6 +54,7 @@ public class ArchivaModelCloner cloned.setPackaging( model.getPackaging() ); cloned.setOrigin( model.getOrigin() ); + cloned.setMailingLists( cloneMailingLists( model.getMailingLists() ) ); cloned.setCiManagement( clone( model.getCiManagement() ) ); cloned.setIndividuals( cloneIndividuals( model.getIndividuals() ) ); cloned.setIssueManagement( clone( model.getIssueManagement() ) ); @@ -61,7 +62,7 @@ public class ArchivaModelCloner cloned.setOrganization( clone( model.getOrganization() ) ); cloned.setScm( clone( model.getScm() ) ); cloned.setRepositories( cloneRepositories( model.getRepositories() ) ); - cloned.setDependencies( cloneDependencies( model.getDependencies() ) ); + cloned.setDependencyTree( clone( model.getDependencyTree() ) ); cloned.setPlugins( clonePlugins( model.getPlugins() ) ); cloned.setReports( cloneReports( model.getReports() ) ); cloned.setDependencyManagement( cloneDependencies( model.getDependencyManagement() ) ); @@ -111,12 +112,15 @@ public class ArchivaModelCloner Dependency cloned = new Dependency(); + // Identification cloned.setGroupId( dependency.getGroupId() ); cloned.setArtifactId( dependency.getArtifactId() ); cloned.setVersion( dependency.getVersion() ); - cloned.setClassifier( dependency.getClassifier() ); cloned.setType( dependency.getType() ); + + // The rest. + cloned.setTransitive( dependency.isTransitive() ); cloned.setScope( dependency.getScope() ); cloned.setOptional( dependency.isOptional() ); cloned.setSystemPath( dependency.getSystemPath() ); @@ -126,6 +130,37 @@ public class ArchivaModelCloner return cloned; } + public static DependencyEdge clone( DependencyEdge edge ) + { + if ( edge == null ) + { + return null; + } + + DependencyEdge cloned = new DependencyEdge(); + + cloned.setFromDependency( clone( edge.getFromDependency() ) ); + cloned.setToDependency( clone( edge.getToDependency() ) ); + cloned.setType( edge.getType() ); + + return cloned; + } + + public static DependencyTree clone( DependencyTree dependencyTree ) + { + if ( dependencyTree == null ) + { + return null; + } + + DependencyTree cloned = new DependencyTree(); + + cloned.setDependencyNodes( cloneDependencies( dependencyTree.getDependencyNodes() ) ); + cloned.setDependencyEdges( cloneDependencyEdges( dependencyTree.getDependencyEdges() ) ); + + return cloned; + } + public static IssueManagement clone( IssueManagement issueManagement ) { if ( issueManagement == null ) @@ -141,6 +176,25 @@ public class ArchivaModelCloner return cloned; } + public static MailingList clone( MailingList mailingList ) + { + if ( mailingList == null ) + { + return null; + } + + MailingList cloned = new MailingList(); + + cloned.setName( mailingList.getName() ); + cloned.setSubscribeAddress( mailingList.getSubscribeAddress() ); + cloned.setUnsubscribeAddress( mailingList.getUnsubscribeAddress() ); + cloned.setPostAddress( mailingList.getPostAddress() ); + cloned.setMainArchiveUrl( mailingList.getMainArchiveUrl() ); + cloned.setOtherArchives( cloneSimpleStringList( mailingList.getOtherArchives() ) ); + + return cloned; + } + public static Organization clone( Organization organization ) { if ( organization == null ) @@ -242,12 +296,39 @@ public class ArchivaModelCloner { Dependency dep = (Dependency) it.next(); - Dependency cloned = clone( dep ); + if ( dep == null ) + { + // Skip null dependency. + continue; + } + + ret.add( clone( dep ) ); + } + + return ret; + } + + public static List cloneDependencyEdges( List dependencyEdges ) + { + if ( dependencyEdges == null ) + { + return null; + } + + List ret = new ArrayList(); - if ( cloned != null ) + Iterator it = dependencyEdges.iterator(); + while ( it.hasNext() ) + { + DependencyEdge edge = (DependencyEdge) it.next(); + + if ( edge == null ) { - ret.add( cloned ); + // Skip empty edge. + continue; } + + ret.add( clone( edge ) ); } return ret; @@ -336,6 +417,32 @@ public class ArchivaModelCloner return ret; } + public static List cloneMailingLists( List mailingLists ) + { + if ( mailingLists == null ) + { + return null; + } + + List ret = new ArrayList(); + + Iterator it = mailingLists.iterator(); + while ( it.hasNext() ) + { + MailingList mailingList = (MailingList) it.next(); + + if ( mailingList == null ) + { + // Skip null mailing list. + continue; + } + + ret.add( clone( mailingList ) ); + } + + return ret; + } + public static List clonePlugins( List plugins ) { return cloneArtifactReferences( plugins ); @@ -377,18 +484,24 @@ public class ArchivaModelCloner public static List cloneRoles( List roles ) { - if ( roles == null ) + return cloneSimpleStringList( roles ); + } + + private static List cloneSimpleStringList( List simple ) + { + if ( simple == null ) { return null; } List ret = new ArrayList(); - Iterator it = roles.iterator(); + Iterator it = simple.iterator(); + while ( it.hasNext() ) { - String roleName = (String) it.next(); - ret.add( roleName ); + String txt = (String) it.next(); + ret.add( txt ); } return ret; diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java index 78c4b6648..c1911b6ee 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java +++ b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepository.java @@ -19,8 +19,6 @@ package org.apache.maven.archiva.model; * under the License. */ - - /** * ArchivaRepository * @@ -29,14 +27,10 @@ package org.apache.maven.archiva.model; */ public class ArchivaRepository { -// protected ArtifactRepositoryPolicy releases; -// -// protected ArtifactRepositoryPolicy snapshots; - private ArchivaRepositoryModel model; private RepositoryURL url; - + protected boolean blacklisted; /** @@ -59,10 +53,7 @@ public class ArchivaRepository /** * Construct a Repository. * - * @param id the unique identifier for this repository. - * @param name the name for this repository. - * @param url the base URL for this repository (this should point to the top level URL for the entire repository) - * @param layout the layout technique for this repository. + * @param model the model to use */ public ArchivaRepository( ArchivaRepositoryModel model ) { @@ -102,26 +93,6 @@ public class ArchivaRepository this.blacklisted = blacklisted; } -// public ArtifactRepositoryPolicy getReleases() -// { -// return releases; -// } -// -// public void setReleases( ArtifactRepositoryPolicy releases ) -// { -// this.releases = releases; -// } -// -// public ArtifactRepositoryPolicy getSnapshots() -// { -// return snapshots; -// } -// -// public void setSnapshots( ArtifactRepositoryPolicy snapshots ) -// { -// this.snapshots = snapshots; -// } - public boolean isRemote() { return this.url.getProtocol().equals( "file" ); @@ -131,4 +102,14 @@ public class ArchivaRepository { return this.url.getProtocol().equals( "file" ); } + + public String getLayoutType() + { + return this.model.getLayoutName(); + } + + public String getName() + { + return this.model.getName(); + } } diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/DependencyKey.java b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/ProjectReferenceKey.java similarity index 79% rename from archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/DependencyKey.java rename to archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/ProjectReferenceKey.java index 929f2f142..1c99c740f 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/DependencyKey.java +++ b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/jpox/ProjectReferenceKey.java @@ -19,26 +19,26 @@ package org.apache.maven.archiva.model.jpox; * under the License. */ -import org.apache.maven.archiva.model.AbstractArtifactKey; +import org.apache.maven.archiva.model.AbstractProjectKey; import java.io.Serializable; /** - * DependencyKey - unique classid-key for JPOX. + * ProjectReferenceKey - unique classid-key for JPOX. * * @author Joakim Erdfelt * @version $Id$ */ -public class DependencyKey - extends AbstractArtifactKey +public class ProjectReferenceKey + extends AbstractProjectKey implements Serializable { - - public DependencyKey() + public ProjectReferenceKey() { + super(); } - public DependencyKey( String key ) + public ProjectReferenceKey( String key ) { super( key ); } diff --git a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/mdo/archiva-base.xml b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/mdo/archiva-base.xml index b8d17158b..6343dc764 100644 --- a/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/mdo/archiva-base.xml +++ b/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/mdo/archiva-base.xml @@ -572,6 +572,209 @@ + + + + + ProjectReference + A reference to another (unversioned) Project + 1.0.0+ + + + groupId + true + 1.0.0+ + String + true + + The Group ID of the repository content. + + + + artifactId + true + 1.0.0+ + String + true + + The Artifact ID of the repository content. + + + + + + + VersionedReference + A reference to another Versioned Project + 1.0.0+ + + + groupId + true + 1.0.0+ + String + true + + The Group ID of the repository content. + + + + artifactId + true + 1.0.0+ + String + true + + The Artifact ID of the repository content. + + + + version + true + 1.0.0+ + String + false + + The version of the repository content. + + + + + + + ArtifactReference + 1.0.0+ + + + groupId + true + 1.0.0+ + String + true + + The Group ID of the repository content. + + + + artifactId + true + 1.0.0+ + String + true + + The Artifact ID of the repository content. + + + + version + true + 1.0.0+ + String + false + + The version of the repository content. + + + + classifier + true + 1.0.0+ + String + true + + The classifier for this artifact. + + + + type + true + 1.0.0+ + String + true + + The type of artifact. + + + + + + 1.0.0+ + + + +