private MavenExecutionResult readProject()

in maven2-server-impl/src/org/jetbrains/maven/embedder/MavenEmbedder.java [321:371]


  private MavenExecutionResult readProject(@NotNull final MavenExecutionRequest request) {
    ProfileManager globalProfileManager = request.getGlobalProfileManager();
    globalProfileManager.loadSettingsProfiles(request.getSettings());

    MavenProject rootProject = null;
    final List<Exception> exceptions = new ArrayList<Exception>();
    Object result;
    try {
      final File pomFile = new File(request.getPomFile());
      if (!pomFile.exists()) {
        throw new FileNotFoundException("File doesn't exist: " + pomFile.getPath());
      }

      final Method getProjectsMethod = DefaultMaven.class.getDeclaredMethod("getProjects", MavenExecutionRequest.class);
      getProjectsMethod.setAccessible(true);
      Maven maven = getComponent(Maven.class);
      result = getProjectsMethod.invoke(maven, request);
    }
    catch (NoSuchMethodException | IllegalAccessException e) {
      throw new RuntimeException(e);
    }
    catch (InvocationTargetException e) {
      return handleException(e.getTargetException());
    }
    catch (Exception e) {
      return handleException(e);
    }

    if (result != null) {
      MavenProjectBuilder builder = getComponent(MavenProjectBuilder.class);
      for (Object p : (List)result) {
        MavenProject project = (MavenProject)p;
        try {
          builder.calculateConcreteState(project, request.getProjectBuilderConfiguration(), false);
        }
        catch (ModelInterpolationException e) {
          exceptions.add(e);
        }

        if (project.isExecutionRoot()) {
          rootProject = project;
        }
      }

      if (rootProject == null && exceptions.isEmpty()) {
        throw new RuntimeException("Couldn't build project for unknown reason");
      }
    }

    return new MavenExecutionResult(rootProject, exceptions);
  }