Author: jdcasey Date: Wed Apr 22 19:27:57 2009 New Revision: 767628 URL: http://svn.apache.org/viewvc?rev=767628&view=rev Log: [MNG-4074] Fix case where a build plugin (not from pluginManagement) has a dependency, then that plugin definition is inherited down to the dependency project itself. This is a cyclic reference from a project to itself.
Modified: maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.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=767628&r1=767627&r2=767628&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 Wed Apr 22 19:27:57 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 ); + } } } }