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,