Author: brett
Date: Thu Jan 29 02:25:53 2009
New Revision: 738715
URL: http://svn.apache.org/viewvc?rev=738715&view=rev
Log:
[MNG-2668] honour plugin dependencies in reactor sort order
Submitted by: Tibor Varga
Modified:
maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
Modified:
maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=738715&r1=738714&r2=738715&view=diff
==============================================================================
---
maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
(original)
+++
maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
Thu Jan 29 02:25:53 2009
@@ -145,6 +145,23 @@
{
addEdgeWithParentCheck( projectMap, pluginId, project,
id );
}
+
+ if ( !pluginId.equals( id ) ) {
+ for ( Iterator k =
plugin.getDependencies().iterator(); k.hasNext(); )
+ {
+ Dependency dependency = (Dependency) k.next();
+
+ String dependencyId = ArtifactUtils
+ .versionlessKey( dependency.getGroupId(),
dependency.getArtifactId() );
+
+ if ( dag.getVertex( dependencyId ) != null )
+ {
+ project.addProjectReference( (MavenProject)
projectMap.get( dependencyId ) );
+
+ dag.addEdge( id, dependencyId );
+ }
+ }
+ }
}
}
Modified:
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java?rev=738715&r1=738714&r2=738715&view=diff
==============================================================================
---
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
(original)
+++
maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java
Thu Jan 29 02:25:53 2009
@@ -25,6 +25,7 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
import org.codehaus.plexus.util.dag.CycleDetectedException;
import java.util.ArrayList;
@@ -277,6 +278,49 @@
}
}
+ public void testPluginDependenciesInfluenceSorting()
+ throws Exception {
+ List projects = new ArrayList();
+
+ MavenProject parentProject = createProject( "groupId", "parent", "1.0" );
+
+ MavenProject project1 = createProject( "groupId", "artifactId1", "1.0" );
+ project1.setParent(parentProject);
+ projects.add( project1 );
+
+ MavenProject project2 = createProject( "groupId", "artifactId2", "1.0" );
+ project2.setParent(parentProject);
+ projects.add( project2 );
+
+ MavenProject pluginProject = createProject( "groupId", "pluginArtifact",
"1.0" );
+ pluginProject.setParent(parentProject);
+ projects.add( pluginProject );
+
+ Plugin plugin = new Plugin();
+ plugin.setGroupId(pluginProject.getGroupId());
+ plugin.setArtifactId(pluginProject.getArtifactId());
+ plugin.setVersion(pluginProject.getVersion());
+
+ plugin.addDependency( createDependency( project2 ) );
+
+ Model model = project1.getModel();
+ Build build = model.getBuild();
+
+ if ( build == null )
+ {
+ build = new Build();
+ model.setBuild( build );
+ }
+
+ build.addPlugin( plugin );
+
+ projects = new ProjectSorter( projects ).getSortedProjects();
+
+ assertEquals( project1, projects.get( 2 ) );
+ assertTrue( projects.contains( project2 ) );
+ assertTrue( projects.contains( pluginProject ) );
+ }
+
private Dependency createDependency( MavenProject project )
{
Dependency depdendency = new Dependency();