Index: maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java =================================================================== --- maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java (revision 520633) +++ maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java (working copy) @@ -102,7 +102,7 @@ Artifact projectArtifact = artifactFactory.createProjectArtifact( groupId, artifactId, version ); - addExtension( extensionArtifact, projectArtifact, remoteRepositories, localRepository, null ); + addExtension( extensionArtifact, projectArtifact, Collections.EMPTY_MAP, remoteRepositories, localRepository, null ); } public void addExtension( Extension extension, @@ -116,15 +116,15 @@ Artifact artifact = (Artifact) project.getExtensionArtifactMap().get( extensionId ); - addExtension( artifact, project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository, - new ActiveArtifactResolver( project ) ); + addExtension( artifact, project.getArtifact(), project.getManagedVersionMap(), project.getRemoteArtifactRepositories(), + localRepository, new ActiveArtifactResolver( project ) ); } private void addExtension( Artifact extensionArtifact, Artifact projectArtifact, + Map managedVersionMap, List remoteRepositories, - ArtifactRepository localRepository, - ActiveArtifactResolver activeArtifactResolver ) + ArtifactRepository localRepository, ActiveArtifactResolver activeArtifactResolver ) throws ArtifactResolutionException, PlexusContainerException, ArtifactNotFoundException { getLogger().debug( "Starting extension-addition process for: " + extensionArtifact ); @@ -134,9 +134,10 @@ ArtifactFilter filter = new ProjectArtifactExceptionFilter( artifactFilterManager.getArtifactFilter(), projectArtifact ); - ArtifactResolutionResult result = artifactResolver.resolveTransitively( - Collections.singleton( extensionArtifact ), projectArtifact, localRepository, remoteRepositories, - artifactMetadataSource, filter ); + ArtifactResolutionResult result = + artifactResolver.resolveTransitively( Collections.singleton( extensionArtifact ), projectArtifact, + managedVersionMap, localRepository, remoteRepositories, + artifactMetadataSource, filter ); for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) { Index: maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java =================================================================== --- maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (revision 520633) +++ maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (working copy) @@ -464,6 +464,7 @@ repositories.addAll( project.getRemoteArtifactRepositories() ); ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact, + project.getManagedVersionMap(), localRepository, repositories, artifactMetadataSource, coreArtifactFilterManager.getArtifactFilter() ); @@ -475,6 +476,7 @@ // Also resolve the plugin dependencies specified in : resolved.addAll( artifactResolver.resolveTransitively( projectPluginDependencies, pluginArtifact, + project.getManagedVersionMap(), localRepository, repositories, artifactMetadataSource, @@ -1256,7 +1258,9 @@ project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) ); } ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), - artifact, context.getLocalRepository(), + artifact, + project.getManagedVersionMap(), + context.getLocalRepository(), project.getRemoteArtifactRepositories(), artifactMetadataSource, filter ); Index: maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java =================================================================== --- maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (revision 520633) +++ maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (working copy) @@ -31,6 +31,7 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; +import org.apache.maven.artifact.versioning.ManagedVersionMap; import org.codehaus.plexus.PlexusTestCase; import java.util.ArrayList; @@ -809,7 +810,7 @@ private String getKey( Artifact artifact ) { - return artifact.getDependencyConflictId() + ":" + artifact.getVersionRange(); + return artifact.getDependencyConflictId(); } private Set createArtifacts( ArtifactFactory artifactFactory, Set dependencies, String inheritedScope, Index: maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ManagedVersionMap.java =================================================================== --- maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ManagedVersionMap.java (revision 0) +++ maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ManagedVersionMap.java (revision 0) @@ -0,0 +1,52 @@ +package org.apache.maven.artifact.versioning; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.HashMap; +import java.util.Map; +import java.util.Iterator; + +public class ManagedVersionMap extends HashMap +{ + public ManagedVersionMap(Map map) + { + super(); + if (map != null) + { + putAll(map); + } + } + + public String toString() + { + StringBuffer buffer = new StringBuffer("ManagedVersionMap\n"); + Iterator iter = this.keySet().iterator(); + while (iter.hasNext()) + { + String key = (String)iter.next(); + buffer.append(key).append("=").append(get(key)); + if (iter.hasNext()) + { + buffer.append("\n"); + } + } + return buffer.toString(); + } +} Index: maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java =================================================================== --- maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (revision 520633) +++ maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (working copy) @@ -25,9 +25,11 @@ import org.apache.maven.artifact.metadata.ResolutionGroup; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; +import org.apache.maven.artifact.resolver.filter.AndArtifactFilter; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.artifact.versioning.VersionRange; +import org.apache.maven.artifact.versioning.ManagedVersionMap; import java.util.ArrayList; import java.util.Collections; @@ -67,7 +69,10 @@ root.addDependencies( artifacts, remoteRepositories, filter ); - recurse( root, resolvedArtifacts, managedVersions, localRepository, remoteRepositories, source, filter, + ManagedVersionMap versionMap = (managedVersions != null && managedVersions instanceof ManagedVersionMap) ? + (ManagedVersionMap)managedVersions : new ManagedVersionMap(managedVersions); + + recurse( root, resolvedArtifacts, versionMap, localRepository, remoteRepositories, source, filter, listeners ); Set set = new LinkedHashSet(); @@ -102,29 +107,20 @@ return result; } - private void recurse( ResolutionNode node, Map resolvedArtifacts, Map managedVersions, + private void recurse( ResolutionNode node, Map resolvedArtifacts, ManagedVersionMap managedVersions, ArtifactRepository localRepository, List remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List listeners ) throws CyclicDependencyException, ArtifactResolutionException, OverConstrainedVersionException { fireEvent( ResolutionListener.TEST_ARTIFACT, listeners, node ); - // TODO: use as a conflict resolver Object key = node.getKey(); - if ( managedVersions.containsKey( key ) ) + + // TODO: Does this check need to happen here? Had to add the same call + // below when we iterate on child nodes -- will that suffice? + if ( managedVersions.containsKey( key )) { - Artifact artifact = (Artifact) managedVersions.get( key ); - - fireEvent( ResolutionListener.MANAGE_ARTIFACT, listeners, node, artifact ); - - if ( artifact.getVersion() != null ) - { - node.getArtifact().setVersion( artifact.getVersion() ); - } - if ( artifact.getScope() != null ) - { - node.getArtifact().setScope( artifact.getScope() ); - } + manageArtifact( node, managedVersions, listeners ); } List previousNodes = (List) resolvedArtifacts.get( key ); @@ -274,6 +270,38 @@ fireEvent( ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, child ); } + Object childKey = child.getKey(); + if ( managedVersions.containsKey( childKey ) ) + { + // If this child node is a managed dependency, ensure + // we are using the dependency management version + // of this child if applicable b/c we want to use the + // managed version's POM, *not* any other version's POM. + // We retrieve the POM below in the retrieval step. + manageArtifact( child, managedVersions, listeners ); + + // Also, we need to ensure that any exclusions it presents are + // added to the artifact before we retrive the metadata + // for the artifact; otherwise we may end up with unwanted + // dependencies. + Artifact ma = (Artifact) managedVersions.get( childKey ); + ArtifactFilter managedExclusionFilter = ma.getDependencyFilter(); + if ( null != managedExclusionFilter ) + { + if ( null != artifact.getDependencyFilter() ) + { + AndArtifactFilter aaf = new AndArtifactFilter(); + aaf.add( artifact.getDependencyFilter() ); + aaf.add( managedExclusionFilter ); + artifact.setDependencyFilter( aaf ); + } + else + { + artifact.setDependencyFilter( managedExclusionFilter ); + } + } + } + artifact.setDependencyTrail( node.getDependencyTrail() ); ResolutionGroup rGroup = source.retrieve( artifact, localRepository, remoteRepositories ); @@ -286,6 +314,7 @@ } child.addDependencies( rGroup.getArtifacts(), rGroup.getResolutionRepositories(), filter ); + } catch ( CyclicDependencyException e ) { @@ -311,6 +340,32 @@ } } + private void manageArtifact( ResolutionNode node, ManagedVersionMap managedVersions, List listeners ) + { + Artifact artifact = (Artifact) managedVersions.get( node.getKey() ); + + // Before we update the version of the artifact, we need to know + // whether we are working on a transitive dependency or not. This + // allows depMgmt to always override transitive dependencies, while + // explicit child override depMgmt (viz. depMgmt should only + // provide defaults to children, but should override transitives). + // We can do this by calling isChildOfRootNode on the current node. + + if ( artifact.getVersion() != null + && ( node.isChildOfRootNode() ? node.getArtifact().getVersion() == null : true ) ) + { + fireEvent( ResolutionListener.MANAGE_ARTIFACT_VERSION, listeners, node, artifact ); + node.getArtifact().setVersion( artifact.getVersion() ); + } + + if ( artifact.getScope() != null + && ( node.isChildOfRootNode() ? node.getArtifact().getScope() == null : true ) ) + { + fireEvent( ResolutionListener.MANAGE_ARTIFACT_SCOPE, listeners, node, artifact ); + node.getArtifact().setScope( artifact.getScope() ); + } + } + /** * Check if the scope needs to be updated. * More info. @@ -407,9 +462,22 @@ case ResolutionListener.UPDATE_SCOPE_CURRENT_POM: listener.updateScopeCurrentPom( node.getArtifact(), replacement.getScope() ); break; - case ResolutionListener.MANAGE_ARTIFACT: - listener.manageArtifact( node.getArtifact(), replacement ); + case ResolutionListener.MANAGE_ARTIFACT_VERSION: + if (listener instanceof ResolutionListenerForDepMgmt) { + ResolutionListenerForDepMgmt asImpl = (ResolutionListenerForDepMgmt) listener; + asImpl.manageArtifactVersion( node.getArtifact(), replacement ); + } else { + listener.manageArtifact( node.getArtifact(), replacement ); + } break; + case ResolutionListener.MANAGE_ARTIFACT_SCOPE: + if (listener instanceof ResolutionListenerForDepMgmt) { + ResolutionListenerForDepMgmt asImpl = (ResolutionListenerForDepMgmt) listener; + asImpl.manageArtifactScope( node.getArtifact(), replacement ); + } else { + listener.manageArtifact( node.getArtifact(), replacement ); + } + break; case ResolutionListener.SELECT_VERSION_FROM_RANGE: listener.selectVersionFromRange( node.getArtifact() ); break; Index: maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java =================================================================== --- maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java (revision 520633) +++ maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java (working copy) @@ -44,6 +44,9 @@ int UPDATE_SCOPE = 6; + /** + * @deprecated + */ int MANAGE_ARTIFACT = 7; int OMIT_FOR_CYCLE = 8; @@ -53,6 +56,10 @@ int SELECT_VERSION_FROM_RANGE = 10; int RESTRICT_RANGE = 11; + + int MANAGE_ARTIFACT_VERSION = 12; + + int MANAGE_ARTIFACT_SCOPE = 13; void testArtifact( Artifact node ); @@ -66,8 +73,18 @@ void updateScope( Artifact artifact, String scope ); + /** + * @deprecated + */ void manageArtifact( Artifact artifact, Artifact replacement ); + + // TODO Use the following two instead of manageArtifact + // TODO Remove ResolutionListenerDM interface + //void manageArtifactVersion( Artifact artifact, Artifact replacement ); + + //void manageArtifactScope( Artifact artifact, Artifact replacement ); + void omitForCycle( Artifact artifact ); void updateScopeCurrentPom( Artifact artifact, String scope ); Index: maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListenerForDepMgmt.java =================================================================== --- maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListenerForDepMgmt.java (revision 0) +++ maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListenerForDepMgmt.java (revision 0) @@ -0,0 +1,39 @@ +package org.apache.maven.artifact.resolver; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.maven.artifact.Artifact; + +/** + * Do not use! + * + * Should only be implmemented by DebugResolutionListener. Remove this + * when the ResolutionListener interface deprecation of the manageArtifact + * method (and the [yet to be done] addition of these methods to that + * interface) has had a chance to propagate to all interested plugins. + * + * @deprecated + */ +public interface ResolutionListenerForDepMgmt +{ + void manageArtifactVersion( Artifact artifact, Artifact replacement ); + + void manageArtifactScope( Artifact artifact, Artifact replacement ); +} \ No newline at end of file Index: maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java =================================================================== --- maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java (revision 520633) +++ maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java (working copy) @@ -30,7 +30,7 @@ * @version $Id$ */ public class DebugResolutionListener - implements ResolutionListener + implements ResolutionListener, ResolutionListenerForDepMgmt { private Logger logger; @@ -93,6 +93,12 @@ replacement.getVersionRange() + " to: " + newRange + " )" ); } + /** + * The logic used here used to be a copy of the logic used in the DefaultArtifactCollector, and this method was + * called right before the actual version/scope changes were done. However, a different set of conditionals (and + * more information) is needed to be able to determine when and if the version and/or scope changes. See the two + * added methods, manageArtifactVersion and manageArtifactScope. + */ public void manageArtifact( Artifact artifact, Artifact replacement ) { String msg = indent + artifact; @@ -108,4 +114,25 @@ msg += ")"; logger.debug( msg ); } -} + + public void manageArtifactVersion( Artifact artifact, Artifact replacement ) + { + // only show msg if a change is actually taking place + if ( !replacement.getVersion().equals( artifact.getVersion() ) ) + { + String msg = indent + artifact + " (applying version: " + replacement.getVersion() + ")"; + logger.debug( msg ); + } + } + + public void manageArtifactScope( Artifact artifact, Artifact replacement ) + { + // only show msg if a change is actually taking place + if ( !replacement.getScope().equals( artifact.getScope() ) ) + { + String msg = indent + artifact + " (applying scope: " + replacement.getScope() + ")"; + logger.debug( msg ); + } + } + +} \ No newline at end of file Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,105 @@ +package org.apache.maven.project.inheritance.t10; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Iterator; + +import org.apache.maven.model.Build; +import org.apache.maven.model.MailingList; +import org.apache.maven.model.Plugin; +import org.apache.maven.model.PluginExecution; +import org.apache.maven.model.Dependency; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; +import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.codehaus.plexus.logging.LoggerManager; +import org.codehaus.plexus.logging.Logger; + +/** + * Verifies scope inheritence of direct and transitive dependencies. + * + * Should show three behaviors: + * + * 1. dependencyManagement should override the scope of transitive dependencies. + * 2. Direct dependencies should override the scope of dependencyManagement. + * 3. Direct dependencies should inherit scope from dependencyManagement when + * they do not explicitly state a scope. + * + * @author Patrick Schneider + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + public void testDependencyManagementOverridesTransitiveDependencyVersion() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + + File pom0 = new File( localRepo, "p0/pom.xml" ); + File pom0Basedir = pom0.getParentFile(); + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load the child project, which inherits from p0... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + System.out.println("Project " + project1.getId() + " " + project1); + Map map = project1.getArtifactMap(); + assertNotNull("No artifacts", map); + assertTrue("No Artifacts", map.size() > 0); + assertTrue("Set size should be 3, is " + map.size(), map.size() == 3); + + Artifact a = (Artifact) map.get("maven-test:t10-a"); + Artifact b = (Artifact) map.get("maven-test:t10-b"); + Artifact c = (Artifact) map.get("maven-test:t10-c"); + + assertNotNull( a ); + assertNotNull( b ); + assertNotNull( c ); + + // inherited from depMgmt + assertTrue("Incorrect scope for " + a.getDependencyConflictId(), a.getScope().equals("test")); + + // transitive dep, overridden b depMgmt + assertTrue("Incorrect scope for " + b.getDependencyConflictId(), b.getScope().equals("runtime")); + + // direct dep, overrides depMgmt + assertTrue("Incorrect scope for " + c.getDependencyConflictId(), c.getScope().equals("runtime")); + + } +} \ No newline at end of file Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,83 @@ +package org.apache.maven.project.inheritance.t04; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Set; +import java.util.Iterator; + +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; + +/** + * Verifies the version of a dependency listed in a parent's + * dependencyManagement section is chosen over another version of the same + * dependency, listed transitively. + * + * @author Patrick Schneider + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // p1 has a depMgmt section that specifies versions 1.0 of jars "a" & "b" + // jar "a" has a transitive dependency on 2.0 of jar "b", but maven should + // prefer to use version 1.0. + // + // ---------------------------------------------------------------------- + + public void testDependencyManagementOverridesTransitiveDependencyVersion() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + File pom0 = new File( localRepo, "p0/pom.xml" ); + File pom0Basedir = pom0.getParentFile(); + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load the child project, which inherits from p0... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + Set set = project1.getArtifacts(); + assertNotNull("No artifacts", set); + assertTrue("No Artifacts", set.size() > 0); + assertTrue("Set size should be 3, is " + set.size(), set.size() == 3); + + Iterator iter = set.iterator(); + while (iter.hasNext()) { + Artifact artifact = (Artifact)iter.next(); + System.out.println("Artifact: " + artifact.getDependencyConflictId() + " " + artifact.getVersion() + + " Optional=" + (artifact.isOptional() ? "true" : "false")); + assertTrue("Incorrect version for " + artifact.getDependencyConflictId(), artifact.getVersion().equals("1.0")); + } + + } +} \ No newline at end of file Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,79 @@ +package org.apache.maven.project.inheritance.t05; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Set; +import java.util.Iterator; + +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; + +/** + * A test which demonstrates maven's dependency management + * + * @author Ralph Goers + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + public void testDependencyManagement() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + File pom0 = new File( localRepo, "p0/pom.xml" ); + + File pom0Basedir = pom0.getParentFile(); + + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load everything... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + Set set = project1.getArtifacts(); + assertNotNull("No artifacts", set); + assertTrue("No Artifacts", set.size() > 0); + Iterator iter = set.iterator(); + + while (iter.hasNext()) + { + Artifact artifact = (Artifact)iter.next(); + System.out.println("Artifact: " + artifact.getDependencyConflictId() + " " + + artifact.getVersion() + " Scope: " + artifact.getScope()); + assertTrue("Incorrect version for " + artifact.getDependencyConflictId(), artifact.getVersion().equals("1.0")); + } + + } +} Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,80 @@ +package org.apache.maven.project.inheritance.t06; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Set; +import java.util.Iterator; + +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; + +/** + * A test which demonstrates maven's dependency management + * + * @author Ralph Goers + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + public void testDependencyManagement() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + File pom0 = new File( localRepo, "p0/pom.xml" ); + + File pom0Basedir = pom0.getParentFile(); + + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load everything... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + Set set = project1.getArtifacts(); + assertNotNull("No artifacts", set); + assertTrue("No Artifacts", set.size() > 0); + Iterator iter = set.iterator(); + assertTrue("Set size should be 4, is " + set.size(), set.size() == 4); + + while (iter.hasNext()) + { + Artifact artifact = (Artifact)iter.next(); + System.out.println("Artifact: " + artifact.getDependencyConflictId() + " " + artifact.getVersion() + + " Optional=" + (artifact.isOptional() ? "true" : "false")); + assertTrue("Incorrect version for " + artifact.getDependencyConflictId(), artifact.getVersion().equals("1.0")); + } + + } +} Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,91 @@ +package org.apache.maven.project.inheritance.t07; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.List; +import java.util.Set; +import java.util.Iterator; + +import org.apache.maven.model.Build; +import org.apache.maven.model.MailingList; +import org.apache.maven.model.Plugin; +import org.apache.maven.model.PluginExecution; +import org.apache.maven.model.Dependency; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; +import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.codehaus.plexus.logging.LoggerManager; +import org.codehaus.plexus.logging.Logger; + +/** + * A test which demonstrates maven's dependency management + * + * @author Jason van Zyl + * @version $Id: ProjectInheritanceTest.java 391202 2006-04-04 00:40:13Z jdcasey $ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + public void testDependencyManagement() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + File pom0 = new File( localRepo, "p0/pom.xml" ); + + File pom0Basedir = pom0.getParentFile(); + + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load everything... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + System.out.println("Project " + project1.getId() + " " + project1); + Set set = project1.getArtifacts(); + assertNotNull("No artifacts", set); + assertTrue("No Artifacts", set.size() > 0); + Iterator iter = set.iterator(); + assertTrue("Set size should be 3, is " + set.size(), set.size() == 3); + + while (iter.hasNext()) + { + Artifact artifact = (Artifact)iter.next(); + assertFalse("", artifact.getArtifactId().equals("maven-test-d")); + System.out.println("Artifact: " + artifact.getDependencyConflictId() + " " + artifact.getVersion() + + " Optional=" + (artifact.isOptional() ? "true" : "false")); + assertTrue("Incorrect version for " + artifact.getDependencyConflictId(), artifact.getVersion().equals("1.0")); + } + + } +} Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,81 @@ +package org.apache.maven.project.inheritance.t08; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.Set; +import java.util.Iterator; + +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; + +/** + * A test which demonstrates maven's dependency management + * + * @author Ralph Goers + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + public void testDependencyManagement() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + File pom0 = new File( localRepo, "p0/pom.xml" ); + + File pom0Basedir = pom0.getParentFile(); + + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load everything... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + System.out.println("Project " + project1.getId() + " " + project1); + Set set = project1.getArtifacts(); + assertNotNull("No artifacts", set); + assertTrue("No Artifacts", set.size() > 0); + Iterator iter = set.iterator(); + assertTrue("Set size should be 4, is " + set.size(), set.size() == 4); + + while (iter.hasNext()) + { + Artifact artifact = (Artifact)iter.next(); + System.out.println("Artifact: " + artifact.getDependencyConflictId() + " " + artifact.getVersion() + + " Optional=" + (artifact.isOptional() ? "true" : "false")); + assertTrue("Incorrect version for " + artifact.getDependencyConflictId(), artifact.getVersion().equals("1.0")); + } + + } +} Index: maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java (revision 0) +++ maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java (revision 0) @@ -0,0 +1,131 @@ +package org.apache.maven.project.inheritance.t09; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import java.io.File; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Iterator; + +import org.apache.maven.model.Build; +import org.apache.maven.model.MailingList; +import org.apache.maven.model.Plugin; +import org.apache.maven.model.PluginExecution; +import org.apache.maven.model.Dependency; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase; +import org.apache.maven.artifact.Artifact; +import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.codehaus.plexus.logging.LoggerManager; +import org.codehaus.plexus.logging.Logger; + +/** + * Verifies exclusions listed in dependencyManagement are valid for + * transitive dependencies. + * + * @author Patrick Schneider + * @version $Id$ + */ +public class ProjectInheritanceTest + extends AbstractProjectInheritanceTestCase +{ + // ---------------------------------------------------------------------- + // + // p1 inherits from p0 + // p0 inhertis from super model + // + // or we can show it graphically as: + // + // p1 ---> p0 --> super model + // + // ---------------------------------------------------------------------- + + /** + * How the test project is set up: + * + * 1. dependencyManagement lists dependencies on a & b, + * with an exclusion on c in b. + * 2. the child project lists a dependency on project a only + * 3. a depends on b (which is transitive to the child project), + * and b depends on c. + * + * We should see that the resulting size of collected artifacts is two: + * a & b only. + */ + public void testDependencyManagementExclusionsExcludeTransitively() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + + File pom0 = new File( localRepo, "p0/pom.xml" ); + File pom0Basedir = pom0.getParentFile(); + File pom1 = new File( pom0Basedir, "p1/pom.xml" ); + + // load the child project, which inherits from p0... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project1 = getProjectWithDependencies( pom1 ); + + assertEquals( pom0Basedir, project1.getParent().getBasedir() ); + Map map = project1.getArtifactMap(); + + assertNotNull("No artifacts", map); + assertTrue("No Artifacts", map.size() > 0); + assertTrue("Set size should be 2, is " + map.size(), map.size() == 2); + + assertTrue("maven-test:t09-a is not in the project", map.containsKey( "maven-test:t09-a" )); + assertTrue("maven-test:t09-b is not in the project", map.containsKey( "maven-test:t09-b" )); + + } + + /** + * Setup exactly the same as the above test, except that the child project + * now depends upon d, which has a transitive dependency on c. Even though + * we did list an exclusion on c, it was only from within the context of + * project b. We will pick up project c in this case because no + * restrictions were placed on d. This demonstrates that a, b, c, & d will + * all be collected. + * + * @throws Exception + */ + public void testDependencyManagementExclusionDoesNotOverrideGloballyForTransitives() + throws Exception + { + File localRepo = getLocalRepositoryPath(); + + File pom0 = new File( localRepo, "p0/pom.xml" ); + File pom0Basedir = pom0.getParentFile(); + File pom2 = new File( pom0Basedir, "p2/pom.xml" ); + + // load the child project, which inherits from p0... + MavenProject project0 = getProjectWithDependencies( pom0 ); + MavenProject project2 = getProjectWithDependencies( pom2 ); + + assertEquals( pom0Basedir, project2.getParent().getBasedir() ); + Map map = project2.getArtifactMap(); + assertNotNull( "No artifacts", map ); + assertTrue( "No Artifacts", map.size() > 0 ); + assertTrue( "Set size should be 4, is " + map.size(), map.size() == 4 ); + + assertTrue( "maven-test:t09-a is not in the project", map.containsKey( "maven-test:t09-a" ) ); + assertTrue( "maven-test:t09-b is not in the project", map.containsKey( "maven-test:t09-b" ) ); + assertTrue( "maven-test:t09-c is not in the project", map.containsKey( "maven-test:t09-c" ) ); + assertTrue( "maven-test:t09-d is not in the project", map.containsKey( "maven-test:t09-d" ) ); + } +} \ No newline at end of file Index: maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java (revision 520633) +++ maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java (working copy) @@ -21,9 +21,15 @@ import org.apache.maven.model.Model; import org.apache.maven.model.Parent; +import org.apache.maven.model.DependencyManagement; +import org.apache.maven.model.Dependency; +import org.apache.maven.artifact.versioning.ManagedVersionMap; import java.io.File; import java.io.IOException; +import java.util.Map; +import java.util.Iterator; +import java.util.List; public class MavenProjectTest extends AbstractMavenProjectTestCase @@ -92,8 +98,36 @@ MavenProject clonedProject = new MavenProject( projectToClone ); assertEquals( "maven-core", clonedProject.getArtifactId() ); + Map clonedMap = clonedProject.getManagedVersionMap(); + assertNotNull( "ManagedVersionMap not copied", clonedMap ); + assertTrue( "ManagedVersionMap is not empty", clonedMap.isEmpty() ); } + public void testCopyConstructorWithDependencyManagement() + throws Exception + { + File f = getFileForClasspathResource( "dependencyManagement-pom.xml" ); + MavenProject projectToClone = getProjectWithDependencies( f ); + DependencyManagement dep = projectToClone.getDependencyManagement(); + assertNotNull( "No dependencyManagement", dep ); + List list = dep.getDependencies(); + assertNotNull( "No dependencies", list ); + assertTrue( "Empty dependency list", !list.isEmpty() ); + + Map map = projectToClone.getManagedVersionMap(); + assertNotNull( "No ManagedVersionMap", map ); + assertTrue( "ManagedVersionMap is empty", !map.isEmpty() ); + + MavenProject clonedProject = new MavenProject( projectToClone ); + assertEquals( "maven-core", clonedProject.getArtifactId() ); + Map clonedMap = clonedProject.getManagedVersionMap(); + assertNotNull( "ManagedVersionMap not copied", clonedMap ); + assertTrue( "ManagedVersionMap is empty", !clonedMap.isEmpty() ); + assertTrue( "Not a ManagedVersionMap", clonedMap instanceof ManagedVersionMap ); + assertTrue( "ManagedVersionMap does not contain test key", + clonedMap.containsKey( "maven-test:maven-test-b:jar" ) ); + } + public void testGetModulePathAdjustment() throws IOException { Index: maven-project/src/test/resources/dependencyManagement-pom.xml =================================================================== --- maven-project/src/test/resources/dependencyManagement-pom.xml (revision 0) +++ maven-project/src/test/resources/dependencyManagement-pom.xml (revision 0) @@ -0,0 +1,41 @@ + + + + 4.0.0 + maven + maven-core + Maven + 2.0-SNAPSHOT + + + + maven-test + maven-test-b + 1.0 + + + + + + + maven-plexus-plugin + 1.0 + + src/conf/plexus.conf + src/conf/plexus.properties + Continuum + + + + + plexus:runtime + + + ContinuumPro + + + + + + + Index: maven-project/src/test/resources/inheritance-repo/t10/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/p0/p1/pom.xml (revision 0) @@ -0,0 +1,42 @@ + + + p0 + maven-t10 + 1.0 + + 4.0.0 + maven-t10 + p1 + pom + p1 + 1.0 + + scm-url + + + + + + maven-test + t10-a + + + + maven-test + t10-c + runtime + + + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t10/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/p0/pom.xml (revision 0) @@ -0,0 +1,41 @@ + + 4.0.0 + maven-t10 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + + + + maven-test + t10-a + 1.0 + test + + + + maven-test + t10-b + 1.0 + runtime + + + + maven-test + t10-c + 1.0 + test + + + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-a-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t10-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + + maven-test + t10-b + 1.0 + compile + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-b-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t10-b + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t10/maven-test/poms/t10-c-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t10-c + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/p0/p1/pom.xml (revision 0) @@ -0,0 +1,41 @@ + + + p0 + maven-t04 + 1.0 + + 4.0.0 + maven-t04 + p1 + pom + p1 + 1.0 + + scm-url + + + + + + maven-test + t04-a + + + + maven-test + t04-c + 1.0 + + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/p0/pom.xml (revision 0) @@ -0,0 +1,37 @@ + + 4.0.0 + maven-t04 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + + + + maven-test + t04-a + 1.0 + + + + maven-test + t04-b + 1.0 + + + + maven-test + t04-c + 2.0 + + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-a-1.0.pom (revision 0) @@ -0,0 +1,21 @@ + + 4.0.0 + maven-test + t04-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t04-b + 2.0 + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t04-b + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-2.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-2.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-b-2.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t04-b + jar + 2.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t04-c + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-2.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-2.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t04/maven-test/poms/t04-c-2.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t04-b + jar + 2.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/p0/p1/pom.xml (revision 0) @@ -0,0 +1,54 @@ + + + p0 + maven-t05 + 1.0 + + 4.0.0 + maven-t05 + p1 + pom + p1 + 1.0 + + scm-url + + + + + maven-test + t05-b + 1.0 + + + maven-test + t05-d + 1.0 + + + + + + maven-test + t05-a + 1.0 + runtime + + + maven-test + t05-c + 1.0 + runtime + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/p0/pom.xml (revision 0) @@ -0,0 +1,36 @@ + + 4.0.0 + maven-t05 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + maven-test + t05-a + 1.0 + + + maven-test + t05-b + 1.1 + + + maven-test + t05-c + 1.0 + compile + + + maven-test + t05-d + 1.2 + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t05-d + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.1.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t05-d + jar + 1.1 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.2.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.2.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-d-1.2.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t05-d + jar + 1.2 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-1.0.pom (revision 0) @@ -0,0 +1,23 @@ + + 4.0.0 + maven-test + t05-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t05-b + 1.0 + jar + compile + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-2.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-2.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-a-2.0.pom (revision 0) @@ -0,0 +1,23 @@ + + 4.0.0 + maven-test + t05-a + jar + 2.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t05-b + 1.0 + jar + compile + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t05-b + jar + 1.0 + + + maven-test + t05-c + 1.0 + jar + compile + + + maven-test + t05-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-1.1.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t05-b + jar + 1.1 + + + maven-test + t05-c + 1.0 + jar + compile + + + maven-test + t05-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-2.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-2.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-b-2.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t05-b + jar + 2.0 + + + maven-test + t05-c + 1.0 + jar + compile + + + maven-test + t05-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t05/maven-test/poms/t05-c-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t05-c + jar + 1.0 + + + maven-test + t05-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/p0/p1/pom.xml (revision 0) @@ -0,0 +1,54 @@ + + + p0 + maven-t06 + 1.0 + + 4.0.0 + maven-t06 + p1 + pom + p1 + 1.0 + + scm-url + + + + + maven-test + t06-b + 1.0 + + + maven-test + t06-d + 1.0 + test + false + + + + + + maven-test + t06-a + 1.0 + + + maven-test + t06-c + 1.0 + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/p0/pom.xml (revision 0) @@ -0,0 +1,37 @@ + + 4.0.0 + maven-t06 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + maven-test + t06-a + 1.0 + + + maven-test + t06-b + 1.1 + + + maven-test + t06-c + 1.0 + + + maven-test + t06-d + 1.2 + test + false + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.1.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t06-b + jar + 1.0 + + + maven-test + t06-c + 1.0 + jar + compile + + + maven-test + t06-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-c-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t06-c + jar + 1.0 + + + maven-test + t06-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t06-d + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.1.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t06-d + jar + 1.1 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.2.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.2.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-d-1.2.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t06-d + jar + 1.2 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-a-1.0.pom (revision 0) @@ -0,0 +1,23 @@ + + 4.0.0 + maven-test + t06-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t06-b + 1.0 + jar + compile + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t06/maven-test/poms/t06-b-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t06-b + jar + 1.0 + + + maven-test + t06-c + 1.0 + jar + compile + + + maven-test + t06-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/p0/p1/pom.xml (revision 0) @@ -0,0 +1,54 @@ + + + p0 + maven-t07 + 1.0 + + 4.0.0 + maven-t07 + p1 + pom + p1 + 1.0 + + scm-url + + + + + maven-test + t07-b + 1.0 + + + maven-test + t07-d + 1.0 + test + false + + + + + + maven-test + t07-a + 1.0 + + + maven-test + t07-c + 1.0 + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/p0/pom.xml (revision 0) @@ -0,0 +1,37 @@ + + 4.0.0 + maven-t07 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + maven-test + t07-a + 1.0 + + + maven-test + t07-b + 1.1 + + + maven-test + t07-c + 1.0 + + + maven-test + t07-d + 1.2 + test + false + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t07-b + jar + 1.0 + + + maven-test + t07-c + 1.0 + jar + compile + + + maven-test + t07-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-b-1.1.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t07-b + jar + 1.1 + + + maven-test + t07-c + 1.0 + jar + compile + + + maven-test + t07-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-c-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t07-c + jar + 1.0 + + + maven-test + t07-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t07-d + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.1.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t07-d + jar + 1.1 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.2.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.2.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-d-1.2.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t07-d + jar + 1.2 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t07/maven-test/poms/t07-a-1.0.pom (revision 0) @@ -0,0 +1,23 @@ + + 4.0.0 + maven-test + t07-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t07-b + 1.0 + jar + compile + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/p0/p1/pom.xml (revision 0) @@ -0,0 +1,59 @@ + + + p0 + maven-t08 + 1.0 + + 4.0.0 + maven-t08 + p1 + pom + p1 + 1.0 + + scm-url + + + + + maven-test + t08-b + 1.0 + + + maven-test + t08-d + 1.0 + test + true + + + + + + maven-test + t08-a + 1.0 + + + maven-test + t08-c + 1.0 + + + maven-test + t08-d + 1.0 + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/p0/pom.xml (revision 0) @@ -0,0 +1,37 @@ + + 4.0.0 + maven-t08 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + maven-test + t08-a + 1.0 + + + maven-test + t08-b + 1.1 + + + maven-test + t08-c + 1.0 + + + maven-test + t08-d + 1.2 + test + false + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-a-1.0.pom (revision 0) @@ -0,0 +1,23 @@ + + 4.0.0 + maven-test + t08-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + maven-test + t08-b + 1.0 + jar + compile + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t08-b + jar + 1.0 + + + maven-test + t08-c + 1.0 + jar + compile + + + maven-test + t08-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-b-1.1.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t08-b + jar + 1.1 + + + maven-test + t08-c + 1.0 + jar + compile + + + maven-test + t08-d + 1.1 + jar + compile + false + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-c-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t08-c + jar + 1.0 + + + maven-test + t08-d + 1.1 + jar + compile + true + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t08-d + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.1.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.1.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.1.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t08-d + jar + 1.1 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.2.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.2.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t08/maven-test/poms/t08-d-1.2.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t08-d + jar + 1.2 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/p0/p1/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/p0/p1/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/p0/p1/pom.xml (revision 0) @@ -0,0 +1,36 @@ + + + p0 + maven-t09 + 1.0 + + 4.0.0 + maven-t09 + p1 + pom + p1 + 1.0 + + scm-url + + + + + + maven-test + t09-a + + + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/p0/p2/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/p0/p2/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/p0/p2/pom.xml (revision 0) @@ -0,0 +1,42 @@ + + + p0 + maven-t09 + 1.0 + + 4.0.0 + maven-t09 + p2 + pom + p2 + 1.0 + + scm-url + + + + + + maven-test + t09-a + + + + maven-test + t09-d + 1.0 + + + + + + + + maven-antrun-plugin + + ${project.parent.basedir} + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/p0/pom.xml =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/p0/pom.xml (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/p0/pom.xml (revision 0) @@ -0,0 +1,38 @@ + + 4.0.0 + maven-t09 + p0 + pom + p0 + 1.0 + + Codehaus + + + + + + + + maven-test + t09-a + 1.0 + + + + maven-test + t09-b + 1.0 + + + maven-test + t09-c + + + + + + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar (revision 0) @@ -0,0 +1 @@ +foo Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-a-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-a-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-a-1.0.pom (revision 0) @@ -0,0 +1,24 @@ + + 4.0.0 + maven-test + t09-a + jar + 1.0 + + + central + Fake Maven Central Repository + file://dummy + + + + + + maven-test + t09-b + 1.0 + compile + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-b-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-b-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-b-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t09-b + jar + 1.0 + + + + maven-test + t09-c + 1.0 + compile + + + + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-c-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-c-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-c-1.0.pom (revision 0) @@ -0,0 +1,7 @@ + + 4.0.0 + maven-test + t09-c + jar + 1.0 + \ No newline at end of file Index: maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-d-1.0.pom =================================================================== --- maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-d-1.0.pom (revision 0) +++ maven-project/src/test/resources/inheritance-repo/t09/maven-test/poms/t09-d-1.0.pom (revision 0) @@ -0,0 +1,17 @@ + + 4.0.0 + maven-test + t09-d + jar + 1.0 + + + + maven-test + t09-c + 1.0 + compile + + + + \ No newline at end of file Index: maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java =================================================================== --- maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (revision 520633) +++ maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (working copy) @@ -33,13 +33,16 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.ArtifactResolver; +import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.artifact.versioning.ManagedVersionMap; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.context.BuildContextManager; import org.apache.maven.model.Build; import org.apache.maven.model.Dependency; import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.DistributionManagement; +import org.apache.maven.model.Exclusion; import org.apache.maven.model.Extension; import org.apache.maven.model.Model; import org.apache.maven.model.Plugin; @@ -269,6 +272,8 @@ projectContext.store( buildContextManager ); String projectId = safeVersionlessKey( STANDALONE_SUPERPOM_GROUPID, STANDALONE_SUPERPOM_ARTIFACTID ); + + project.setManagedVersionMap(createManagedVersionMap(projectId, superModel.getDependencyManagement(), null)); List activeProfiles = profileAdvisor.applyActivatedProfiles( superModel, null, profileManager.getExplicitlyActivatedIds(), profileManager.getExplicitlyDeactivatedIds() ); List activeExternalProfiles = profileAdvisor.applyActivatedExternalProfiles( superModel, null, profileManager ); @@ -346,7 +351,7 @@ String projectId = safeVersionlessKey( project.getGroupId(), project.getArtifactId() ); - Map managedVersions = createManagedVersionMap( projectId, project.getDependencyManagement() ); + Map managedVersions = project.getManagedVersionMap(); ensureMetadataSourceIsInitialized(); @@ -398,13 +403,20 @@ } } - private Map createManagedVersionMap( String projectId, DependencyManagement dependencyManagement ) + private Map createManagedVersionMap( String projectId, DependencyManagement dependencyManagement, MavenProject parent ) throws ProjectBuildingException { - Map map; - if ( dependencyManagement != null && dependencyManagement.getDependencies() != null ) + Map map = null; + List deps; + if ( dependencyManagement != null && (deps = dependencyManagement.getDependencies()) != null && deps.size() > 0) { - map = new HashMap(); + map = new ManagedVersionMap( map ); + + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( "Adding managed depedendencies for " + projectId ); + } + for ( Iterator i = dependencyManagement.getDependencies().iterator(); i.hasNext(); ) { Dependency d = (Dependency) i.next(); @@ -416,6 +428,30 @@ versionRange, d.getType(), d.getClassifier(), d.getScope(), d.isOptional() ); + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( " " + artifact ); + } + + // If the dependencyManagement section listed exclusions, + // add them to the managed artifacts here so that transitive + // dependencies will be excluded if necessary. + if ( null != d.getExclusions() && !d.getExclusions().isEmpty() ) + { + List exclusions = new ArrayList(); + Iterator exclItr = d.getExclusions().iterator(); + while ( exclItr.hasNext() ) + { + Exclusion e = (Exclusion) exclItr.next(); + exclusions.add( e.getGroupId() + ":" + e.getArtifactId() ); + } + ExcludesArtifactFilter eaf = new ExcludesArtifactFilter( exclusi