You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/01/24 15:24:35 UTC

svn commit: r902573 - in /maven/maven-3/trunk: maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/ maven-core/src/main/java/org/apache/maven/project/artifact/

Author: bentmann
Date: Sun Jan 24 14:24:34 2010
New Revision: 902573

URL: http://svn.apache.org/viewvc?rev=902573&view=rev
Log:
[MNG-4522] Maven3 doesn't fail build when a pom from transitive dependency can't be found

Modified:
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=902573&r1=902572&r2=902573&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Sun Jan 24 14:24:34 2010
@@ -569,7 +569,10 @@
             }
             catch ( ArtifactMetadataRetrievalException e )
             {
-                // need to add metadata resolution exception
+                ArtifactResolutionException are =
+                    new ArtifactResolutionException( "Unable to get dependency information for " + rootArtifact.getId()
+                        + ": " + e.getMessage(), rootArtifact, metadataRequest.getRemoteRepositories(), e );
+                result.addMetadataResolutionException( are );
                 return result;
             }
         }

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java?rev=902573&r1=902572&r2=902573&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java Sun Jan 24 14:24:34 2010
@@ -583,8 +583,8 @@
                         {
                             artifact.setDependencyTrail( node.getDependencyTrail() );
 
-                            throw new ArtifactResolutionException( "Unable to get dependency information: "
-                                + e.getMessage(), artifact, childRemoteRepositories, e );
+                            throw new ArtifactResolutionException( "Unable to get dependency information for "
+                                + artifact.getId() + ": " + e.getMessage(), artifact, childRemoteRepositories, e );
                         }
 
                         ArtifactResolutionRequest subRequest = new ArtifactResolutionRequest( metadataRequest );

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=902573&r1=902572&r2=902573&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Sun Jan 24 14:24:34 2010
@@ -54,7 +54,10 @@
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Relocation;
+import org.apache.maven.model.building.ModelBuildingException;
 import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblem;
+import org.apache.maven.model.resolution.UnresolvableModelException;
 import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
@@ -573,17 +576,26 @@
                 }
                 catch ( ProjectBuildingException e )
                 {
+                    ModelProblem missingParentPom = hasMissingParentPom( e );
+                    if ( missingParentPom != null )
+                    {
+                        throw new ArtifactMetadataRetrievalException( "Failed to process POM for "
+                            + relocatedArtifact.getId() + ": " + missingParentPom.getMessage(),
+                                                                      missingParentPom.getException(),
+                                                                      relocatedArtifact );
+                    }
+
                     String message;
 
                     // missing/incompatible POM (e.g. a Maven 1 POM)
-                    if ( e.getCause() instanceof ArtifactResolutionException )
+                    if ( isMissingPom( e ) )
                     {
-                        message = "Missing artifact metadata for " + relocatedArtifact.getId();
+                        message = "Missing POM for " + relocatedArtifact.getId();
                     }
                     else
                     {
                         message =
-                            "Invalid artifact metadata for " + relocatedArtifact.getId()
+                            "Invalid POM for " + relocatedArtifact.getId()
                                 + ", transitive dependencies (if any) will not be available"
                                 + ", enable debug logging for more details";
                     }
@@ -693,6 +705,28 @@
         return rel;
     }
 
+    private boolean isMissingPom( ProjectBuildingException e )
+    {
+        return e.getCause() instanceof ArtifactResolutionException;
+    }
+
+    private ModelProblem hasMissingParentPom( ProjectBuildingException e )
+    {
+        if ( e.getCause() instanceof ModelBuildingException )
+        {
+            ModelBuildingException mbe = (ModelBuildingException) e.getCause();
+            for ( ModelProblem problem : mbe.getProblems() )
+            {
+                if ( problem.getException() instanceof UnresolvableModelException )
+                {
+                    return problem;
+                }
+            }
+
+        }
+        return null;
+    }
+
     private Properties getSystemProperties()
     {
         Properties props = new Properties();