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