You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2009/04/23 17:11:19 UTC

svn commit: r767940 - in /maven/components/branches/maven-2.2.x: ./ apache-maven/ apache-maven/src/test/ maven-core/src/main/java/org/apache/maven/plugin/ maven-integration-tests/ maven-model/src/test/ maven-project/src/main/java/org/apache/maven/proje...

Author: jdcasey
Date: Thu Apr 23 15:11:18 2009
New Revision: 767940

URL: http://svn.apache.org/viewvc?rev=767940&view=rev
Log:
merging to r767631 from maven-2.1.x branch for MNG-4074

Modified:
    maven/components/branches/maven-2.2.x/   (props changed)
    maven/components/branches/maven-2.2.x/apache-maven/   (props changed)
    maven/components/branches/maven-2.2.x/apache-maven/src/test/   (props changed)
    maven/components/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java   (props changed)
    maven/components/branches/maven-2.2.x/maven-integration-tests/   (props changed)
    maven/components/branches/maven-2.2.x/maven-model/src/test/   (props changed)
    maven/components/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
    maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
    maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java   (props changed)

Propchange: maven/components/branches/maven-2.2.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -2,6 +2,6 @@
 /maven/components/branches/maven-2.0.x:679552-679867,693956-728820,728836,728940,729060,729738,729785,730461,730631,734502,734803,736543,746381
 /maven/components/branches/maven-2.1.0-M1-RC:690315,691793-694304
 /maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x:751686
+/maven/components/branches/maven-2.1.x:751686,767628,767631
 /maven/components/trunk:572229,720001,721902,726845,729292
 /maven/sandbox/branches/maven/MNG-3379:678167

Propchange: maven/components/branches/maven-2.2.x/apache-maven/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -2,7 +2,7 @@
 /maven/components/branches/maven-2.0.x/apache-maven:533160,636838,649903,657432,659677,679552-679867,693956-728820,728836,728940,736543,746038
 /maven/components/branches/maven-2.1.0-M1-RC/apache-maven:690315,691793-694304
 /maven/components/branches/maven-2.1.0-RC/apache-maven:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x/apache-maven:751686
+/maven/components/branches/maven-2.1.x/apache-maven:751686,767628,767631
 /maven/components/trunk/apache-maven:720001,721902,726845,727688
 /maven/components/trunk/maven-distribution:727688
 /maven/sandbox/branches/maven/MNG-3379/apache-maven:678167

Propchange: maven/components/branches/maven-2.2.x/apache-maven/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -1,4 +1,4 @@
 /maven/components/branches/maven-2.0.10-RC/apache-maven/src/test:728834
 /maven/components/branches/maven-2.0.x/apache-maven/src/test:736543
 /maven/components/branches/maven-2.1.0-RC/apache-maven/src/test:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x/apache-maven/src/test:751686
+/maven/components/branches/maven-2.1.x/apache-maven/src/test:751686,767628,767631

Propchange: maven/components/branches/maven-2.2.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -4,5 +4,6 @@
 /maven/components/branches/maven-2.1.0-RC/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:688883,689695,689976,689990
 /maven/components/branches/maven-2.1.0-RC/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java:752168,752622,752653,753320,755199,755215
 /maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:751686,753648,754505,754542
+/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java:767628,767631
 /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:572229,720001,721902,726845,729292
 /maven/sandbox/branches/maven/MNG-3379/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java:678167

Propchange: maven/components/branches/maven-2.2.x/maven-integration-tests/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -1,4 +1,4 @@
 /maven/components/branches/maven-2.0.10-RC/maven-integration-tests:728834
 /maven/components/branches/maven-2.0.x/maven-integration-tests:736543
 /maven/components/branches/maven-2.1.0-RC/maven-integration-tests:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x/maven-integration-tests:751686
+/maven/components/branches/maven-2.1.x/maven-integration-tests:751686,767628,767631

Propchange: maven/components/branches/maven-2.2.x/maven-model/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -1,4 +1,4 @@
 /maven/components/branches/maven-2.0.10-RC/maven-model/src/test:728834
 /maven/components/branches/maven-2.0.x/maven-model/src/test:736543
 /maven/components/branches/maven-2.1.0-RC/maven-model/src/test:752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x/maven-model/src/test:751686
+/maven/components/branches/maven-2.1.x/maven-model/src/test:751686,767628,767631

