You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/10/03 03:34:32 UTC
svn commit: r293200 - in /maven/components/trunk: maven-plugins/pom.xml
maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
Author: brett
Date: Sun Oct 2 18:34:26 2005
New Revision: 293200
URL: http://svn.apache.org/viewcvs?rev=293200&view=rev
Log:
PR: MNG-1045
ensure parent always come first, but doesn't introduce a cycle
Modified:
maven/components/trunk/maven-plugins/pom.xml
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
Modified: maven/components/trunk/maven-plugins/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/pom.xml?rev=293200&r1=293199&r2=293200&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/pom.xml (original)
+++ maven/components/trunk/maven-plugins/pom.xml Sun Oct 2 18:34:26 2005
@@ -180,7 +180,6 @@
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/components/trunk/maven-plugins/</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/components/trunk/maven-plugins/</url>
</scm>
-<!-- TODO: reinstate one parent situation is sorted
<build>
<pluginManagement>
<plugins>
@@ -201,5 +200,4 @@
</plugin>
</plugins>
</reporting>
--->
</project>
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java?rev=293200&r1=293199&r2=293200&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectSorter.java Sun Oct 2 18:34:26 2005
@@ -96,13 +96,17 @@
}
}
- // TODO: this MUST be fixed before beta-3, but it is required for a sane release plugin.
MavenProject parent = project.getParent();
if ( parent != null )
{
String parentId = ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() );
if ( dag.getVertex( parentId ) != null )
{
+ // Parent is added as an edge, but must not cause a cycle - so we remove any other edges it has in conflict
+ if ( dag.hasEdge( parentId, id ) )
+ {
+ dag.removeEdge( parentId, id );
+ }
dag.addEdge( id, parentId );
}
}
@@ -116,9 +120,7 @@
String pluginId = ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() );
if ( dag.getVertex( pluginId ) != null && !pluginId.equals( id ) )
{
- project.addProjectReference( (MavenProject) projectMap.get( pluginId ) );
-
- dag.addEdge( id, pluginId );
+ addEdgeWithParentCheck( projectMap, pluginId, project, id );
}
}
}
@@ -132,9 +134,7 @@
String pluginId = ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() );
if ( dag.getVertex( pluginId ) != null && !pluginId.equals( id ) )
{
- project.addProjectReference( (MavenProject) projectMap.get( pluginId ) );
-
- dag.addEdge( id, pluginId );
+ addEdgeWithParentCheck( projectMap, pluginId, project, id );
}
}
}
@@ -145,9 +145,7 @@
String extensionId = ArtifactUtils.versionlessKey( extension.getGroupId(), extension.getArtifactId() );
if ( dag.getVertex( extensionId ) != null )
{
- project.addProjectReference( (MavenProject) projectMap.get( extensionId ) );
-
- dag.addEdge( id, extensionId );
+ addEdgeWithParentCheck( projectMap, extensionId, project, id );
}
}
}
@@ -162,6 +160,21 @@
}
this.sortedProjects = Collections.unmodifiableList( sortedProjects );
+ }
+
+ private void addEdgeWithParentCheck( Map projectMap, String extensionId, MavenProject project, String id )
+ throws CycleDetectedException
+ {
+ MavenProject extProject = (MavenProject) projectMap.get( extensionId );
+ project.addProjectReference( extProject );
+
+ MavenProject extParent = extProject.getParent();
+ String parentId = ArtifactUtils.versionlessKey( extParent.getGroupId(), extParent.getArtifactId() );
+ // Don't add edge from parent to extension if a reverse edge already exists
+ if ( !dag.hasEdge( extensionId, id ) || !parentId.equals( id ) )
+ {
+ dag.addEdge( id, extensionId );
+ }
}
// TODO: !![jc; 28-jul-2005] check this; if we're using '-r' and there are aggregator tasks, this will result in weirdness.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org