List of usage examples for org.apache.maven.execution MavenSession getProjectDependencyGraph
public ProjectDependencyGraph getProjectDependencyGraph()
From source file:com.soebes.maven.extensions.incremental.IncrementalModuleBuilder.java
License:Apache License
@Override public void build(final MavenSession session, final ReactorContext reactorContext, ProjectBuildList projectBuilds, final List<TaskSegment> taskSegments, ReactorBuildStatus reactorBuildStatus) throws ExecutionException, InterruptedException { // Think about this? if (!session.getCurrentProject().isExecutionRoot()) { LOGGER.info("Not executing in root."); }//from w w w .j a v a 2 s . co m Path projectRootpath = session.getTopLevelProject().getBasedir().toPath(); if (!havingScmDeveloperConnection(session)) { LOGGER.warn("There is no scm developer connection configured."); LOGGER.warn("So we can't estimate which modules have changed."); return; } // TODO: Make more separation of concerns..(Extract the SCM Code from // here? ScmRepository repository = null; try { // Assumption: top level project contains the SCM entry. repository = scmManager .makeScmRepository(session.getTopLevelProject().getScm().getDeveloperConnection()); } catch (ScmRepositoryException | NoSuchScmProviderException e) { LOGGER.error("Failure during makeScmRepository", e); return; } StatusScmResult result = null; try { result = scmManager.status(repository, new ScmFileSet(session.getTopLevelProject().getBasedir())); } catch (ScmException e) { LOGGER.error("Failure during status", e); return; } List<ScmFile> changedFiles = result.getChangedFiles(); if (changedFiles.isEmpty()) { LOGGER.info(" Nothing has been changed."); } else { for (ScmFile scmFile : changedFiles) { LOGGER.info(" Changed file: " + scmFile.getPath() + " " + scmFile.getStatus()); } ModuleCalculator mc = new ModuleCalculator(session.getProjectDependencyGraph().getSortedProjects(), changedFiles); List<MavenProject> calculateChangedModules = mc.calculateChangedModules(projectRootpath); for (MavenProject mavenProject : calculateChangedModules) { LOGGER.info("Changed Project: " + mavenProject.getId()); } IncrementalModuleBuilderImpl incrementalModuleBuilderImpl = new IncrementalModuleBuilderImpl( calculateChangedModules, lifecycleModuleBuilder, session, reactorContext, taskSegments); // Really build only changed modules. incrementalModuleBuilderImpl.build(); } }
From source file:com.soebes.maven.extensions.incremental.IncrementalModuleBuilderImpl.java
License:Apache License
IncrementalModuleBuilderImpl(List<MavenProject> selectedProjects, LifecycleModuleBuilder lifecycleModuleBuilder, MavenSession session, ReactorContext reactorContext, List<TaskSegment> taskSegments) { this.lifecycleModuleBuilder = Objects.requireNonNull(lifecycleModuleBuilder, "lifecycleModuleBuilder is not allowed to be null."); this.mavenSession = Objects.requireNonNull(session, "session is not allowed to be null."); this.taskSegments = Objects.requireNonNull(taskSegments, "taskSegements is not allowed to be null"); this.reactorContext = Objects.requireNonNull(reactorContext, "reactorContext is not allowed to be null."); ProjectDependencyGraph projectDependencyGraph = session.getProjectDependencyGraph(); List<MavenProject> intermediateResult = new LinkedList<>(); for (MavenProject selectedProject : selectedProjects) { intermediateResult.add(selectedProject); // Up or downstream ? (-amd) intermediateResult.addAll(projectDependencyGraph.getDownstreamProjects(selectedProject, true)); // TODO: Need to think about this? -am ? // intermediateResult.addAll(projectDependencyGraph.getUpstreamProjects(selectedProject, // true)); }/*from w w w .ja v a 2 s. c om*/ List<MavenProject> result = new LinkedList<>(); for (MavenProject project : intermediateResult) { if (!result.contains(project)) { result.add(project); } } this.projects = result; }
From source file:info.ronjenkins.maven.rtr.steps.ValidateSmartReactorEligibility.java
License:Apache License
@Override public void execute(final MavenSession session, final RTRComponents components) throws MavenExecutionException { // Ensure that the Maven Release Plugin is not in the list of goals. for (final String goal : session.getGoals()) { if (goal.startsWith("release:") || goal.startsWith("org.apache.maven.plugins:maven-release-plugin:")) { this.logger.error(""); throw new SmartReactorSanityCheckException( "A goal from the Maven Release Plugin was specified for execution."); }//from ww w . ja v a 2 s .c o m } // Ensure that the Maven Release Plugin is not declared in the POM. final List<MavenProject> projectsWithMavenReleasePlugin = new ArrayList<>(); for (final MavenProject project : session.getProjects()) { for (final Artifact artifact : project.getPluginArtifacts()) { if (artifact.getGroupId().equals("org.apache.maven.plugins") && artifact.getArtifactId().equals("maven-release-plugin")) { projectsWithMavenReleasePlugin.add(project); } } } if (!projectsWithMavenReleasePlugin.isEmpty()) { this.logger.error(""); for (final MavenProject project : projectsWithMavenReleasePlugin) { this.logger.error("Project " + project + " contains a reference to the Maven Release Plugin."); } this.logger.error(""); throw new SmartReactorSanityCheckException("Reactor is ineligible to become a Smart Reactor."); } // Ensure that the root is a SNAPSHOT. final MavenProject root = session.getTopLevelProject(); if (!root.getArtifact().isSnapshot()) { this.logger.error(""); this.logger.error("Top-level project " + root + " is not a SNAPSHOT."); this.logger.error(""); throw new SmartReactorSanityCheckException("Reactor is ineligible to become a Smart Reactor."); } // Ensure that the ancestors of every SNAPSHOT are also SNAPSHOTs. final ProjectDependencyGraph pdg = session.getProjectDependencyGraph(); final List<MavenProject> badProjects = new ArrayList<>(); for (final MavenProject project : session.getProjects()) { if (project.getArtifact().isSnapshot()) { for (final MavenProject ancestor : pdg.getUpstreamProjects(project, true)) { if (!ancestor.getArtifact().isSnapshot()) { badProjects.add(ancestor); } } } } // Fail if necessary. if (!badProjects.isEmpty()) { this.logger.error(""); this.logger.error( "The following release projects in the reactor have SNAPSHOT dependencies in the reactor, which is not allowed:"); for (final MavenProject badProject : badProjects) { this.logger.error(" " + badProject.getArtifact().toString() + " @ " + badProject.getFile().getAbsolutePath()); } this.logger.error(""); throw new SmartReactorSanityCheckException("Reactor is ineligible to become a Smart Reactor."); } }
From source file:io.sundr.maven.filter.SessionArtifactFilter.java
License:Apache License
public SessionArtifactFilter(MavenSession session, boolean include) { this.projects = session.getProjectDependencyGraph().getSortedProjects(); this.include = include; }
From source file:io.takari.maven.builder.smart.SmartBuilderImpl.java
License:Apache License
SmartBuilderImpl(LifecycleModuleBuilder lifecycleModuleBuilder, MavenSession session, ReactorContext reactorContext, List<TaskSegment> taskSegments) { this.lifecycleModuleBuilder = lifecycleModuleBuilder; this.rootSession = session; this.reactorContext = reactorContext; this.taskSegments = taskSegments; final List<MavenProject> projects = session.getProjects(); this.degreeOfConcurrency = Integer.valueOf(session.getRequest().getDegreeOfConcurrency()); List<Listener> listeners = new ArrayList<>(); this.projectsBuildMetrics = new ProjectsBuildMetrics(projects); listeners.add(projectsBuildMetrics); BuildProgressReportThread progressReporter = null; if (isProfiling()) { progressReporter = new BuildProgressReportThread(projects.size(), degreeOfConcurrency); progressReporter.start();// w w w. j a v a 2 s.c om listeners.add(progressReporter); } this.progressReporter = progressReporter; final Comparator<MavenProject> projectComparator = ProjectComparator.create(session); this.reactorBuildQueue = new ReactorBuildQueue(session.getProjectDependencyGraph()); this.listeners = Collections.unmodifiableList(listeners); this.executor = new ProjectExecutorService(degreeOfConcurrency, projectComparator); }
From source file:ms.dew.devops.maven.function.DependenciesResolver.java
License:Apache License
/** * Init./*from w w w . j ava 2 s .c o m*/ * * @param mavenSession the maven session */ public static void init(MavenSession mavenSession) { if (ExecuteOnceProcessor.executedCheck(DependenciesResolver.class)) { return; } try { DefaultProjectDependenciesResolver resolver = (DefaultProjectDependenciesResolver) mavenSession .getContainer().lookup(ProjectDependenciesResolver.class.getName()); for (MavenProject mavenProject : mavenSession.getProjectDependencyGraph().getSortedProjects()) { Set<Artifact> result = resolver.resolve(mavenProject, Collections.singleton(Artifact.SCOPE_COMPILE), mavenSession); mavenProject.setArtifacts(result); } } catch (ArtifactResolutionException | ArtifactNotFoundException | ComponentLookupException e) { throw new GlobalProcessException(e.getMessage(), e); } }