List of usage examples for org.apache.maven.execution MavenSession getTopLevelProject
public MavenProject getTopLevelProject()
From source file:com.github.shyiko.ump.NonRecursiveExtension.java
License:Apache License
public void afterProjectsRead(MavenSession session) { if (session.getGoals().isEmpty() && session.getUserProperties().isEmpty()) { session.setProjects(Arrays.asList(session.getTopLevelProject())); if (session.getCurrentProject().getDefaultGoal() == null) { session.getGoals().add("usage:show"); }//from w w w.j ava 2s .c o m } }
From source file:com.soebes.maven.extensions.incremental.IncrementalModuleBuilder.java
License:Apache License
private boolean havingScmDeveloperConnection(MavenSession session) { if (session.getTopLevelProject().getScm() == null) { LOGGER.error("The incremental module builder needs a correct scm configuration."); return false; }/*w ww . j a v a2 s.c o m*/ if (StringUtils.isEmpty(session.getTopLevelProject().getScm().getDeveloperConnection())) { LOGGER.error("The incremental module builder needs the scm developerConnection to work properly."); return false; } return true; }
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."); }// www .j a v a2 s . c o 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:example.LoggingListener.java
License:Apache License
@Override public void sessionEnded(BuildListener.Event event) { event.log.info("Properties passed to listener:"); for (Map.Entry<Object, Object> entry : event.listenerProperties.entrySet()) { event.log.info(entry.getKey() + " = " + entry.getValue()); }//from ww w .j a va2 s. c o m MavenSession session = event.event.getSession(); MavenProject project = session.getTopLevelProject(); if (session.getResult().getBuildSummary(project) instanceof BuildSuccess) { event.log.info("FINISHED -- PASSED -- " + BuildUtil.calculateBuildTimeFor(session)); } else { event.log.info("FINISHED -- FAILED -- " + BuildUtil.calculateBuildTimeFor(session)); } }
From source file:fr.brouillard.oss.jgitver.JGitverExtension.java
License:Apache License
@Override public void afterProjectsRead(MavenSession mavenSession) throws MavenExecutionException { MavenProject rootProject = mavenSession.getTopLevelProject(); List<MavenProject> projects = locateProjects(mavenSession, rootProject.getModules()); Map<GAV, String> newProjectVersions = new LinkedHashMap<>(); if (JGitverModelProcessor.class.isAssignableFrom(modelProcessor.getClass())) { JGitverModelProcessor jGitverModelProcessor = JGitverModelProcessor.class.cast(modelProcessor); JGitverModelProcessorWorkingConfiguration workingConfiguration = jGitverModelProcessor .getWorkingConfiguration(); if (workingConfiguration == null) { logger.warn(""); logger.warn("jgitver has changed!"); logger.warn(""); logger.warn(/*from w ww . ja v a2s . c o m*/ "it now requires the usage of maven core extensions instead of standard plugin extensions."); logger.warn("The plugin must be now declared in a `.mvn/extensions.xml` file."); logger.warn(""); logger.warn(" read https://github.com/jgitver/jgitver-maven-plugin for further information"); logger.warn(""); throw new MavenExecutionException("detection of jgitver old setting mechanism", new IllegalStateException("jgitver must now use maven core extensions")); } newProjectVersions = workingConfiguration.getNewProjectVersions(); } else { logger.info("jgitver-maven-plugin is about to change project(s) version(s)"); String newVersion = null; try { newVersion = JGitverUtils .calculateVersionForProject(rootProject, mavenSession.getUserProperties(), logger) .getCalculatedVersion(); } catch (IOException ex) { throw new MavenExecutionException("failure calculating version from git information", ex); } // Let's modify in memory resolved projects model for (MavenProject project : projects) { GAV projectGAV = GAV.from(project); // SUPPRESS CHECKSTYLE AbbreviationAsWordInName logger.debug("about to change in memory POM for: " + projectGAV); // First the project itself project.setVersion(newVersion); logger.debug(" version set to " + newVersion); VersionRange newVersionRange = VersionRange.createFromVersion(newVersion); project.getArtifact().setVersionRange(newVersionRange); logger.debug(" artifact version range set to " + newVersionRange); newProjectVersions.put(projectGAV, newVersion); // No need to worry about parent link, because model is in memory } try { JGitverUtils.attachModifiedPomFilesToTheProject(projects, newProjectVersions, mavenSession, logger); } catch (IOException | XmlPullParserException ex) { throw new MavenExecutionException("cannot attach updated POMs during project execution", ex); } } newProjectVersions.entrySet() .forEach(e -> logger.info(" " + e.getKey().toString() + " -> " + e.getValue())); }
From source file:info.ronjenkins.maven.rtr.RTR.java
License:Apache License
/** * RTR entry point./* w w w . j ava 2s . c o m*/ * * @param session * the current Maven session, never null. */ @Override public void afterProjectsRead(final MavenSession session) throws MavenExecutionException { // Don't allow this extension to be loaded as a build extension. try { RTR.checkForRequiredClasses(); } catch (final NoClassDefFoundError e) { throw new SmartReactorSanityCheckException( "This extension must be loaded as a core extension, not as a build extension."); } // Don't allow double-execution due to double-classloading. this.detectDoubleExecution(session); if (this.disabledDueToDoubleLoad) { return; } // Don't do anything if the Smart Reactor is disabled. final MavenProject executionRoot = session.getTopLevelProject(); this.disabled = RTRConfig.isDisabled(session, executionRoot); if (this.disabled) { return; } this.release = RTRConfig.isRelease(session, executionRoot); this.externalSnapshotsAllowed = RTRConfig.isExternalSnapshotsAllowed(session, executionRoot); this.logger.info("Assembling smart reactor..."); this.components = new RTRComponents(this.builder); this.executeSteps(this.startSteps, session, this.components); // Done. Maven build will proceed from here, none the wiser. ;) }
From source file:info.ronjenkins.maven.rtr.steps.PerformSmartReactorSanityChecks.java
License:Apache License
@Override public void execute(final MavenSession session, final RTRComponents components) throws MavenExecutionException { // Check for a single POM-only reactor, assuming this is prohibited. if (session.getProjects().size() == 1) { final MavenProject executionRoot = session.getTopLevelProject(); if (executionRoot.getArtifact().getType().equals("pom") && !RTRConfig.isSinglePomReactorAllowed(session, executionRoot)) { this.logger.error(""); throw new SmartReactorSanityCheckException( "Reactor contains a single POM-packaging project, which is not allowed. If this is intended, set property \"" + RTRConfig.PROP_SINGLE_POM_REACTOR_ALLOWED + "\" to true."); }/*from w w w .ja va2s . c om*/ } }
From source file:info.ronjenkins.maven.rtr.steps.release.TransformProjectsIntoReleases.java
License:Apache License
@Override protected void configureReleaseDescriptor(final MavenSession session, final RTRComponents components) { final MavenProject executionRoot = session.getTopLevelProject(); this.releaseDescriptor.setAddSchema(RTRConfig.isAddSchema(session, executionRoot)); this.releaseDescriptor .setAllowTimestampedSnapshots(RTRConfig.isAllowTimestampedSnapshots(session, executionRoot)); this.releaseDescriptor.setAutoVersionSubmodules(RTRConfig.isAutoVersionSubmodules(session, executionRoot)); this.releaseDescriptor .setProjectVersionPolicyId(RTRConfig.getProjectVersionPolicyId(session, executionRoot)); final String releaseVersion = RTRConfig.getReleaseVersion(session, executionRoot); if (releaseVersion != null) { this.releaseDescriptor.setDefaultReleaseVersion(releaseVersion); }/* w ww .j ava 2s . com*/ final String tag = RTRConfig.getTag(session, executionRoot); if (tag != null) { this.releaseDescriptor.setScmReleaseLabel(tag); } final String tagBase = RTRConfig.getTagBase(session, executionRoot); if (tagBase != null) { this.releaseDescriptor.setScmTagBase(tagBase); } final String tagNameFormat = RTRConfig.getTagNameFormat(session, executionRoot); if (tagNameFormat != null) { this.releaseDescriptor.setScmTagNameFormat(tagNameFormat); } }
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 w w w . j a 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:it.session.maven.plugin.TilesMavenLifecycleParticipant.java
License:Apache License
/** * Invoked after all MavenProject instances have been created. * <p/>/*from w w w.jav a 2 s . com*/ * This callback is intended to allow extensions to manipulate MavenProjects * before they are sorted and actual build execution starts. */ public void afterProjectsRead(MavenSession mavenSession) throws MavenExecutionException { final MavenProject topLevelProject = mavenSession.getTopLevelProject(); List<String> subModules = topLevelProject.getModules(); if (subModules != null && subModules.size() > 0) { //We're in a multi-module build, we need to trigger model merging on all sub-modules for (MavenProject subModule : mavenSession.getProjects()) { if (subModule != topLevelProject) { mergeTiles(subModule, mavenSession); } } } else { mergeTiles(topLevelProject, mavenSession); } }