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 2011/07/27 12:48:35 UTC

svn commit: r1151424 - /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java

Author: bentmann
Date: Wed Jul 27 10:48:35 2011
New Revision: 1151424

URL: http://svn.apache.org/viewvc?rev=1151424&view=rev
Log:
[MNG-5135] Regression: in some cases aggregator mojo is unable to resolve dependencies with custom packaging

Modified:
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java?rev=1151424&r1=1151423&r2=1151424&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDependencyResolver.java Wed Jul 27 10:48:35 2011
@@ -93,42 +93,56 @@ public class LifecycleDependencyResolver
                                             boolean aggregating, Set<Artifact> projectArtifacts )
         throws LifecycleExecutionException
     {
-        if ( project.getDependencyArtifacts() == null )
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        try
         {
-            try
+            ClassLoader projectRealm = project.getClassRealm();
+            if ( projectRealm != null && projectRealm != tccl )
             {
-                project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
+                Thread.currentThread().setContextClassLoader( projectRealm );
             }
-            catch ( InvalidDependencyVersionException e )
+
+            if ( project.getDependencyArtifacts() == null )
             {
-                throw new LifecycleExecutionException( e );
+                try
+                {
+                    project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
+                }
+                catch ( InvalidDependencyVersionException e )
+                {
+                    throw new LifecycleExecutionException( e );
+                }
             }
-        }
 
-        Set<Artifact> artifacts =
-            getDependencies( project, scopesToCollect, scopesToResolve, session, aggregating, projectArtifacts );
+            Set<Artifact> artifacts =
+                getDependencies( project, scopesToCollect, scopesToResolve, session, aggregating, projectArtifacts );
 
-        project.setResolvedArtifacts( artifacts );
+            project.setResolvedArtifacts( artifacts );
 
-        Map<String, Artifact> map = new HashMap<String, Artifact>();
-        for ( Artifact artifact : artifacts )
-        {
-            map.put( artifact.getDependencyConflictId(), artifact );
-        }
-        for ( Artifact artifact : project.getDependencyArtifacts() )
-        {
-            if ( artifact.getFile() == null )
+            Map<String, Artifact> map = new HashMap<String, Artifact>();
+            for ( Artifact artifact : artifacts )
             {
-                Artifact resolved = map.get( artifact.getDependencyConflictId() );
-                if ( resolved != null )
+                map.put( artifact.getDependencyConflictId(), artifact );
+            }
+            for ( Artifact artifact : project.getDependencyArtifacts() )
+            {
+                if ( artifact.getFile() == null )
                 {
-                    artifact.setFile( resolved.getFile() );
-                    artifact.setDependencyTrail( resolved.getDependencyTrail() );
-                    artifact.setResolvedVersion( resolved.getVersion() );
-                    artifact.setResolved( true );
+                    Artifact resolved = map.get( artifact.getDependencyConflictId() );
+                    if ( resolved != null )
+                    {
+                        artifact.setFile( resolved.getFile() );
+                        artifact.setDependencyTrail( resolved.getDependencyTrail() );
+                        artifact.setResolvedVersion( resolved.getVersion() );
+                        artifact.setResolved( true );
+                    }
                 }
             }
         }
+        finally
+        {
+            Thread.currentThread().setContextClassLoader( tccl );
+        }
     }
 
     private Set<Artifact> getDependencies( MavenProject project, Collection<String> scopesToCollect,