Author: jvanzyl
Date: Sat Mar 10 17:03:06 2007
New Revision: 516822
URL: http://svn.apache.org/viewvc?view=rev&rev=516822
Log:
MNG-1577 dependencyManagement element is king! woo hoo! Thanks to Patrick, Mike
and Ralph for helping with all the hard work.
Modified:
maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
Modified:
maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
Sat Mar 10 17:03:06 2007
@@ -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
Modified:
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
Sat Mar 10 17:03:06 2007
@@ -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 HashSet();
@@ -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.
* <a
href="http://docs.codehaus.org/x/IGU#DependencyMediationandConflictResolution-Scoperesolution">More
info</a>.
@@ -407,8 +462,21 @@
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() );
Modified:
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/ResolutionListener.java
Sat Mar 10 17:03:06 2007
@@ -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,7 +73,17 @@
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 );
Modified:
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
Sat Mar 10 17:03:06 2007
@@ -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,8 @@
private String getKey( Artifact artifact )
{
- return artifact.getDependencyConflictId() + ":" +
artifact.getVersionRange();
+ //return artifact.getDependencyConflictId() + ":" +
artifact.getVersionRange();
+ return artifact.getDependencyConflictId();
}
private Set createArtifacts( ArtifactFactory artifactFactory, Set
dependencies, String inheritedScope,
Modified:
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
Sat Mar 10 17:03:06 2007
@@ -84,6 +84,7 @@
ArtifactResolutionResult result =
artifactResolver.resolveTransitively( Collections.singleton( artifact ),
project.getArtifact(),
+
project.getManagedVersionMap(),
localRepository,
project.getRemoteArtifactRepositories(),
artifactMetadataSource, filter );
Modified:
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Sat Mar 10 17:03:06 2007
@@ -618,6 +618,7 @@
repositories.addAll( project.getRemoteArtifactRepositories() );
ArtifactResolutionResult result =
artifactResolver.resolveTransitively( dependencies, pluginArtifact,
+
project.getManagedVersionMap(),
localRepository, repositories,
artifactMetadataSource,
artifactFilter );
@@ -1140,7 +1141,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 );
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Sat Mar 10 17:03:06 2007
@@ -33,12 +33,15 @@
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.VersionRange;
+import org.apache.maven.artifact.versioning.ManagedVersionMap;
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.Parent;
@@ -274,6 +277,8 @@
MavenProject project = new MavenProject( superModel );
+ project.setManagedVersionMap(createManagedVersionMap(projectId,
superModel.getDependencyManagement(), null));
+
project.setActiveProfiles( activeProfiles );
project.setOriginalModel( superModel );
@@ -334,7 +339,8 @@
String projectId = safeVersionlessKey( project.getGroupId(),
project.getArtifactId() );
- Map managedVersions = createManagedVersionMap( projectId,
project.getDependencyManagement() );
+ // Map managedVersions = createManagedVersionMap( projectId,
project.getDependencyManagement() );
+ Map managedVersions = project.getManagedVersionMap();
ensureMetadataSourceIsInitialized();
@@ -386,13 +392,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();
@@ -404,6 +417,26 @@
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( exclusions );
+ artifact.setDependencyFilter( eaf );
+ } else {
+ artifact.setDependencyFilter( null );
+ }
map.put( d.getManagementKey(), artifact );
}
catch ( InvalidVersionSpecificationException e )
@@ -413,7 +446,7 @@
}
}
}
- else
+ else if (map == null)
{
map = Collections.EMPTY_MAP;
}
@@ -804,6 +837,8 @@
}
}
+ project.setManagedVersionMap(createManagedVersionMap(projectId,
project.getDependencyManagement(), project.getParent()));
+
return project;
}
@@ -1033,10 +1068,10 @@
Parent parentModel = model.getParent();
+ String projectId = safeVersionlessKey( model.getGroupId(),
model.getArtifactId() );
+
if ( parentModel != null )
{
- String projectId = safeVersionlessKey( model.getGroupId(),
model.getArtifactId() );
-
if ( StringUtils.isEmpty( parentModel.getGroupId() ) )
{
throw new ProjectBuildingException( projectId, "Missing
groupId element from parent element" );
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Sat Mar 10 17:03:06 2007
@@ -34,6 +34,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.artifact.versioning.ManagedVersionMap;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -139,6 +140,8 @@
private Map extensionArtifactMap;
+ private Map managedVersionMap;
+
private Map projectReferences = new HashMap();
private Build buildOverlay;
@@ -252,7 +255,12 @@
if ( project.artifact != null )
{
this.artifact = ArtifactUtils.copyArtifact( project.artifact );
- }
+ }
+
+ if ( project.getManagedVersionMap() != null )
+ {
+ setManagedVersionMap( new ManagedVersionMap(
project.getManagedVersionMap() ) );
+ }
}
public String getModulePathAdjustment( MavenProject moduleProject ) throws
IOException
@@ -1479,6 +1487,16 @@
public Model getOriginalModel()
{
return originalModel;
+ }
+
+ public void setManagedVersionMap( Map map )
+ {
+ this.managedVersionMap = map;
+ }
+
+ public Map getManagedVersionMap()
+ {
+ return this.managedVersionMap;
}
public boolean equals( Object other )
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java?view=diff&rev=516822&r1=516821&r2=516822
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
Sat Mar 10 17:03:06 2007
@@ -21,9 +21,15 @@
import java.io.File;
import java.io.IOException;
+import java.util.Map;
+import java.util.Iterator;
+import java.util.List;
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;
public class MavenProjectTest
extends AbstractMavenProjectTestCase
@@ -41,7 +47,7 @@
childModel.setArtifactId( "artifact" );
MavenProject childProject = new MavenProject( childModel );
-
+
File childFile = new File( System.getProperty( "java.io.tmpdir" ),
"maven-project-tests" + System.currentTimeMillis() + "/child/pom.xml" );
childProject.setFile( childFile );
@@ -49,7 +55,7 @@
String adjustment = parentProject.getModulePathAdjustment(
childProject );
assertNotNull( adjustment );
-
+
assertEquals( "..", adjustment );
}
@@ -92,6 +98,33 @@
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()