Class ProjectSorter

java.lang.Object
org.apache.maven.project.ProjectSorter

public class ProjectSorter extends Object
Sort projects by dependencies.
Version:
$Id: ProjectSorter.java 793745 2009-07-13 23:24:10Z jdcasey $
  • Field Details

    • dag

      private final org.codehaus.plexus.util.dag.DAG dag
    • projectMap

      private final Map projectMap
    • sortedProjects

      private final List<MavenProject> sortedProjects
    • topLevelProject

      private MavenProject 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 id
      MissingProjectException
      org.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.CycleDetectedException
      DuplicateProjectException
      MissingProjectException
  • 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

      private static void gatherDescendents(org.codehaus.plexus.util.dag.Vertex v, Map projectMap, Set out, Set visited)
    • gatherAncestors

      private static void gatherAncestors(org.codehaus.plexus.util.dag.Vertex v, Map projectMap, Set out, Set visited)
    • 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

      public MavenProject getTopLevelProject()
    • getSortedProjects

      public List<MavenProject> getSortedProjects()
    • hasMultipleProjects

      public boolean hasMultipleProjects()
    • getDependents

      public List getDependents(String id)
    • getDAG

      public org.codehaus.plexus.util.dag.DAG getDAG()
    • getProjectMap

      public Map getProjectMap()