Author: sisbell
Date: Wed Apr  8 09:08:03 2009
New Revision: 763150

URL: http://svn.apache.org/viewvc?rev=763150&view=rev
Log:
[MNG-1412,4027] - dependency order from profile.

Added:
    
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/
    
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml
    
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml
    
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/
    
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml
Modified:
    
maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java

Modified: 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
 Wed Apr  8 09:08:03 2009
@@ -50,7 +50,6 @@
     public void testPomAndSettingsInterpolation() throws Exception
     {
        PomTestWrapper pom = buildPom( "test-pom-and-settings-interpolation" );
-       System.out.println(pom.getDomainModel().asString());
        assertEquals("applied", pom.getValue( "properties/settingsProfile" ) );
        assertEquals("applied", pom.getValue( "properties/pomProfile" ) );
        assertEquals("settings", pom.getValue( "properties/pomVsSettings" ) );

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java
 Wed Apr  8 09:08:03 2009
@@ -60,13 +60,16 @@
             {
                 isAdd = false;
             }
-            copy( (Dependency) child, targetDependency);
+            
             if(!isAdd)
             {
                 t.remove( targetDependency );               
             }
-           
+            
+            copy( (Dependency) child, targetDependency);
+              
             t.add( targetDependency );
+            
         }
         else if ( parent != null && child == null )
         {
@@ -86,14 +89,29 @@
         else
         // JOIN
         {
-            Dependency targetDependency = new Dependency();          
-            
-            copy( (Dependency) child, targetDependency);
-            copy( (Dependency) parent, targetDependency );
+            Dependency targetDependency = new Dependency();  
+               copy( (Dependency) parent, targetDependency ); 
+            copy( (Dependency) child, targetDependency);    
+            /*
+            if( isMatch( (Dependency) child, (Dependency) parent))
+            {
+               copy( (Dependency) child, targetDependency);    
+            }
+            else
+            {
+               copy( (Dependency) parent, targetDependency ); 
+                copy( (Dependency) child, targetDependency);                   
        
+            }
+*/
             t.add( targetDependency );               
         }
     }
     
+    private static boolean isMatch(Dependency d1, Dependency d2)
+    {
+       return d1.getGroupId().equals(d2.getGroupId()) && 
d1.getArtifactId().equals(d2.getArtifactId());
+    }
+    
     private Dependency contains(Dependency d1, List<Dependency> dependencies)
     {
         for(Dependency d : dependencies)

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java
 Wed Apr  8 09:08:03 2009
@@ -145,7 +145,8 @@
              
         if(deps.size() > 0)
         {
-            t.getDependencies().addAll( deps );
+               t.setDependencies(deps);
+           // t.getDependencies().addAll( deps );
         }  
         
         //Dependency Management

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java
 Wed Apr  8 09:08:03 2009
@@ -139,6 +139,10 @@
     
     private static void copyDependencies(List<Dependency> parent, 
List<Dependency> child, Plugin target, boolean isChild)
     {
+       if(parent.isEmpty() && child.isEmpty())
+       {
+               return;
+       }
         DependenciesProcessor proc = new DependenciesProcessor();
         proc.process( parent, child, target.getDependencies(), isChild );      
      
     }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Wed Apr  8 09:08:03 2009
@@ -133,6 +133,7 @@
                }
 
                //Profiles
+
         List<Profile> projectProfiles;
         try
         {
@@ -149,17 +150,23 @@
                
         try
         {
+               List<Profile> externalProfiles = new ArrayList<Profile>();
             for(Profile p : projectProfiles)
                {
-                       logger.debug("Merging profile into model (build): Model 
= " + domainModel.getId() + ", Profile = " + p.getId() );
+               if(!"pom".equals(p.getSource()))
+               {
+                       logger.debug("Merging profile into model (build): Model 
= " + domainModel.getId() + ", Profile = " + p.getId() );
+                       externalProfiles.add(p);
+               }                       
                }
                                
-            domainModel = ProcessorContext.mergeProfilesIntoModel( 
projectProfiles, domainModel );
+            domainModel = ProcessorContext.mergeProfilesIntoModel( 
externalProfiles, domainModel );
         }
         catch ( IOException e )
         {
             throw new ProjectBuildingException("", "");
-        }              
+        }
+        
                //Interpolation
         MavenProject project = interpolateDomainModel( domainModel, 
configuration, pomFile );
         project.setActiveProfiles( projectProfiles );

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=763150&r1=763149&r2=763150&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java
 Wed Apr  8 09:08:03 2009
@@ -876,10 +876,12 @@
     }
 
     /** MNG-4027*/
-    /* FIXME
+    /* FIXME*/
+
     public void testProfileInjectedDependencies()
         throws Exception
     {
+       //c.b,d,a
         PomTestWrapper pom = buildPom( "profile-injected-dependencies" );
         System.out.println(pom.getDomainModel().asString());
         assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() );
@@ -888,6 +890,18 @@
         assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) );
         assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) );
     }
+    
+
+    public void testDependencyInheritance()
+        throws Exception
+    {
+       //c.b,d,a
+        PomTestWrapper pom = buildPom( "dependency-inheritance/sub" );
+        assertEquals(1,  ( (List<?>) pom.getValue( "dependencies" ) ).size() );
+        assertEquals("4.4",  pom.getValue("dependencies[1]/version") );
+        System.out.println(pom.getDomainModel().asString());
+    }
+  
 //*/
     /** MNG-4034 */
     public void testManagedProfileDependency()

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml?rev=763150&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml
 Wed Apr  8 09:08:03 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-parent</artifactId>
+  <version>11</version>
+  <packaging>pom</packaging>
+
+  <name>Apache Maven</name>
+</project>

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml?rev=763150&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml
 Wed Apr  8 09:08:03 2009
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+    <parent>
+    <groupId>org.apache.maven</groupId>
+    <artifactId>maven-parent</artifactId>
+    <version>11</version>
+    <relativePath>maven-parent.xml</relativePath>
+  </parent>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven</artifactId>
+  <version>3.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <properties>
+    <junitVersion>3.8.1</junitVersion>
+  </properties>
+  <!--start-->
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>${junitVersion}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <!--end-->
+</project>

Added: 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml?rev=763150&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml
 Wed Apr  8 09:08:03 2009
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+  <!--
+    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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.maven</groupId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-project-builder</artifactId>
+  <version>3.0-SNAPSHOT</version>
+  <name>Maven Project Builder</name>
+  <dependencies>   
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.4</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+
+</project>


Reply via email to