List of usage examples for org.apache.maven.execution MavenExecutionRequest setRecursive
MavenExecutionRequest setRecursive(boolean recursive);
From source file:org.eclipse.m2e.core.ui.internal.actions.SelectionUtil.java
License:Open Source License
private static MavenProject readMavenProject(final File pomFile, IProgressMonitor monitor) throws CoreException { if (monitor == null) { monitor = new NullProgressMonitor(); }//from w ww . j av a2 s . c o m final IMaven maven = MavenPlugin.getMaven(); IMavenExecutionContext context = maven.createExecutionContext(); MavenExecutionRequest request = context.getExecutionRequest(); request.setOffline(false); request.setUpdateSnapshots(false); request.setRecursive(false); MavenExecutionResult result = context.execute(new ICallable<MavenExecutionResult>() { public MavenExecutionResult call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { return maven.readMavenProject(pomFile, context.newProjectBuildingRequest()); } }, monitor); MavenProject project = result.getProject(); if (project != null) { return project; } if (result.hasExceptions()) { List<IStatus> statuses = new ArrayList<IStatus>(); List<Throwable> exceptions = result.getExceptions(); for (Throwable e : exceptions) { statuses.add(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, e.getMessage(), e)); } throw new CoreException(new MultiStatus(IMavenConstants.PLUGIN_ID, IStatus.ERROR, // statuses.toArray(new IStatus[statuses.size()]), Messages.SelectionUtil_error_cannot_read, null)); } throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, // Messages.SelectionUtil_error_cannot_read, null)); }
From source file:org.eclipse.m2e.wtp.internal.filtering.ResourceFilteringBuildParticipant.java
License:Open Source License
private void executeCopyResources(IMavenProjectFacade facade, ResourceFilteringConfiguration filteringConfiguration, IPath targetFolder, List<Xpp3Dom> resources, IProgressMonitor monitor) throws CoreException { //Create a maven request + session ResolverConfiguration resolverConfig = facade.getResolverConfiguration(); List<String> filters = filteringConfiguration.getFilters(); IMavenProjectRegistry projectManager = MavenPlugin.getMavenProjectRegistry(); MavenExecutionRequest request = projectManager.createExecutionRequest(facade.getPom(), resolverConfig, monitor);/* w w w. j a v a 2 s.com*/ request.setRecursive(false); request.setOffline(true); IMaven maven = MavenPlugin.getMaven(); MavenProject mavenProject = facade.getMavenProject(); MavenSession session = maven.createSession(request, mavenProject); MavenExecutionPlan executionPlan = maven.calculateExecutionPlan(session, mavenProject, Collections.singletonList("resources:copy-resources"), true, monitor); MojoExecution copyFilteredResourcesMojo = getExecution(executionPlan, "maven-resources-plugin"); if (copyFilteredResourcesMojo == null) return; Xpp3Dom originalConfig = copyFilteredResourcesMojo.getConfiguration(); Xpp3Dom configuration = Xpp3DomUtils.mergeXpp3Dom(new Xpp3Dom("configuration"), originalConfig); boolean parentHierarchyLoaded = false; try { parentHierarchyLoaded = loadParentHierarchy(facade, monitor); //Set resource directories to read setupResources(configuration, resources); //Force overwrite setValue(configuration, "overwrite", Boolean.TRUE); //Limit placeholder delimiters, otherwise, pages containing @ wouldn't be filtered correctly setupDelimiters(configuration); //Set output directory to the m2eclipse-wtp webresources directory setValue(configuration, "outputDirectory", targetFolder.toPortableString()); setValue(configuration, "escapeString", filteringConfiguration.getEscapeString()); setNonfilteredExtensions(configuration, filteringConfiguration.getNonfilteredExtensions()); //Setup filters setupFilters(configuration, filters); //Create a maven request + session request.setRecursive(false); request.setOffline(true); //Execute our modified mojo copyFilteredResourcesMojo.setConfiguration(configuration); copyFilteredResourcesMojo.getMojoDescriptor().setGoal("copy-resources"); maven.execute(session, copyFilteredResourcesMojo, monitor); if (session.getResult().hasExceptions()) { MavenPluginActivator.getDefault().getMavenMarkerManager().addMarker(facade.getProject(), IMavenConstants.MARKER_CONFIGURATION_ID, "An error occurred while filtering resources", -1, IMarker.SEVERITY_ERROR); //move exceptions up to the original session, so they can be handled by the maven builder //XXX current exceptions refer to maven-resource-plugin (since that's what we used), we should probably // throw a new exception instead to indicate the problem(s) come(s) from web resource filtering for (Throwable t : session.getResult().getExceptions()) { getSession().getResult().addException(t); } } } finally { //Restore original configuration copyFilteredResourcesMojo.setConfiguration(originalConfig); if (parentHierarchyLoaded) { mavenProject.setParent(null); } } }
From source file:org.jetbrains.idea.maven.server.Maven30ServerEmbedderImpl.java
License:Apache License
private MavenExecutionResult doExecute(@Nonnull final File file, @Nonnull final List<String> activeProfiles, @Nonnull final List<String> inactiveProfiles, @Nonnull final List<String> goals, @Nonnull final List<String> selectedProjects, boolean alsoMake, boolean alsoMakeDependents) throws RemoteException { MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles, goals); if (!selectedProjects.isEmpty()) { request.setRecursive(true); request.setSelectedProjects(selectedProjects); if (alsoMake && alsoMakeDependents) { request.setMakeBehavior(ReactorManager.MAKE_BOTH_MODE); } else if (alsoMake) { request.setMakeBehavior(ReactorManager.MAKE_MODE); } else if (alsoMakeDependents) { request.setMakeBehavior(ReactorManager.MAKE_DEPENDENTS_MODE); }//from ww w. j a v a 2 s.c om } org.apache.maven.execution.MavenExecutionResult executionResult = safeExecute(request, getComponent(Maven.class)); return new MavenExecutionResult(executionResult.getProject(), filterExceptions(executionResult.getExceptions())); }
From source file:org.jetbrains.maven.embedder.MavenEmbedder.java
License:Apache License
@Nonnull public MavenExecutionResult execute(@Nonnull final File file, @Nonnull final List<String> activeProfiles, @Nonnull final List<String> inactiveProfiles, @Nonnull final List<String> goals, @Nonnull final List<String> selectedProjects, boolean alsoMake, boolean alsoMakeDependents) { try {/*from ww w. ja v a 2 s .com*/ MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles, goals); if (!selectedProjects.isEmpty()) { request.setRecursive(true); request.setSelectedProjects(selectedProjects); if (alsoMake && alsoMakeDependents) { request.setMakeBehavior(ReactorManager.MAKE_BOTH_MODE); } else if (alsoMake) { request.setMakeBehavior(ReactorManager.MAKE_MODE); } else if (alsoMakeDependents) { request.setMakeBehavior(ReactorManager.MAKE_DEPENDENTS_MODE); } } Maven maven = getComponent(Maven.class); Method method = maven.getClass().getDeclaredMethod("doExecute", MavenExecutionRequest.class, EventDispatcher.class); method.setAccessible(true); ReactorManager reactor = (ReactorManager) method.invoke(maven, request, request.getEventDispatcher()); return new MavenExecutionResult(reactor.getTopLevelProject(), Collections.<Exception>emptyList()); } catch (InvocationTargetException e) { return handleException(e.getTargetException()); } catch (NoSuchMethodException e) { throw new RuntimeException(e); // should never happen } catch (IllegalAccessException e) { throw new RuntimeException(e); // should never happen } }
From source file:org.jetbrains.maven.embedder.MavenEmbedder.java
License:Apache License
@Nonnull public MavenExecutionResult readProjectWithModules(@Nonnull final File file, List<String> activeProfiles, List<String> inactiveProfiles) { MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles, Collections.<String>emptyList()); request.getGlobalProfileManager().loadSettingsProfiles(mySettings); request.setRecursive(true); return readProject(request); }
From source file:org.jetbrains.maven.embedder.MavenEmbedder.java
License:Apache License
@Nonnull public MavenExecutionResult readProject(@Nonnull final File file, @Nonnull final List<String> activeProfiles, @Nonnull final List<String> inactiveProfiles) { MavenExecutionRequest request = createRequest(file, activeProfiles, inactiveProfiles, Collections.<String>emptyList()); request.getGlobalProfileManager().loadSettingsProfiles(mySettings); request.setRecursive(false); return readProject(request); }
From source file:org.jetbrains.maven.embedder.MavenEmbedder.java
License:Apache License
private MavenExecutionRequest createRequest(File file, List<String> activeProfiles, List<String> inactiveProfiles, List<String> goals) { Properties executionProperties = myEmbedderSettings.getProperties(); if (executionProperties == null) { executionProperties = new Properties(); }/*from w w w . j a v a 2 s .c om*/ DefaultEventDispatcher dispatcher = new DefaultEventDispatcher(); dispatcher.addEventMonitor(new DefaultEventMonitor(myLogger)); // subclassing because in DefaultMavenExecutionRequest field isRecursive is always false MavenExecutionRequest result = new DefaultMavenExecutionRequest(myLocalRepository, mySettings, dispatcher, goals, file.getParent(), createProfileManager(activeProfiles, inactiveProfiles, executionProperties), executionProperties, new Properties(), true) { private boolean myIsRecursive; @Override public boolean isRecursive() { return myIsRecursive; } @Override public void setRecursive(final boolean recursive) { myIsRecursive = recursive; } }; result.setPomFile(file.getPath()); result.setRecursive(myEmbedderSettings.isRecursive()); return result; }
From source file:org.maven.ide.eclipse.embedder.BuildPathManager.java
License:Apache License
private MavenProject collectSourceEntries(IProject project, List sourceEntries, Set sources, ResolverConfiguration configuration, IProgressMonitor monitor) { if (monitor.isCanceled()) { throw new OperationCanceledException(); }/*from w ww . j a v a 2 s . c o m*/ Maven2Plugin plugin = Maven2Plugin.getDefault(); IPreferenceStore preferenceStore = plugin.getPreferenceStore(); boolean offline = preferenceStore.getBoolean(Maven2PreferenceConstants.P_OFFLINE); boolean debug = preferenceStore.getBoolean(Maven2PreferenceConstants.P_DEBUG_OUTPUT); String globalSettings = preferenceStore.getString(Maven2PreferenceConstants.P_GLOBAL_SETTINGS_FILE); MavenEmbedder mavenEmbedder; try { // XXX should use project embedder with resolving from workspace? mavenEmbedder = EmbedderFactory.createMavenEmbedder(EmbedderFactory.createExecutionCustomizer(), new PluginConsoleMavenEmbeddedLogger(console, debug), globalSettings); } catch (MavenEmbedderException ex) { console.logError("Unable to create embedder; " + ex.toString()); return null; } IFile pomResource = project.getFile(Maven2Plugin.POM_FILE_NAME); monitor.setTaskName("Reading " + pomResource.getFullPath()); if (preferenceStore.getBoolean(Maven2PreferenceConstants.P_DEBUG_OUTPUT)) { console.logMessage("Reading " + pomResource.getFullPath()); } File pomFile = pomResource.getLocation().toFile(); MavenProject mavenProject; // try { // mavenProject = mavenEmbedder.readProject(pomFile); // } catch(Exception ex) { // console.logError("Unable to read project " + pomResource.getFullPath() + "; " + ex.toString()); // return null; // } File basedir = pomResource.getLocation().toFile().getParentFile(); File projectBaseDir = project.getLocation().toFile(); monitor.subTask("Generating Sources " + pomResource.getFullPath()); try { console.logMessage("Generating sources " + pomResource.getFullPath()); MavenExecutionRequest request = EmbedderFactory.createMavenExecutionRequest(mavenEmbedder, offline, debug); request.setUseReactor(false); request.setRecursive(configuration.shouldIncludeModules()); request.setBaseDirectory(pomFile.getParentFile()); request.setGoals(Collections.singletonList("process-test-resources")); request.addEventMonitor(new PluginConsoleEventMonitor(console)); request.setTransferListener(new TransferListenerAdapter(monitor, console, indexManager)); // request.setPomFile(pomFile.getAbsolutePath()); // request.setGoals(Arrays.asList("generate-sources,generate-resources,generate-test-sources,generate-test-resources".split(","))); // request.setProfiles(...); // request.setReactorFailureBehavior(MavenExecutionRequest.REACTOR_FAIL_AT_END); MavenExecutionResult result = mavenEmbedder.execute(request); // TODO optimize project refresh monitor.subTask("Refreshing"); project.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 1)); mavenProject = result.getProject(); ReactorManager reactorManager = result.getReactorManager(); if (reactorManager != null && reactorManager.getSortedProjects() != null) { if (configuration.shouldIncludeModules()) { for (Iterator it = reactorManager.getSortedProjects().iterator(); it.hasNext();) { addDirs(project, sources, sourceEntries, (MavenProject) it.next(), basedir, projectBaseDir); } } else { addDirs(project, sources, sourceEntries, // (MavenProject) reactorManager.getSortedProjects().iterator().next(), // basedir, projectBaseDir); } } if (result.hasExceptions()) { for (Iterator it = result.getExceptions().iterator(); it.hasNext();) { Exception ex = (Exception) it.next(); console.logError("Build error for " + pomResource.getFullPath() + "; " + ex.toString()); } } if (mavenProject == null) { try { mavenProject = mavenEmbedder.readProject(pomFile); } catch (Exception ex2) { console.logError("Unable to read project " + pomResource.getFullPath() + "; " + ex2.toString()); return null; } } } catch (Exception ex) { String msg = "Build error for " + pomResource.getFullPath(); console.logError(msg + "; " + ex.toString()); Maven2Plugin.log(msg, ex); try { mavenProject = mavenEmbedder.readProject(pomFile); } catch (Exception ex2) { console.logError("Unable to read project " + pomResource.getFullPath() + "; " + ex.toString()); return null; } addDirs(project, sources, sourceEntries, mavenProject, basedir, projectBaseDir); } return mavenProject; }
From source file:org.maven.ide.eclipse.wtp.filtering.ResourceFilteringBuildParticipant.java
License:Open Source License
private void executeCopyResources(IMavenProjectFacade facade, ResourceFilteringConfiguration filteringConfiguration, IPath targetFolder, List<Xpp3Dom> resources, IProgressMonitor monitor) throws CoreException { //Create a maven request + session ResolverConfiguration resolverConfig = facade.getResolverConfiguration(); List<String> filters = filteringConfiguration.getFilters(); IMavenProjectRegistry projectManager = MavenPlugin.getMavenProjectRegistry(); MavenExecutionRequest request = projectManager.createExecutionRequest(facade.getPom(), resolverConfig, monitor);// www . java 2s . c o m request.setRecursive(false); request.setOffline(true); IMaven maven = MavenPlugin.getMaven(); MavenProject mavenProject = facade.getMavenProject(); MavenSession session = maven.createSession(request, mavenProject); MavenExecutionPlan executionPlan = maven.calculateExecutionPlan(session, mavenProject, Collections.singletonList("resources:copy-resources"), true, monitor); MojoExecution copyFilteredResourcesMojo = getExecution(executionPlan, "maven-resources-plugin"); if (copyFilteredResourcesMojo == null) return; Xpp3Dom originalConfig = copyFilteredResourcesMojo.getConfiguration(); Xpp3Dom configuration = Xpp3DomUtils.mergeXpp3Dom(new Xpp3Dom("configuration"), originalConfig); boolean parentHierarchyLoaded = false; try { parentHierarchyLoaded = loadParentHierarchy(facade, monitor); //Set resource directories to read setupResources(configuration, resources); //Force overwrite setValue(configuration, "overwrite", Boolean.TRUE); //Limit placeholder delimiters, otherwise, pages containing @ wouldn't be filtered correctly setupDelimiters(configuration); //Set output directory to the m2eclipse-wtp webresources directory setValue(configuration, "outputDirectory", targetFolder.toPortableString()); setValue(configuration, "escapeString", filteringConfiguration.getEscapeString()); setNonfilteredExtensions(configuration, filteringConfiguration.getNonfilteredExtensions()); //Setup filters setupFilters(configuration, filters); //Create a maven request + session request.setRecursive(false); request.setOffline(true); //Execute our hacked mojo copyFilteredResourcesMojo.setConfiguration(configuration); copyFilteredResourcesMojo.getMojoDescriptor().setGoal("copy-resources"); maven.execute(session, copyFilteredResourcesMojo, monitor); if (session.getResult().hasExceptions()) { MavenPluginActivator.getDefault().getMavenMarkerManager().addMarker(facade.getProject(), IMavenConstants.MARKER_CONFIGURATION_ID, "An error occurred while filtering resources", -1, IMarker.SEVERITY_ERROR); //move exceptions up to the original session, so they can be handled by the maven builder //XXX current exceptions refer to maven-resource-plugin (since that's what we used), we should probably // throw a new exception instead to indicate the problem(s) come(s) from web resource filtering for (Throwable t : session.getResult().getExceptions()) { getSession().getResult().addException(t); } } } finally { //Restore original configuration copyFilteredResourcesMojo.setConfiguration(originalConfig); if (parentHierarchyLoaded) { mavenProject.setParent(null); } } }
From source file:org.sonatype.maven.shell.commands.maven.MavenCommand.java
License:Open Source License
public Object execute(final CommandContext context) throws Exception { assert context != null; IO io = context.getIo();/*from w w w . jav a 2 s . com*/ Variables vars = context.getVariables(); if (version) { io.println(maven.getVersion()); return Result.SUCCESS; } // HACK: support --encrypt-master-password and --encrypt-password if (encryptMasterPassword != null || encryptPassword != null) { return doEncryptPassword(context); } System.setProperty(MavenSystem.MAVEN_HOME, vars.get(SHELL_HOME, File.class).getAbsolutePath()); MavenRuntimeConfiguration config = new MavenRuntimeConfiguration(); config.setBaseDirectory(vars.get(SHELL_USER_DIR, File.class)); if (file != null) { config.setPomFile(file); } if (profiles != null) { config.getProfiles().addAll(profiles); } if (quiet != null) { config.setQuiet(quiet); } if (debug != null) { config.setDebug(debug); } if (showVersion != null) { config.setShowVersion(showVersion); } if (props != null) { config.getProperties().putAll(props); } if (settingsFile != null) { config.setSettingsFile(settingsFile); } if (globalSettingsFile != null) { config.setGlobalSettingsFile(globalSettingsFile); } if (logFile != null) { config.setLogFile(logFile); } customize(config); MavenRuntime runtime = maven.create(config); MavenExecutionRequest request = runtime.create(); if (offline != null) { request.setOffline(offline); } if (goals != null) { request.setGoals(goals); } if (batch != null) { request.setInteractiveMode(!batch); } if (resumeFrom != null) { request.setResumeFrom(resumeFrom); } if (toolChainsFile != null) { request.setUserToolchainsFile(toolChainsFile); } if (showErrors != null) { request.setShowErrors(showErrors); } if (nonRecursive != null) { request.setRecursive(!nonRecursive); } if (updateSnapshots != null) { request.setUpdateSnapshots(updateSnapshots); } if (noSnapshotUpdates != null) { request.setNoSnapshotUpdates(noSnapshotUpdates); } if (selectedProjects != null) { request.setSelectedProjects(selectedProjects); } if (strictChecksums) { request.setGlobalChecksumPolicy(CHECKSUM_POLICY_FAIL); } if (laxChecksums) { request.setGlobalChecksumPolicy(CHECKSUM_POLICY_WARN); } if (failFast) { request.setReactorFailureBehavior(REACTOR_FAIL_FAST); } else if (failAtEnd) { request.setReactorFailureBehavior(REACTOR_FAIL_AT_END); } else if (failNever) { request.setReactorFailureBehavior(REACTOR_FAIL_NEVER); } if (alsoMake && !alsoMakeDependents) { request.setMakeBehavior(REACTOR_MAKE_UPSTREAM); } else if (!alsoMake && alsoMakeDependents) { request.setMakeBehavior(REACTOR_MAKE_DOWNSTREAM); } else if (alsoMake && alsoMakeDependents) { request.setMakeBehavior(REACTOR_MAKE_BOTH); } // Customize the plugin groups request.addPluginGroup("org.apache.maven.plugins"); request.addPluginGroup("org.codehaus.mojo"); request.addPluginGroup("com.sonatype.maven.plugins"); request.addPluginGroup("org.sonatype.maven.plugins"); // Setup output colorization StreamSet current = StreamJack.current(); StreamSet streams; if (color == null || color) { // Complain if the user asked for color and its not supported if (color != null && !io.getTerminal().isAnsiSupported()) { log.warn("ANSI color is not supported by the current terminal"); } streams = new StreamSet(current.in, new ColorizingStream(current.out), new ColorizingStream(current.err)); } else { streams = current; } config.setStreams(streams); StreamJack.register(streams); // Execute Maven int result = 0; try { result = runtime.execute(request); } finally { StreamJack.deregister(); // HACK: Not sure why, but we need to reset the terminal after some mvn builds io.getTerminal().reset(); } if (growl) { String cl = String.format("%s %s", getName(), Strings.join(context.getArguments(), " ")); if (result == 0) { growler.growl(Notifications.BUILD_PASSED, "BUILD SUCCESS", // TODO: i18n cl); } else { growler.growl(Notifications.BUILD_FAILED, "BUILD FAILURE", // TODO: i18n cl); } } return result; }