Author: bentmann Date: Thu Feb 24 17:22:48 2011 New Revision: 1074222 URL: http://svn.apache.org/viewvc?rev=1074222&view=rev Log: o Extended debug logging for project dependency graph to include source location of dependency management
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java?rev=1074222&r1=1074221&r2=1074222&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java Thu Feb 24 17:22:48 2011 @@ -28,6 +28,8 @@ import org.apache.maven.artifact.Artifac import org.apache.maven.model.Dependency; import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.Exclusion; +import org.apache.maven.model.InputLocation; +import org.apache.maven.model.InputSource; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; @@ -43,6 +45,8 @@ import org.sonatype.aether.graph.Depende import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.util.DefaultRequestTrace; +import org.sonatype.aether.util.artifact.ArtifacIdUtils; +import org.sonatype.aether.util.artifact.ArtifactProperties; import org.sonatype.aether.util.artifact.JavaScopes; /** @@ -194,6 +198,8 @@ public class DefaultProjectDependenciesR private String indent = ""; + private Map<String, Dependency> managed; + public GraphLogger( MavenProject project ) { this.project = project; @@ -213,12 +219,16 @@ public class DefaultProjectDependenciesR if ( node.getPremanagedScope() != null && !node.getPremanagedScope().equals( dep.getScope() ) ) { - buffer.append( " (scope managed from " ).append( node.getPremanagedScope() ).append( ")" ); + buffer.append( " (scope managed from " ).append( node.getPremanagedScope() ); + appendManagementSource( buffer, art, "scope" ); + buffer.append( ")" ); } if ( node.getPremanagedVersion() != null && !node.getPremanagedVersion().equals( art.getVersion() ) ) { - buffer.append( " (version managed from " ).append( node.getPremanagedVersion() ).append( ")" ); + buffer.append( " (version managed from " ).append( node.getPremanagedVersion() ); + appendManagementSource( buffer, art, "version" ); + buffer.append( ")" ); } } else @@ -240,6 +250,41 @@ public class DefaultProjectDependenciesR return true; } + private void appendManagementSource( StringBuilder buffer, org.sonatype.aether.artifact.Artifact artifact, + String field ) + { + if ( managed == null ) + { + managed = new HashMap<String, Dependency>(); + if ( project.getDependencyManagement() != null ) + { + for ( Dependency dep : project.getDependencyManagement().getDependencies() ) + { + managed.put( dep.getManagementKey(), dep ); + } + } + } + + String key = + ArtifacIdUtils.toVersionlessId( artifact.getGroupId(), artifact.getArtifactId(), + artifact.getProperty( ArtifactProperties.TYPE, "jar" ), + artifact.getClassifier() ); + + Dependency dependency = managed.get( key ); + if ( dependency != null ) + { + InputLocation location = dependency.getLocation( field ); + if ( location != null ) + { + InputSource source = location.getSource(); + if ( source != null ) + { + buffer.append( " by " ).append( source.getModelId() ); + } + } + } + } + } }