List of usage examples for org.apache.maven.project MavenProject setParent
public void setParent(MavenProject parent)
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; }