Modified: maven/components/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=767940&r1=767939&r2=767940&view=diff
==============================================================================
--- maven/components/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java (original)
+++ maven/components/branches/maven-2.2.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java Thu Apr 23 15:11:18 2009
@@ -156,16 +156,27 @@
 
                           if ( dag.getVertex( dependencyId ) != null )
                           {
-                              project.addProjectReference( (MavenProject) projectMap.get( dependencyId ) );
-
-                              addEdgeWithParentCheck( projectMap, dependencyId, project, id );
-                              
-                              // TODO: Shouldn't we add an edge between the plugin and its dependency?
-                              // Note that doing this may result in cycles...run 
-                              // ProjectSorterTest.testPluginDependenciesInfluenceSorting_DeclarationInParent() 
-                              // for more information, if you change this:
-                              
-                              // dag.addEdge( pluginId, dependencyId );
+                              // If the plugin in which this dependency is listed is actually used here,
+                              // it will probably be stuck using an older version of this project that
+                              // already exists in the local repository. If not yet installed, it is
+                              // likely that we'll get an ArtifactNotFoundException when this plugin
+                              // is executed to build this project.
+                              //
+                              // If the plugin is NOT actually used here, it may actually belong in the
+                              // pluginManagement section.
+                              if ( !id.equals( dependencyId ) )
+                              {
+                                  project.addProjectReference( (MavenProject) projectMap.get( dependencyId ) );
+
+                                  addEdgeWithParentCheck( projectMap, dependencyId, project, id );
+                                  
+                                  // TODO: Shouldn't we add an edge between the plugin and its dependency?
+                                  // Note that doing this may result in cycles...run 
+                                  // ProjectSorterTest.testPluginDependenciesInfluenceSorting_DeclarationInParent() 
+                                  // for more information, if you change this:
+                                  
+                                  // dag.addEdge( pluginId, dependencyId );
+                              }
                           }
                        }
                     }

Modified: maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java?rev=767940&r1=767939&r2=767940&view=diff
==============================================================================
--- maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java (original)
+++ maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java Thu Apr 23 15:11:18 2009
@@ -26,6 +26,7 @@
 import org.apache.maven.model.Extension;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginManagement;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 import java.util.ArrayList;
@@ -35,7 +36,7 @@
 
 /**
  * Test sorting projects by dependencies.
- *
+ * 
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
  */
@@ -49,22 +50,22 @@
         MavenProject project = createProject( "group", "artifactA", "1.0" );
 
         List projects = new ProjectSorter( Collections.singletonList( project ) ).getSortedProjects();
-        
+
         assertEquals( "Wrong number of projects: " + projects, 1, projects.size() );
         assertEquals( "Didn't match project", project, projects.get( 0 ) );
     }
-    
+
     public void testBasicMultiProject()
         throws CycleDetectedException, DuplicateProjectException, MissingProjectException
     {
         MavenProject projectA = createProject( "group", "artifactA", "1.0" );
         MavenProject projectB = createProject( "group", "artifactB", "1.0" );
         MavenProject projectC = createProject( "group", "artifactC", "1.0" );
-        
+
         projectA.getDependencies().add( createDependency( projectB ) );
         projectB.getDependencies().add( createDependency( projectC ) );
-        
-        List projects = Arrays.asList( new Object[] { projectA, projectB, projectC} );
+
+        List projects = Arrays.asList( new Object[] { projectA, projectB, projectC } );
 
         projects = new ProjectSorter( projects ).getSortedProjects();
 
@@ -145,7 +146,8 @@
         List projects = Arrays.asList( new Object[] { projectA, projectB, projectC } );
         List selectedProjects = Arrays.asList( new Object[] { "group:artifactB" } );
 
-        projects = new ProjectSorter( projects, selectedProjects, null, false/* make */, true/*makeDependents*/ ).getSortedProjects();
+        projects =
+            new ProjectSorter( projects, selectedProjects, null, false/* make */, true/* makeDependents */).getSortedProjects();
 
         assertEquals( "Wrong number of projects: " + projects, 2, projects.size() );
         assertEquals( "Didn't match project", projectB, projects.get( 0 ) );
@@ -178,32 +180,100 @@
         assertEquals( "Didn't match project", projectE, projects.get( 2 ) );
         assertEquals( "Didn't match project", projectD, projects.get( 3 ) );
     }
