@Override public boolean install() { if (!isInstalled()) { MavenModelResource pom = getModelResource(); if (!pom.createNewFile()) throw new IllegalStateException("Could not create POM file."); pom.setContents(createDefaultPOM()); } return isInstalled(); }
public boolean executeMaven(final String[] selected) { // return executeMaven(new NullOutputStream(), selected); return executeMaven(System.out, selected); }
public boolean executeMavenEmbedded(final String[] parms) { return executeMavenEmbedded(System.out, System.err, parms); }
try DirectoryResource directory = getFaceted().getRoot().reify(DirectoryResource.class); if (directory == null) throw new IllegalStateException("Cannot execute maven build on resources that are not File-based."); int returnValue = NativeSystemCall.execFromPath(getMvnCommand(), params, out, directory); if (returnValue == 0) return true; else return executeMavenEmbedded(params); return executeMavenEmbedded(params);
@Override public BuildResult getEffectiveModelBuildResult() { BuildResultBuilder resultBuilder = BuildResultBuilder.create(); MavenFacetImpl mvn = getFaceted().getFacet(MavenFacetImpl.class); resultBuilder.status(mvn.isModelValid()); try { ModelBuildingResult result = mvn.getModelBuildingResult(); if (!result.getProblems().isEmpty()) { String errorMessage = new ModelBuildingException(result).getMessage(); resultBuilder.addMessage(BuildMessage.Severity.ERROR, errorMessage); } } catch (ModelBuildingException e) { resultBuilder.addMessage(BuildMessage.Severity.ERROR, e.getMessage()); } return resultBuilder.build(); }
@Override public Map<String, String> getProperties() { Map<String, String> result = new HashMap<>(); try { Properties properties = getEffectiveModel().getProperties(); for (Entry<Object, Object> o : properties.entrySet()) { result.put((String) o.getKey(), (String) o.getValue()); } } catch (Exception e) { log.log(Level.WARNING, "Failed to resolve properties in [" + getModelResource().getFullyQualifiedName() + "]."); log.log(Level.FINE, "Failed to resolve properties in Project [" + getModelResource().getFullyQualifiedName() + "].", e); } return result; }
/** * POM manipulation methods */ public synchronized ProjectBuildingResult getProjectBuildingResult() throws ProjectBuildingException { return BUILD_MANAGER.getProjectBuildingResult(getModelResource()); }
CliRequest cliRequest = createCliRequest(params, getFaceted().getRoot().getFullyQualifiedName()); int returnCode = new MavenCli().doMain(cliRequest); return returnCode == 0;
@Override public List<Dependency> getEffectiveDependencies() { List<Dependency> result = new ArrayList<>(); MavenFacetImpl maven = getFaceted().getFacet(MavenFacetImpl.class); try { ProjectBuildingResult projectBuildingResult = maven.getProjectBuildingResult(); DependencyResolutionResult dependencyResolutionResult = projectBuildingResult.getDependencyResolutionResult(); List<Dependency> deps = MavenDependencyAdapter.fromAetherList(dependencyResolutionResult.getDependencies()); for (Dependency dependency : deps) { result.add(resolveProperties(dependency)); } } catch (Exception e) { log.log(Level.SEVERE, "Could not resolve managed dependencies in project [" + maven.getModelResource().getFullyQualifiedName() + "]. ", e); } return result; }
public boolean executeMavenEmbedded(final PrintStream out, final PrintStream err, String[] arguments) { List<String> list = new ArrayList<>(); // FORGE-1912: Maven settings are not being set in embedded maven if (System.getProperty(MavenContainer.ALT_USER_SETTINGS_XML_LOCATION) != null) { list.add("-s"); list.add(System.getProperty(MavenContainer.ALT_USER_SETTINGS_XML_LOCATION)); } else if (System.getProperty(MavenContainer.ALT_GLOBAL_SETTINGS_XML_LOCATION) != null) { list.add("-s"); list.add(System.getProperty(MavenContainer.ALT_GLOBAL_SETTINGS_XML_LOCATION)); } if (arguments != null) { list.addAll(Arrays.asList(arguments)); } return doExecuteMavenEmbedded(out, err, list); }
@Override public BuildResult getBuildResult() { MavenFacetImpl mvn = getFaceted().getFacet(MavenFacetImpl.class); return mvn.getEffectiveModelBuildResult(); } }
@Override public MavenModelResource getModelResource() { return getFaceted().getRoot().getChild("pom.xml").reify(MavenModelResource.class); }
@Override public boolean isModelValid() { boolean valid = true; try { List<ModelProblem> problems = getModelBuildingResult().getProblems(); for (ModelProblem problem : problems) { // It is valid only if all messages are just warnings valid &= Severity.WARNING.equals(problem.getSeverity()); } } catch (ModelBuildingException mbe) { valid = false; } return valid; }
@Override public String resolveProperties(String input) { String result = input; try { if (input != null) { Properties properties = getEffectiveModel().getProperties(); for (Entry<Object, Object> e : properties.entrySet()) { String key = "\\$\\{" + e.getKey().toString() + "\\}"; Object value = e.getValue(); result = result.replaceAll(key, value.toString()); } } } catch (Exception e) { log.log(Level.WARNING, "Failed to resolve properties in [" + getModelResource().getFullyQualifiedName() + "] for input value [" + input + "]."); log.log(Level.FINE, "Failed to resolve properties in Project [" + getModelResource().getFullyQualifiedName() + "].", e); } return result; }
@Override public Model getModel() { return getModelResource().getCurrentModel(); }
@Override public boolean isInstalled() { MavenModelResource pom = getModelResource(); return pom != null && pom.exists(); }
@Override public boolean executeMavenEmbedded(final List<String> parameters) { return executeMavenEmbedded(parameters.toArray(new String[parameters.size()])); }
@Override public boolean executeMaven(final List<String> parameters) { return executeMaven(parameters.toArray(new String[parameters.size()])); }
private synchronized ModelBuildingResult getModelBuildingResult() throws ModelBuildingException { return BUILD_MANAGER.getModelBuildingResult(getModelResource()); }
@Override public boolean executeMavenEmbedded(List<String> parameters, PrintStream out, PrintStream err) { return executeMavenEmbedded(out, err, parameters.toArray(new String[parameters.size()])); }