Example usage for org.apache.maven.project MavenProject setParent

List of usage examples for org.apache.maven.project MavenProject setParent

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject setParent.

Prototype

public void setParent(MavenProject parent) 

Source Link

Usage

From source file:com.liferay.ide.maven.core.MavenUtil.java

License:Open Source License

public static Plugin getPlugin(IMavenProjectFacade facade, final String pluginKey, IProgressMonitor monitor)
        throws CoreException {
    Plugin retval = null;/*w w w .j a  va 2 s . co m*/
    boolean loadedParent = false;
    final MavenProject mavenProject = facade.getMavenProject(monitor);

    if (mavenProject != null) {
        retval = mavenProject.getPlugin(pluginKey);
    }

    if (retval == null) {
        // look through all parents to find if the plugin has been declared

        MavenProject parent = mavenProject.getParent();

        if (parent == null) {
            try {
                if (loadParentHierarchy(facade, monitor)) {
                    loadedParent = true;
                }
            } catch (CoreException e) {
                LiferayMavenCore.logError("Error loading parent hierarchy", e);
            }
        }

        while (parent != null && retval == null) {
            retval = parent.getPlugin(pluginKey);

            parent = parent.getParent();
        }
    }

    if (loadedParent) {
        mavenProject.setParent(null);
    }

    return retval;
}

From source file:com.liferay.ide.maven.core.MavenUtil.java

License:Open Source License

public static boolean loadParentHierarchy(IMavenProjectFacade facade, IProgressMonitor monitor)
        throws CoreException {
    boolean loadedParent = false;
    MavenProject mavenProject = facade.getMavenProject(monitor);

    try {/*  w ww .  j av a  2  s.  co  m*/
        if (mavenProject.getModel().getParent() == null || mavenProject.getParent() != null) {
            // If the method is called without error, we can assume the project has been fully loaded
            // No need to continue.
            return false;
        }
    } catch (IllegalStateException e) {
        // The parent can not be loaded properly
    }

    while (mavenProject != null && mavenProject.getModel().getParent() != null) {
        if (monitor.isCanceled()) {
            break;
        }

        MavenProject parentProject = MavenPlugin.getMaven().resolveParentProject(mavenProject, monitor);

        if (parentProject != null) {
            mavenProject.setParent(parentProject);
            loadedParent = true;
        }

        mavenProject = parentProject;
    }

    return loadedParent;
}

From source file:com.liferay.ide.maven.core.ThemePluginBuildParticipant.java

License:Open Source License

protected IStatus executeThemeMojo(final IMavenProjectFacade facade, final IMavenExecutionContext context,
        final IProgressMonitor monitor) throws CoreException {
    IStatus retval = null;/* w  w  w.jav a  2 s  .c  o m*/

    final List<String> goals = Collections.singletonList(getGoal());

    final MavenProject mavenProject = facade.getMavenProject(monitor);
    final MavenExecutionPlan plan = maven.calculateExecutionPlan(mavenProject, goals, true, monitor);

    monitor.worked(10);

    final MojoExecution liferayMojoExecution = MavenUtil.getExecution(plan,
            ILiferayMavenConstants.LIFERAY_MAVEN_PLUGIN_ARTIFACT_ID);

    final Xpp3Dom originalConfig = liferayMojoExecution.getConfiguration();

    final Xpp3Dom config = Xpp3DomUtils.mergeXpp3Dom(new Xpp3Dom("configuration"), originalConfig); //$NON-NLS-1$

    configureExecution(facade, config);

    boolean parentHierarchyLoaded = false;

    try {
        parentHierarchyLoaded = MavenUtil.loadParentHierarchy(facade, monitor);

        monitor.worked(10);

        final ResolverConfiguration configuration = facade.getResolverConfiguration();
        configuration.setResolveWorkspaceProjects(true);

        liferayMojoExecution.setConfiguration(config);

        maven.execute(mavenProject, liferayMojoExecution, monitor);

        monitor.worked(50);

        List<Throwable> exceptions = context.getSession().getResult().getExceptions();

        if (exceptions.size() == 1) {
            retval = LiferayMavenCore.createErrorStatus(exceptions.get(0));
        } else if (exceptions.size() > 1) {
            List<IStatus> statuses = new ArrayList<IStatus>();

            for (Throwable t : exceptions) {
                statuses.add(LiferayMavenCore.createErrorStatus(t));
            }

            retval = LiferayMavenCore.createMultiStatus(IStatus.ERROR, statuses.toArray(new IStatus[0]));
        }

        retval = retval == null ? Status.OK_STATUS : retval;
    } catch (CoreException e) {
        retval = LiferayMavenCore.createErrorStatus(e);
    } finally {
        liferayMojoExecution.setConfiguration(originalConfig);

        if (parentHierarchyLoaded) {
            mavenProject.setParent(null);
        }
    }

    return retval;
}

