Package org.apache.maven.project
Class ProjectSorter
java.lang.Object
org.apache.maven.project.ProjectSorter
Sort projects by dependencies.
- Version:
- $Id: ProjectSorter.java 793745 2009-07-13 23:24:10Z jdcasey $
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.codehaus.plexus.util.dag.DAGprivate final Mapprivate final List<MavenProject>private MavenProject -
Constructor Summary
ConstructorsConstructorDescriptionProjectSorter(List projects) Sort a list of projects.ProjectSorter(List projects, List selectedProjectNames, String resumeFrom, boolean make, boolean makeDependents) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddEdgeWithParentCheck(Map projectMap, String projectRefId, MavenProject project, String id) private static ListapplyMakeFilter(List sortedProjects, org.codehaus.plexus.util.dag.DAG dag, Map projectMap, MavenProject topLevelProject, List selectedProjectNames, boolean make, boolean makeDependents) private static MavenProjectfindProject(String projectName, Map projectMap, MavenProject topLevelProject) private static voidgatherAncestors(org.codehaus.plexus.util.dag.Vertex v, Map projectMap, Set out, Set visited) private static voidgatherDescendents(org.codehaus.plexus.util.dag.Vertex v, Map projectMap, Set out, Set visited) org.codehaus.plexus.util.dag.DAGgetDAG()getDependents(String id) booleanprivate static voidresumeFrom(String resumeFrom, List sortedProjects, Map projectMap, MavenProject topLevelProject)
-
Field Details
-
dag
private final org.codehaus.plexus.util.dag.DAG dag -
projectMap
-
sortedProjects
-
topLevelProject
-
-
Constructor Details
-
ProjectSorter
public ProjectSorter(List projects) throws org.codehaus.plexus.util.dag.CycleDetectedException, DuplicateProjectException, MissingProjectException Sort a list of projects.- collect all the vertices for the projects that we want to build.
- 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.
- do a topo sort on the graph that remains.
- Throws:
DuplicateProjectException- if any projects are duplicated by idMissingProjectExceptionorg.codehaus.plexus.util.dag.CycleDetectedException
-
ProjectSorter
public ProjectSorter(List projects, List selectedProjectNames, String resumeFrom, boolean make, boolean makeDependents) throws org.codehaus.plexus.util.dag.CycleDetectedException, DuplicateProjectException, MissingProjectException - Throws:
org.codehaus.plexus.util.dag.CycleDetectedExceptionDuplicateProjectExceptionMissingProjectException
-
-
Method Details
-
applyMakeFilter
private static List applyMakeFilter(List sortedProjects, org.codehaus.plexus.util.dag.DAG dag, Map projectMap, MavenProject topLevelProject, List selectedProjectNames, boolean make, boolean makeDependents) throws MissingProjectException - Throws:
MissingProjectException
-
resumeFrom
private static void resumeFrom(String resumeFrom, List sortedProjects, Map projectMap, MavenProject topLevelProject) throws MissingProjectException - Throws:
MissingProjectException
-
findProject
private static MavenProject findProject(String projectName, Map projectMap, MavenProject topLevelProject) throws MissingProjectException - Throws:
MissingProjectException
-
gatherDescendents
-
gatherAncestors
-
addEdgeWithParentCheck
private void addEdgeWithParentCheck(Map projectMap, String projectRefId, MavenProject project, String id) throws org.codehaus.plexus.util.dag.CycleDetectedException - Throws:
org.codehaus.plexus.util.dag.CycleDetectedException
-
getTopLevelProject
-
getSortedProjects
-
hasMultipleProjects
public boolean hasMultipleProjects() -
getDependents
-
getDAG
public org.codehaus.plexus.util.dag.DAG getDAG() -
getProjectMap
-