You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by ke...@apache.org on 2005/08/02 22:36:05 UTC
svn commit: r227079 -
/maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java
Author: kenney
Date: Tue Aug 2 13:36:02 2005
New Revision: 227079
URL: http://svn.apache.org/viewcvs?rev=227079&view=rev
Log:
Fix MNG-508: make mboot use dependencyManagement.
Modified:
maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java
Modified: maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java?rev=227079&r1=227078&r2=227079&view=diff
==============================================================================
--- maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java (original)
+++ maven/components/trunk/maven-mboot2/src/main/java/model/ModelReader.java Tue Aug 2 13:36:02 2005
@@ -66,6 +66,8 @@
private List testResources = new ArrayList();
+ private Map managedDependencies = new HashMap();
+
private Dependency currentDependency;
private Resource currentResource;
@@ -119,6 +121,13 @@
return m.values();
}
+ public Collection getManagedDependencies()
+ {
+ Map m = new HashMap();
+ m.putAll( managedDependencies );
+ return m.values();
+ }
+
public List getResources()
{
return resources;
@@ -138,12 +147,9 @@
}
else if ( rawName.equals( "dependency" ) )
{
- if ( !insideDependencyManagement )
- {
- currentDependency = new Dependency();
+ currentDependency = new Dependency();
- insideDependency = true;
- }
+ insideDependency = true;
}
else if ( rawName.equals( "dependencyManagement" ) )
{
@@ -218,6 +224,8 @@
addDependencies( p.getDependencies(), parentDependencies, null );
+ addDependencies( p.getManagedDependencies(), managedDependencies, null );
+
resources.addAll( p.getResources() );
insideParent = false;
@@ -226,18 +234,14 @@
{
insideDependency = false;
- if ( !hasDependency( currentDependency, dependencies ) )
+ if ( insideDependencyManagement )
{
- if ( resolveTransitiveDependencies )
- {
- ModelReader p = retrievePom( currentDependency.getGroupId(), currentDependency.getArtifactId(),
- currentDependency.getVersion(), currentDependency.getType(),
- resolveTransitiveDependencies );
-
- addDependencies( p.getDependencies(), transitiveDependencies, currentDependency.getScope() );
- }
+ managedDependencies.put( currentDependency.getConflictId(), currentDependency );
+ }
+ else
+ {
+ dependencies.put( currentDependency.getConflictId(), currentDependency );
}
- dependencies.put( currentDependency.getConflictId(), currentDependency );
}
else if ( rawName.equals( "dependencyManagement" ) )
{
@@ -375,10 +379,43 @@
packaging = getBodyText();
}
}
+ else if ( depth == 1 ) // model / project
+ {
+ resolveDependencies();
+ }
bodyText = new StringBuffer();
depth--;
+ }
+
+ private void resolveDependencies()
+ throws SAXException
+ {
+ for ( Iterator it = dependencies.values().iterator(); it.hasNext(); )
+ {
+ Dependency dependency = (Dependency) it.next();
+
+ if ( dependency.getVersion() == null )
+ {
+ Dependency managedDependency = (Dependency) managedDependencies.get( dependency.getConflictId() );
+ if ( managedDependency == null )
+ {
+ throw new NullPointerException( "[" + groupId + ":" + artifactId +":" + packaging + ":" + version + "] " +
+ "Dependency " + dependency.getConflictId() + " is missing a version, and nothing is found in dependencyManagement. ");
+ }
+ dependency.setVersion( managedDependency.getVersion() );
+ }
+
+ if ( resolveTransitiveDependencies )
+ {
+ ModelReader p = retrievePom( dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion(), dependency.getType(),
+ resolveTransitiveDependencies );
+
+ addDependencies( p.getDependencies(), transitiveDependencies, dependency.getScope() );
+ }
+ }
}
private void addDependencies( Collection dependencies, Map target, String inheritedScope )
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org