From source file:com.monday_consulting.maven.plugins.fsm.util.resolver.MavenGetArtifactsResolver.java

License:Apache License

private MavenProject getMavenProjectViaRepository(final Module module, final ProjectBuilder projectBuilder)
        throws MojoFailureException {
    try {/*from   w  w w.  j  av  a  2  s.co m*/
        final ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
        request.setResolveDependencies(true);
        request.setRemoteRepositories(mavenProject.getRemoteArtifactRepositories());
        request.setRepositorySession(repoSession);

        final LocalRepositoryManager localRepositoryManager = repoSession.getLocalRepositoryManager();
        final File repoBasedir = localRepositoryManager.getRepository().getBasedir();

        // the module type artifact (war, jar, pom ...)
        final DefaultArtifact moduleArtifact = new DefaultArtifact(module.getGroupId(), module.getArtifactId(),
                module.getClassifier(), module.getType(), module.getVersion());
        final String pathForLocalArtifact = localRepositoryManager.getPathForLocalArtifact(moduleArtifact);
        final File moduleArtifactFile = new File(repoBasedir, pathForLocalArtifact);

        // the module pom artifact to build maven project
        final DefaultArtifact pomArtifact = new DefaultArtifact(module.getGroupId(), module.getArtifactId(),
                module.getClassifier(), "pom", module.getVersion());
        final String localArtifactPath = localRepositoryManager.getPathForLocalArtifact(pomArtifact);

        final File projectFile = new File(repoBasedir, localArtifactPath);

        MavenProject result;
        try {
            log.info("try to build maven project for " + module.getArtifactId() + " from local repository...");
            result = projectBuilder.build(projectFile, request).getProject();

            if (!moduleArtifactFile.exists()) {
                resolveArtifact(module, moduleArtifact);
            }
        } catch (ProjectBuildingException e) {
            log.info("failed... try to resolve " + module.getArtifactId() + " from remote repository...");
            final Artifact mavenArtifact = new org.apache.maven.artifact.DefaultArtifact(module.getGroupId(),
                    module.getArtifactId(), module.getVersion(), null, module.getType(), module.getClassifier(),
                    new DefaultArtifactHandler());
            result = projectBuilder.build(mavenArtifact, request).getProject();

            resolveArtifact(module, moduleArtifact);
        }

        if (result != null) {
            log.info("Dependency resolved: " + module.getArtifactId());
            result.getArtifact().setFile(moduleArtifactFile);
            result.setParent(mavenProject);
        } else {
            throw new MojoFailureException(
                    "No dependency for " + module.getArtifactId() + " found in local or remote repository");
        }

        return result;
    } catch (ProjectBuildingException e) {
        throw new MojoFailureException(
                "No dependency for " + module.getArtifactId() + "found in local or remote repository", e);
    }
}

From source file:io.sundr.maven.GenerateBomMojo.java

License:Apache License

