From d64970af4d29bd88faa373985c8af7dc3e594843 Mon Sep 17 00:00:00 2001 From: Brett Leslie Porter Date: Wed, 11 May 2005 02:13:18 +0000 Subject: [PATCH] propogate more ArtifactResolutionExceptions directly git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@169557 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/maven/artifact/ant/Pom.java | 5 ++ .../metadata/ArtifactMetadataSource.java | 3 +- .../resolver/ArtifactResolutionException.java | 53 +++++++++++++++++-- .../artifact/resolver/ArtifactResolver.java | 1 + .../resolver/DefaultArtifactResolver.java | 53 +++---------------- ...TransitiveArtifactResolutionException.java | 15 +++--- .../java/org/apache/maven/DefaultMaven.java | 8 ++- .../maven/plugin/DefaultPluginManager.java | 2 +- .../maven/plugin/PluginNotFoundException.java | 6 +-- .../usability/ArtifactResolverDiagnoser.java | 4 ++ .../project/DefaultMavenProjectBuilder.java | 23 +++----- .../maven/project/MavenProjectBuilder.java | 4 +- .../project/artifact/MavenMetadataSource.java | 11 +--- 13 files changed, 98 insertions(+), 90 deletions(-) diff --git a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java index 3ba77bbf38..eac993b5a0 100755 --- a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java +++ b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java @@ -17,6 +17,7 @@ package org.apache.maven.artifact.ant; */ import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.model.Build; import org.apache.maven.model.CiManagement; import org.apache.maven.model.DependencyManagement; @@ -90,6 +91,10 @@ public class Pom { throw new BuildException( "Unable to build project: " + file, e ); } + catch ( ArtifactResolutionException e ) + { + throw new BuildException( "Unable to build project: " + file, e ); + } } else if ( refid != null ) { diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java b/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java index 500f20d9a6..0a5cb49e33 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java @@ -17,6 +17,7 @@ package org.apache.maven.artifact.metadata; */ import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.repository.ArtifactRepository; import java.util.List; @@ -29,5 +30,5 @@ import java.util.Set; public interface ArtifactMetadataSource { Set retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException; + throws ArtifactMetadataRetrievalException, ArtifactResolutionException; } \ No newline at end of file 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 b83f8f059e..da9ed0dcb9 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 @@ -1,6 +1,10 @@ package org.apache.maven.artifact.resolver; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.repository.ArtifactRepository; + +import java.util.Iterator; +import java.util.List; /* * Copyright 2001-2005 The Apache Software Foundation. @@ -33,19 +37,55 @@ public class ArtifactResolutionException private String type; - public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type, Throwable t ) + private List remoteRepositories; + + public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type, + List remoteRepositories, Throwable t ) { - super( "Unable to resolve artifact " + groupId + ":" + artifactId + ":" + version + ":" + type + "\n" + message, t ); + super( constructMessage( message, groupId, artifactId, version, type, remoteRepositories ), t ); this.groupId = groupId; this.artifactId = artifactId; this.type = type; this.version = version; + this.remoteRepositories = remoteRepositories; } - public ArtifactResolutionException( String message, Artifact artifact, Throwable t ) + private static final String LS = System.getProperty( "line.separator" ); + + private static String constructMessage( String message, String groupId, String artifactId, String version, + String type, List remoteRepositories ) { - this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), t ); + StringBuffer sb = new StringBuffer(); + + sb.append( message ); + sb.append( LS ); + sb.append( LS ); + sb.append( groupId + ":" + artifactId + ":" + version + ":" + type ); + sb.append( LS ); + sb.append( LS ); + sb.append( "from the specified remote repositories:" ); + sb.append( LS ); + sb.append( LS ); + + for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); ) + { + ArtifactRepository remoteRepository = (ArtifactRepository) i.next(); + + sb.append( remoteRepository.getUrl() ); + if ( i.hasNext() ) + { + sb.append( ", " ); + } + } + + return sb.toString(); + } + + public ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, Throwable t ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + remoteRepositories, t ); } public ArtifactResolutionException( String message, Throwable cause ) @@ -72,4 +112,9 @@ public class ArtifactResolutionException { return type; } + + public List getRemoteRepositories() + { + return remoteRepositories; + } } diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java index c90e2024ab..eff151a657 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java @@ -18,6 +18,7 @@ package org.apache.maven.artifact.resolver; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; +import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java index e93bf51145..fc53a29e50 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java @@ -100,7 +100,7 @@ public class DefaultArtifactResolver } catch ( ArtifactMetadataRetrievalException e ) { - throw new ArtifactResolutionException( e.getMessage(), e ); + throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e ); } } @@ -128,49 +128,19 @@ public class DefaultArtifactResolver } catch ( ResourceDoesNotExistException e ) { - throw new ArtifactResolutionException( artifactNotFound( localPath, remoteRepositories ), artifact, e ); + throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e ); } catch ( TransferFailedException e ) { - throw new ArtifactResolutionException( e.getMessage(), artifact, e ); + throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e ); } catch ( ArtifactMetadataRetrievalException e ) { - throw new ArtifactResolutionException( "Error downloading artifact " + artifact, e ); + throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e ); } } } - private static final String LS = System.getProperty( "line.separator" ); - - private String artifactNotFound( String path, List remoteRepositories ) - { - StringBuffer sb = new StringBuffer(); - - sb.append( "The artifact is not present locally as:" ); - sb.append( LS ); - sb.append( LS ); - sb.append( path ); - sb.append( LS ); - sb.append( LS ); - sb.append( "or in any of the specified remote repositories:" ); - sb.append( LS ); - sb.append( LS ); - - for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); ) - { - ArtifactRepository remoteRepository = (ArtifactRepository) i.next(); - - sb.append( remoteRepository.getUrl() ); - if ( i.hasNext() ) - { - sb.append( ", " ); - } - } - - return sb.toString(); - } - // ---------------------------------------------------------------------- // Transitive modes // ---------------------------------------------------------------------- @@ -182,14 +152,7 @@ public class DefaultArtifactResolver { ArtifactResolutionResult artifactResolutionResult; - try - { - artifactResolutionResult = collect( artifacts, localRepository, remoteRepositories, source, filter ); - } - catch ( TransitiveArtifactResolutionException e ) - { - throw new ArtifactResolutionException( "Error transitively resolving artifacts: ", e ); - } + artifactResolutionResult = collect( artifacts, localRepository, remoteRepositories, source, filter ); for ( Iterator i = artifactResolutionResult.getArtifacts().values().iterator(); i.hasNext(); ) { @@ -223,7 +186,7 @@ public class DefaultArtifactResolver private ArtifactResolutionResult collect( Set artifacts, ArtifactRepository localRepository, List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter ) - throws TransitiveArtifactResolutionException + throws ArtifactResolutionException { ArtifactResolutionResult result = new ArtifactResolutionResult(); @@ -303,8 +266,8 @@ public class DefaultArtifactResolver } catch ( ArtifactMetadataRetrievalException e ) { - throw new TransitiveArtifactResolutionException( "Error retrieving metadata [" + newArtifact + - "] : ", e ); + throw new TransitiveArtifactResolutionException( e.getMessage(), newArtifact, + remoteRepositories, e ); } // the pom for given dependency exisit we will add it to the diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/TransitiveArtifactResolutionException.java b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/TransitiveArtifactResolutionException.java index 2a2f4d522d..e69dfac9eb 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/TransitiveArtifactResolutionException.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/TransitiveArtifactResolutionException.java @@ -1,5 +1,9 @@ package org.apache.maven.artifact.resolver; +import org.apache.maven.artifact.Artifact; + +import java.util.List; + /* * Copyright 2001-2005 The Apache Software Foundation. * @@ -21,16 +25,11 @@ package org.apache.maven.artifact.resolver; * @version $Id$ */ public class TransitiveArtifactResolutionException - extends Exception + extends ArtifactResolutionException { - public TransitiveArtifactResolutionException( String message ) + public TransitiveArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, Throwable t ) { - super( message ); - } - - public TransitiveArtifactResolutionException( Throwable cause ) - { - super( cause ); + super( message, artifact, remoteRepositories, t ); } public TransitiveArtifactResolutionException( String message, Throwable cause ) diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index d1fcc7984d..73a67d84bf 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -128,6 +128,10 @@ public class DefaultMaven { throw new ReactorException( "Error processing projects for the reactor: ", e ); } + catch ( ArtifactResolutionException e ) + { + throw new ReactorException( "Error processing projects for the reactor: ", e ); + } try { @@ -169,7 +173,7 @@ public class DefaultMaven } private List collectProjects( List files, ArtifactRepository localRepository, boolean recursive ) - throws ProjectBuildingException, ReactorException, IOException + throws ProjectBuildingException, ReactorException, IOException, ArtifactResolutionException { List projects = new ArrayList( files.size() ); @@ -278,7 +282,7 @@ public class DefaultMaven } public MavenProject getProject( File pom, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { if ( pom.exists() ) { diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java index caebde26bd..8e4f8c9cf6 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java @@ -252,7 +252,7 @@ public class DefaultPluginManager if ( groupId.equals( e.getGroupId() ) && artifactId.equals( e.getArtifactId() ) && version.equals( e.getVersion() ) && "maven-plugin".equals( e.getType() ) ) { - throw new PluginNotFoundException( groupId, artifactId, version, e ); + throw new PluginNotFoundException( e ); } else { diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java index 881267c124..07331432cb 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java @@ -27,9 +27,9 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionException; public class PluginNotFoundException extends ArtifactResolutionException { - public PluginNotFoundException( String groupId, String artifactId, String version, ArtifactResolutionException e ) + public PluginNotFoundException( ArtifactResolutionException e ) { - super( "Mojo could not be found - check that the goal name is correct", groupId, artifactId, version, - "maven-plugin", e ); + super( "Mojo could not be found - check that the goal name is correct", e.getGroupId(), e.getArtifactId(), + e.getVersion(), "maven-plugin", e.getRemoteRepositories(), e ); } } diff --git a/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java b/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java index 7a5757283f..442683c553 100644 --- a/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java +++ b/maven-core/src/main/java/org/apache/maven/usability/ArtifactResolverDiagnoser.java @@ -18,8 +18,12 @@ package org.apache.maven.usability; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.TransitiveArtifactResolutionException; +import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.project.ProjectBuildingException; +import java.util.List; +import java.util.Iterator; + public class ArtifactResolverDiagnoser implements ErrorDiagnoser { diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index d1bea27e60..2be934a211 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -137,13 +137,13 @@ public class DefaultMavenProjectBuilder } public MavenProject build( File projectDescriptor, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { return buildFromSourceFile( projectDescriptor, localRepository ); } private MavenProject buildFromSourceFile( File projectDescriptor, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { Model model = readModel( projectDescriptor ); @@ -168,7 +168,7 @@ public class DefaultMavenProjectBuilder public MavenProject buildFromRepository( Artifact artifact, List remoteArtifactRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository ); @@ -178,20 +178,13 @@ public class DefaultMavenProjectBuilder private Model findModelFromRepository( Artifact artifact, List remoteArtifactRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { Model model = getCachedModel( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() ); if ( model == null ) { - try - { - // TODO: can't assume artifact is a POM - artifactResolver.resolve( artifact, remoteArtifactRepositories, localRepository ); - } - catch ( ArtifactResolutionException e ) - { - throw new ProjectBuildingException( "Unable to find artifact: " + artifact.toString(), e ); - } + // TODO: can't assume artifact is a POM + artifactResolver.resolve( artifact, remoteArtifactRepositories, localRepository ); // String path = localRepository.pathOfMetadata( new ProjectArtifactMetadata( artifact, null ) ); // File file = new File( localRepository.getBasedir(), path ); @@ -202,7 +195,7 @@ public class DefaultMavenProjectBuilder } private MavenProject build( String pomLocation, Model model, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { Model superModel = getSuperModel(); @@ -285,7 +278,7 @@ public class DefaultMavenProjectBuilder private MavenProject assembleLineage( Model model, LinkedList lineage, List aggregatedRemoteWagonRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException + throws ProjectBuildingException, ArtifactResolutionException { aggregatedRemoteWagonRepositories.addAll( buildArtifactRepositories( model.getRepositories() ) ); diff --git a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java index 6f425b3a49..144702b4c6 100644 --- a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java @@ -36,7 +36,7 @@ public interface MavenProjectBuilder static final String STANDALONE_SUPERPOM_VERSION = "2.0"; MavenProject build( File project, ArtifactRepository localRepository ) - throws ProjectBuildingException; + throws ProjectBuildingException, ArtifactResolutionException; MavenProject buildWithDependencies( File project, ArtifactRepository localRepository, ArtifactMetadataSource artifactMetadataSource ) @@ -53,7 +53,7 @@ public interface MavenProjectBuilder */ MavenProject buildFromRepository( Artifact artifact, List remoteArtifactRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException; + throws ProjectBuildingException, ArtifactResolutionException; MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository ) throws ProjectBuildingException; diff --git a/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java index 7c64b379f8..33d2b06e98 100644 --- a/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java +++ b/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java @@ -74,7 +74,7 @@ public class MavenMetadataSource } public Set retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException + throws ArtifactMetadataRetrievalException, ArtifactResolutionException { // TODO: only metadata is really needed - resolve as metadata artifact = artifactFactory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(), @@ -103,14 +103,7 @@ public class MavenMetadataSource // need to be able to not have a project builder // TODO: remove - which then makes this a very thin wrapper around a project builder - is it needed? - try - { - artifactResolver.resolve( artifact, remoteRepositories, localRepository ); - } - catch ( ArtifactResolutionException e ) - { - throw new ArtifactMetadataRetrievalException( "Error while resolving metadata artifact", e ); - } + artifactResolver.resolve( artifact, remoteRepositories, localRepository ); FileReader reader = null; try