Index: maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java =================================================================== --- maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java (revision 726689) +++ maven-project/src/test/java/org/apache/maven/project/ProjectSorterTest.java (working copy) @@ -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; @@ -140,6 +141,49 @@ } } + public void testPluginDependenciesInfluenceSorting() + throws CycleDetectedException, DuplicateProjectException { + 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(); Index: maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java =================================================================== --- maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java (revision 726689) +++ maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java (working copy) @@ -131,6 +131,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 ); + } + } + } } }