-    
-    public void testShouldNotFailWhenProjectReferencesNonExistentProject()
+
+    public void testShouldNotFailWhenPluginDepReferencesCurrentProject()
         throws CycleDetectedException, DuplicateProjectException, MissingProjectException
     {
         MavenProject project = createProject( "group", "artifact", "1.0" );
         Model model = project.getModel();
-        
+
         Build build = model.getBuild();
-        
+
+        if ( build == null )
+        {
+            build = new Build();
+            model.setBuild( build );
+        }
+
+        Plugin plugin = new Plugin();
+
+        plugin.setArtifactId( "other-artifact" );
+        plugin.setGroupId( "other.group" );
+        plugin.setVersion( "1.0" );
+
+        Dependency dep = new Dependency();
+        dep.setGroupId( "group" );
+        dep.setArtifactId( "artifact" );
+        dep.setVersion( "1.0" );
+
+        plugin.addDependency( dep );
+
+        build.addPlugin( plugin );
+
+        new ProjectSorter( Collections.singletonList( project ) );
+    }
+
+    public void testShouldNotFailWhenManagedPluginDepReferencesCurrentProject()
+        throws CycleDetectedException, DuplicateProjectException, MissingProjectException
+    {
+        MavenProject project = createProject( "group", "artifact", "1.0" );
+        Model model = project.getModel();
+
+        Build build = model.getBuild();
+
         if ( build == null )
         {
             build = new Build();
             model.setBuild( build );
         }
         
-        Extension extension = new Extension();
+        PluginManagement pMgmt = new PluginManagement();
+
+        Plugin plugin = new Plugin();
+
+        plugin.setArtifactId( "other-artifact" );
+        plugin.setGroupId( "other.group" );
+        plugin.setVersion( "1.0" );
+
+        Dependency dep = new Dependency();
+        dep.setGroupId( "group" );
+        dep.setArtifactId( "artifact" );
+        dep.setVersion( "1.0" );
+
+        plugin.addDependency( dep );
+
+        pMgmt.addPlugin( plugin );
         
+        build.setPluginManagement( pMgmt );
+
+        new ProjectSorter( Collections.singletonList( project ) );
+    }
+
+    public void testShouldNotFailWhenProjectReferencesNonExistentProject()
+        throws CycleDetectedException, DuplicateProjectException, MissingProjectException
+    {
+        MavenProject project = createProject( "group", "artifact", "1.0" );
+        Model model = project.getModel();
+
+        Build build = model.getBuild();
+
+        if ( build == null )
+        {
+            build = new Build();
+            model.setBuild( build );
+        }
+
+        Extension extension = new Extension();
+
         extension.setArtifactId( "other-artifact" );
         extension.setGroupId( "other.group" );
         extension.setVersion( "1.0" );
-        
+
         build.addExtension( extension );
-        
+
         new ProjectSorter( Collections.singletonList( project ) );
     }
-    
+
     public void testMatchingArtifactIdsDifferentGroupIds()
         throws CycleDetectedException, DuplicateProjectException, MissingProjectException
     {
@@ -245,7 +315,7 @@
         MavenProject project2 = createProject( "groupId", "artifactId", "1.0" );
         projects.add( project2 );
 
-        try 
+        try
         {
             projects = new ProjectSorter( projects ).getSortedProjects();
             fail( "Duplicate projects should fail" );
@@ -266,7 +336,7 @@
         MavenProject project2 = createProject( "groupId", "artifactId", "2.0" );
         projects.add( project2 );
 
-        try 
+        try
         {
             projects = new ProjectSorter( projects ).getSortedProjects();
             fail( "Duplicate projects should fail" );
@@ -317,13 +387,13 @@
         build.addPlugin( plugin );
 
         projects = new ProjectSorter( projects ).getSortedProjects();
-        
+
         assertEquals( parentProject, projects.get( 0 ) );
-        
+
         // the order of these two is non-deterministic, based on when they're added to the reactor.
         assertTrue( projects.contains( pluginProject ) );
         assertTrue( projects.contains( pluginLevelDepProject ) );
-        
+
         // the declaring project MUST be listed after the plugin and its plugin-level dep, though.
         assertEquals( declaringProject, projects.get( 3 ) );
     }
@@ -363,11 +433,11 @@
         build.addPlugin( plugin );
 
         projects = new ProjectSorter( projects ).getSortedProjects();
-        
+
         System.out.println( projects );
 
         assertEquals( parentProject, projects.get( 0 ) );
-        
+
         // the order of these two is non-deterministic, based on when they're added to the reactor.
         assertTrue( projects.contains( pluginProject ) );
         assertTrue( projects.contains( pluginLevelDepProject ) );

Propchange: maven/components/branches/maven-2.2.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 23 15:11:18 2009
@@ -1,4 +1,4 @@
 /maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688259,725329-725330,725342,725349,725359
 /maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:690315,691793
 /maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689976,689990,752168,752428,752622,752653,753089-753090,753320,755086,755199,755215
-/maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:751686
+/maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:751686,767628,767631