diff --git a/maven-artifact-manager/pom.xml b/maven-artifact-manager/pom.xml index 5affeae270..5140baa6e0 100644 --- a/maven-artifact-manager/pom.xml +++ b/maven-artifact-manager/pom.xml @@ -22,6 +22,11 @@ plexus-container-default 1.0-alpha-4 + + plexus + plexus-utils + 1.0.2-SNAPSHOT + org.apache.maven.wagon wagon-provider-api diff --git a/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java b/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java index da91895a4d..40506c7578 100644 --- a/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java +++ b/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java @@ -244,6 +244,8 @@ public void getArtifact( Artifact artifact, ArtifactRepository repository ) if ( policy.isEnabled() ) { getRemoteFile( repository, artifact.getFile(), remotePath, downloadMonitor, policy.getChecksumPolicy() ); + + artifact.setResolved( true ); } else { diff --git a/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java b/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java index fa1f8f7daa..f0f0ff5bd8 100644 --- a/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java +++ b/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java @@ -114,6 +114,11 @@ private void resolve( Artifact artifact, List remoteRepositories, ArtifactReposi { wagonManager.getArtifact( artifact, remoteRepositories ); } + + if ( !artifact.isResolved() ) + { + throw new ArtifactResolutionException( "Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.", artifact, remoteRepositories ); + } // must be after the artifact is downloaded for ( Iterator i = artifact.getMetadataList().iterator(); i.hasNext(); ) @@ -135,6 +140,11 @@ private void resolve( Artifact artifact, List remoteRepositories, ArtifactReposi throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e ); } } + else if ( destination.exists() ) + { + // locally resolved...no need to hit the remote repo. + artifact.setResolved( true ); + } } } diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java index 799bce7ce4..37669ed6f4 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java @@ -128,5 +128,9 @@ public interface Artifact void setArtifactId( String artifactId ); boolean isSnapshot(); + + void setResolved( boolean resolved ); + + boolean isResolved(); } \ No newline at end of file diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java index ea4b5f23a8..26f0fef531 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java @@ -72,6 +72,8 @@ public class DefaultArtifact private VersionRange versionRange; + private boolean resolved = false; + public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler ) { @@ -436,4 +438,14 @@ public boolean isSnapshot() } } + public void setResolved( boolean resolved ) + { + this.resolved = resolved; + } + + public boolean isResolved() + { + return resolved; + } + } diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java index 49fbfd1c48..1678e23e8d 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java @@ -150,6 +150,12 @@ public ArtifactResolutionException( String message, Artifact artifact, List remo remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), t ); } + public ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail() ); + } + public ArtifactResolutionException( String message, Artifact artifact ) { this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), null, diff --git a/maven-project/src/main/java/org/apache/maven/project/artifact/ActiveProjectArtifact.java b/maven-project/src/main/java/org/apache/maven/project/artifact/ActiveProjectArtifact.java index de9c50c226..2c0cdfd5d9 100644 --- a/maven-project/src/main/java/org/apache/maven/project/artifact/ActiveProjectArtifact.java +++ b/maven-project/src/main/java/org/apache/maven/project/artifact/ActiveProjectArtifact.java @@ -220,4 +220,14 @@ public int compareTo( Object o ) { return artifact.compareTo( o ); } + + public void setResolved( boolean resolved ) + { + artifact.setResolved( resolved ); + } + + public boolean isResolved() + { + return artifact.isResolved(); + } }