/**
 * Returns the generated {@link org.apache.maven.project.MavenProject} to build.
 * This version of the project contains all the stuff needed for building (parents, profiles, properties etc).
 *
 * @param project The source {@link org.apache.maven.project.MavenProject}.
 * @param config  The {@link io.sundr.maven.BomConfig}.
 * @return The build {@link org.apache.maven.project.MavenProject}.
 *///from  ww w.  j a  v  a 2  s  .  c o  m
private static MavenProject toBuild(MavenProject project, BomConfig config) {
    File outputDir = new File(project.getBuild().getOutputDirectory());
    File bomDir = new File(outputDir, config.getArtifactId());
    File generatedBom = new File(bomDir, BOM_NAME);

    MavenProject toBuild = project.clone();
    //we want to avoid recursive "generate-bom".
    toBuild.setExecutionRoot(false);
    toBuild.setFile(generatedBom);
    toBuild.getModel().setPomFile(generatedBom);
    toBuild.setModelVersion(project.getModelVersion());

    toBuild.setArtifact(new DefaultArtifact(project.getGroupId(), config.getArtifactId(), project.getVersion(),
            project.getArtifact().getScope(), project.getArtifact().getType(),
            project.getArtifact().getClassifier(), project.getArtifact().getArtifactHandler()));

    toBuild.setParent(project.getParent());
    toBuild.getModel().setParent(project.getModel().getParent());

    toBuild.setGroupId(project.getGroupId());
    toBuild.setArtifactId(config.getArtifactId());
    toBuild.setVersion(project.getVersion());
    toBuild.setPackaging("pom");
    toBuild.setName(config.getName());
    toBuild.setDescription(config.getDescription());

    toBuild.setUrl(project.getUrl());
    toBuild.setLicenses(project.getLicenses());
    toBuild.setScm(project.getScm());
    toBuild.setDevelopers(project.getDevelopers());
    toBuild.setDistributionManagement(project.getDistributionManagement());
    toBuild.getModel().setProfiles(project.getModel().getProfiles());

    //We want to avoid having the generated stuff wiped.
    toBuild.getProperties().put("clean.skip", "true");
    toBuild.getModel().getBuild().setDirectory(bomDir.getAbsolutePath());
    toBuild.getModel().getBuild().setOutputDirectory(new File(bomDir, "target").getAbsolutePath());
    for (String key : config.getProperties().stringPropertyNames()) {
        toBuild.getProperties().put(key, config.getProperties().getProperty(key));
    }
    return toBuild;
}

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);//from ww  w .  j  av  a2  s .  c om
    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.eclipse.m2e.wtp.internal.filtering.ResourceFilteringBuildParticipant.java

License:Open Source License

/**
 * Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=356725. 
 * Loads the parent project hierarchy if needed.
 * @param facade/*from w  ww .ja v a2  s  .  c o  m*/
 * @param monitor
 * @return true if parent projects had to be loaded.
 * @throws CoreException
 */
