From e743f23a6a26d4b1f92cef6e6f5ac1f836c3250c Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sat, 13 Jun 2009 17:32:12 +0000 Subject: [PATCH] o Fixed handling of version ranges git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@784438 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/artifact/ArtifactUtils.java | 5 ++++- .../project/artifact/MavenMetadataSource.java | 22 ++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java b/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java index ec9a5e5e77..0817253ea4 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java @@ -137,7 +137,10 @@ public static Artifact copyArtifact( Artifact artifact ) clone.setFile( artifact.getFile() ); clone.setAvailableVersions( copyList( artifact.getAvailableVersions() ) ); - clone.setBaseVersion( artifact.getBaseVersion() ); + if ( artifact.getVersion() != null ) + { + clone.setBaseVersion( artifact.getBaseVersion() ); + } clone.setDependencyFilter( artifact.getDependencyFilter() ); clone.setDependencyTrail( copyList( artifact.getDependencyTrail() ) ); clone.setDownloadUrl( artifact.getDownloadUrl() ); diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java index 03e1aa45b6..a06a70f950 100644 --- a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java +++ b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java @@ -39,6 +39,8 @@ import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.model.Dependency; import org.apache.maven.model.Exclusion; import org.apache.maven.project.DefaultProjectBuildingRequest; @@ -149,17 +151,21 @@ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepo { Artifact dependencyArtifact; - //TODO: deal with this in a unified way, probably just looking at the dependency. - if ( d.getClassifier() != null ) + VersionRange versionRange; + try { - dependencyArtifact = repositorySystem.createArtifactWithClassifier( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier() ); + versionRange = VersionRange.createFromVersionSpec( d.getVersion() ); } - else + catch ( InvalidVersionSpecificationException e ) { - dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() ); + throw new ArtifactMetadataRetrievalException( "Invalid version for dependency " + + d.getManagementKey() + ": " + e.getMessage(), e, pomArtifact ); } - dependencyArtifact.setScope( effectiveScope ); + dependencyArtifact = + repositorySystem.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), versionRange, + d.getType(), d.getClassifier(), effectiveScope, + d.isOptional() ); if ( dependencyFilter == null || dependencyFilter.include( dependencyArtifact ) ) { @@ -252,7 +258,7 @@ public List retrieveAvailableVersions( Artifact artifact, Artif } catch ( RepositoryMetadataResolutionException e ) { - throw new ArtifactMetadataRetrievalException( e.getMessage(), e ); + throw new ArtifactMetadataRetrievalException( e.getMessage(), e, artifact ); } return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() ); @@ -268,7 +274,7 @@ public List retrieveAvailableVersionsFromDeploymentRepository( } catch ( RepositoryMetadataResolutionException e ) { - throw new ArtifactMetadataRetrievalException( e.getMessage(), e ); + throw new ArtifactMetadataRetrievalException( e.getMessage(), e, artifact ); } return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );