You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by br...@apache.org on 2005/03/16 05:21:03 UTC
cvs commit: maven-components/maven-core/src/main/java/org/apache/maven/project DefaultMavenProjectBuilder.java MavenProject.java MavenProjectBuilder.java
brett 2005/03/15 20:21:03
Modified: maven-core/src/main/java/org/apache/maven/project
DefaultMavenProjectBuilder.java MavenProject.java
MavenProjectBuilder.java
Log:
project sorting can be a static method
Revision Changes Path
1.49 +0 -73 maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Index: DefaultMavenProjectBuilder.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- DefaultMavenProjectBuilder.java 16 Mar 2005 04:18:06 -0000 1.48
+++ DefaultMavenProjectBuilder.java 16 Mar 2005 04:21:03 -0000 1.49
@@ -25,7 +25,6 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Repository;
@@ -42,9 +41,6 @@
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.dag.CycleDetectedException;
-import org.codehaus.plexus.util.dag.DAG;
-import org.codehaus.plexus.util.dag.TopologicalSorter;
import java.io.File;
import java.io.FileNotFoundException;
@@ -336,75 +332,6 @@
return artifact.getFile();
}
- /**
- * Sort a list of projects.
- * <ul>
- * <li>collect all the vertices for the projects that we want to build.</li>
- * <li>iterate through the deps of each project and if that dep is within
- * the set of projects we want to build then add an edge, otherwise throw
- * the edge away because that dependency is not within the set of projects
- * we are trying to build. we assume a closed set.</li>
- * <li>do a topo sort on the graph that remains.</li>
- * </ul>
- */
- public List getSortedProjects( List projects )
- throws CycleDetectedException
- {
- DAG dag = new DAG();
-
- Map projectMap = new HashMap();
-
- for ( Iterator i = projects.iterator(); i.hasNext(); )
- {
- MavenProject project = (MavenProject) i.next();
-
- String artifactId = project.getArtifactId();
-
- dag.addVertex( artifactId );
-
- projectMap.put( artifactId, project );
- }
-
- for ( Iterator i = projects.iterator(); i.hasNext(); )
- {
- MavenProject project = (MavenProject) i.next();
-
- String artifactId = project.getArtifactId();
-
- for ( Iterator j = project.getDependencies().iterator(); j.hasNext(); )
- {
- Dependency dependency = (Dependency) j.next();
-
- String dependencyArtifactId = dependency.getArtifactId();
-
- if ( dag.getVertex( dependencyArtifactId ) != null )
- {
- dag.addEdge( artifactId, dependencyArtifactId );
- }
- }
-
- MavenProject parent = project.getParent();
- if ( parent != null )
- {
- if ( dag.getVertex( parent.getArtifactId() ) != null )
- {
- dag.addEdge( artifactId, parent.getArtifactId() );
- }
- }
- }
-
- List sortedProjects = new ArrayList();
-
- for ( Iterator i = TopologicalSorter.sort( dag ).iterator(); i.hasNext(); )
- {
- String artifactId = (String) i.next();
-
- sortedProjects.add( projectMap.get( artifactId ) );
- }
-
- return sortedProjects;
- }
-
public MavenProject getCachedProject( String groupId, String artifactId, String version )
{
return (MavenProject) projectCache.get( createCacheKey( groupId, artifactId, version ) );
1.29 +75 -0 maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
Index: MavenProject.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- MavenProject.java 15 Mar 2005 23:36:27 -0000 1.28
+++ MavenProject.java 16 Mar 2005 04:21:03 -0000 1.29
@@ -21,6 +21,7 @@
import org.apache.maven.model.Build;
import org.apache.maven.model.CiManagement;
import org.apache.maven.model.Contributor;
+import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Developer;
import org.apache.maven.model.DistributionManagement;
@@ -33,12 +34,17 @@
import org.apache.maven.model.PluginManagement;
import org.apache.maven.model.Reports;
import org.apache.maven.model.Scm;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
+import org.codehaus.plexus.util.dag.DAG;
+import org.codehaus.plexus.util.dag.TopologicalSorter;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -569,5 +575,74 @@
{
this.collectedProjects = collectedProjects;
}
+
+ /**
+ * Sort a list of projects.
+ * <ul>
+ * <li>collect all the vertices for the projects that we want to build.</li>
+ * <li>iterate through the deps of each project and if that dep is within
+ * the set of projects we want to build then add an edge, otherwise throw
+ * the edge away because that dependency is not within the set of projects
+ * we are trying to build. we assume a closed set.</li>
+ * <li>do a topo sort on the graph that remains.</li>
+ * </ul>
+ */
+ public static List getSortedProjects( List projects )
+ throws CycleDetectedException
+ {
+ DAG dag = new DAG();
+
+ Map projectMap = new HashMap();
+
+ for ( Iterator i = projects.iterator(); i.hasNext(); )
+ {
+ MavenProject project = (MavenProject) i.next();
+
+ String artifactId = project.getArtifactId();
+
+ dag.addVertex( artifactId );
+
+ projectMap.put( artifactId, project );
+ }
+
+ for ( Iterator i = projects.iterator(); i.hasNext(); )
+ {
+ MavenProject project = (MavenProject) i.next();
+
+ String artifactId = project.getArtifactId();
+
+ for ( Iterator j = project.getDependencies().iterator(); j.hasNext(); )
+ {
+ Dependency dependency = (Dependency) j.next();
+
+ String dependencyArtifactId = dependency.getArtifactId();
+
+ if ( dag.getVertex( dependencyArtifactId ) != null )
+ {
+ dag.addEdge( artifactId, dependencyArtifactId );
+ }
+ }
+
+ MavenProject parent = project.getParent();
+ if ( parent != null )
+ {
+ if ( dag.getVertex( parent.getArtifactId() ) != null )
+ {
+ dag.addEdge( artifactId, parent.getArtifactId() );
+ }
+ }
+ }
+
+ List sortedProjects = new ArrayList();
+
+ for ( Iterator i = TopologicalSorter.sort( dag ).iterator(); i.hasNext(); )
+ {
+ String artifactId = (String) i.next();
+
+ sortedProjects.add( projectMap.get( artifactId ) );
+ }
+
+ return sortedProjects;
+ }
}
1.12 +0 -7 maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
Index: MavenProjectBuilder.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- MavenProjectBuilder.java 16 Mar 2005 04:18:06 -0000 1.11
+++ MavenProjectBuilder.java 16 Mar 2005 04:21:03 -0000 1.12
@@ -18,10 +18,8 @@
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.codehaus.plexus.util.dag.CycleDetectedException;
import java.io.File;
-import java.util.List;
public interface MavenProjectBuilder
{
@@ -36,10 +34,5 @@
MavenProject buildSuperProject( ArtifactRepository localRepository )
throws ProjectBuildingException;
- // take this out
-
- List getSortedProjects( List projects )
- throws CycleDetectedException;
-
MavenProject getCachedProject( String groupId, String artifactId, String version );
}