Example usage for org.apache.maven.execution MavenExecutionRequest setRecursive

List of usage examples for org.apache.maven.execution MavenExecutionRequest setRecursive

Introduction

In this page you can find the example usage for org.apache.maven.execution MavenExecutionRequest setRecursive.

Prototype

MavenExecutionRequest setRecursive(boolean recursive);

Source Link

Usage

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;
}