private boolean loadParentHierarchy(IMavenProjectFacade facade, IProgressMonitor monitor) throws CoreException {
    boolean loadedParent = false;
    MavenProject mavenProject = facade.getMavenProject();
    try {
        if (mavenProject.getModel().getParent() == null || mavenProject.getParent() != null) {
            //If the method is called without error, we can assume the project has been fully loaded
            //No need to continue. 
            return false;
        }
    } catch (IllegalStateException e) {
        //The parent can not be loaded properly 
    }
    MavenExecutionRequest request = null;
    while (mavenProject != null && mavenProject.getModel().getParent() != null) {
        if (monitor.isCanceled()) {
            break;
        }
        if (request == null) {
            request = MavenPlugin.getMavenProjectRegistry().createExecutionRequest(facade, monitor);
        }
        MavenProject parentProject = MavenPlugin.getMaven().resolveParentProject(request, mavenProject,
                monitor);
        if (parentProject != null) {
            mavenProject.setParent(parentProject);
            loadedParent = true;
        }
        mavenProject = parentProject;
    }
    return loadedParent;
}

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);/*from   ww w .j  a  v  a2  s. 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.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.java

License:Open Source License

public void generateManifest(IMavenProjectFacade mavenFacade, IFile manifest, IProgressMonitor monitor)
        throws CoreException {

    MavenProject mavenProject = mavenFacade.getMavenProject();
    Set<Artifact> originalArtifacts = mavenProject.getArtifacts();
    boolean parentHierarchyLoaded = false;
    try {/* w w w  . ja  va 2 s  . c om*/
        markerManager.deleteMarkers(mavenFacade.getPom(), MavenArchiverConstants.MAVENARCHIVER_MARKER_ERROR);

        //Find the mojoExecution
        MavenSession session = getMavenSession(mavenFacade, monitor);

        parentHierarchyLoaded = loadParentHierarchy(mavenFacade, monitor);

        ClassLoader originalTCL = Thread.currentThread().getContextClassLoader();
        try {
            ClassRealm projectRealm = mavenProject.getClassRealm();
            if (projectRealm != null && projectRealm != originalTCL) {
                Thread.currentThread().setContextClassLoader(projectRealm);
            }
            MavenExecutionPlan executionPlan = maven.calculateExecutionPlan(session, mavenProject,
                    Collections.singletonList("package"), true, monitor);
            MojoExecution mojoExecution = getExecution(executionPlan, getExecutionKey());
            if (mojoExecution == null) {
                return;
            }

            //Get the target manifest file
            IFolder destinationFolder = (IFolder) manifest.getParent();
            M2EUtils.createFolder(destinationFolder, true, monitor);

            //Workspace project artifacts don't have a valid getFile(), so won't appear in the manifest
            //We need to workaround the issue by creating  fake files for such artifacts. 
            //We could also use a custom File implementation having "public boolean exists(){return true;}"
            mavenProject.setArtifacts(fixArtifactFileNames(mavenFacade));

            //Invoke the manifest generation API via reflection
            reflectManifestGeneration(mavenProject, mojoExecution, session,
                    new File(manifest.getLocation().toOSString()));
        } finally {
            Thread.currentThread().setContextClassLoader(originalTCL);
        }
    } catch (Exception ex) {
        markerManager.addErrorMarkers(mavenFacade.getPom(), MavenArchiverConstants.MAVENARCHIVER_MARKER_ERROR,
                ex);

    } finally {
        //Restore the project state
        mavenProject.setArtifacts(originalArtifacts);
        if (parentHierarchyLoaded) {
            mavenProject.setParent(null);
        }
    }

}

From source file:org.sonatype.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.java

License:Open Source License

/**
 * Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=356725. 
 * Loads the parent project hierarchy if needed.
 * @param facade// w  ww. j a  v  a2 s .  c o  m
 * @param monitor
 * @return true if parent projects had to be loaded.
 * @throws CoreException
 */
private boolean loadParentHierarchy(IMavenProjectFacade facade, IProgressMonitor monitor) throws CoreException {
    boolean loadedParent = false;
    MavenProject mavenProject = facade.getMavenProject();
    try {
        if (mavenProject.getModel().getParent() == null || mavenProject.getParent() != null) {
            //If the getParent() method is called without error,
            // we can assume the project has been fully loaded, no need to continue.
            return false;
        }
    } catch (IllegalStateException e) {
        //The parent can not be loaded properly 
    }
    MavenExecutionRequest request = null;
    while (mavenProject != null && mavenProject.getModel().getParent() != null) {
        if (monitor.isCanceled()) {
            break;
        }
        if (request == null) {
            request = projectManager.createExecutionRequest(facade, monitor);
        }
        MavenProject parentProject = maven.resolveParentProject(request, mavenProject, monitor);
        if (parentProject != null) {
            mavenProject.setParent(parentProject);
            loadedParent = true;
        }
        mavenProject = parentProject;
    }
    return loadedParent;
}