public ProjectBuildList calculateProjectBuilds( MavenSession session, List<TaskSegment> taskSegments ) { List<ProjectSegment> projectBuilds = new ArrayList<>(); MavenProject rootProject = session.getTopLevelProject(); for ( TaskSegment taskSegment : taskSegments ) { List<MavenProject> projects; if ( taskSegment.isAggregating() ) { projects = Collections.singletonList( rootProject ); } else { projects = session.getProjects(); } for ( MavenProject project : projects ) { BuilderCommon.attachToThread( project ); // Not totally sure if this is needed for anything MavenSession copiedSession = session.clone(); copiedSession.setCurrentProject( project ); projectBuilds.add( new ProjectSegment( project, taskSegment, copiedSession ) ); } } return new ProjectBuildList( projectBuilds ); } }
/* package */void buildProject(MavenProject project) { logger.info("STARTED build of project {}", projectGA(project)); try { MavenSession copiedSession = rootSession.clone(); lifecycleModuleBuilder.buildProject(copiedSession, rootSession, reactorContext, project, taskSegment); } catch (RuntimeException ex) { // preserve the xml stack trace, and the java cause chain rootSession.getResult() .addException(new RuntimeException(project.getName() + ": " + ex.getMessage(), ex)); } }
@Override public void execute() throws MojoExecutionException, MojoFailureException { if (getProject().isExecutionRoot() && !getProject().getModules().isEmpty()) { List<MavenProject> updated = new LinkedList<MavenProject>(); Map<BomConfig, MavenProject> generated = new HashMap<BomConfig, MavenProject>(); updated.add(getProject()); if (boms == null || boms.length == 0) { String artifactId = getProject().getArtifactId() + "-bom"; if (GENERATED_ARTIFACT_IDS.add(artifactId)) { BomConfig cfg = new BomConfig(artifactId, getProject().getName() + " Bom", " Generated bom"); MavenProject bomProject = generateBom(cfg); generated.put(cfg, bomProject); updated.add(bomProject); } } else { for (BomConfig cfg : boms) { if (GENERATED_ARTIFACT_IDS.add(cfg.getArtifactId())) { MavenProject bomProject = generateBom(cfg); generated.put(cfg, bomProject); updated.add(bomProject); } } } updated.addAll(getAllButCurrent()); for (Map.Entry<BomConfig, MavenProject> entry : generated.entrySet()) { build(getSession().clone(), entry.getValue(), updated, entry.getKey().getGoals()); } } }
MavenSession newSession = oldSession.clone(); newSession.setProjects(newReactor);
MavenSession newSession = oldSession.clone(); newSession.setProjects(newReactor);