List of usage examples for org.apache.maven.model.building ModelSource getLocation
String getLocation();
From source file:com.google.devtools.build.workspace.maven.DefaultModelResolver.java
License:Open Source License
public Model getEffectiveModel(ModelSource modelSource, EventHandler handler) { DefaultModelBuildingRequest request = new DefaultModelBuildingRequest(); request.setModelResolver(this); request.setModelSource(modelSource); Model model;//from www . ja v a2 s .co m try { ModelBuildingResult result = modelBuilder.build(request); model = result.getEffectiveModel(); } catch (ModelBuildingException | IllegalArgumentException e) { // IllegalArg can be thrown if the parent POM cannot be resolved. handler.handle(Event.error( "Unable to resolve Maven model from " + modelSource.getLocation() + ": " + e.getMessage())); return null; } return model; }
From source file:com.google.devtools.build.workspace.maven.Resolver.java
License:Open Source License
/** * Resolves all dependencies from a given "model source," which could be either a URL or a local * file.// w ww . j a v a 2 s.c o m * @return the model. */ @Nullable public Model resolveEffectiveModel(ModelSource modelSource, Set<String> exclusions, Rule parent) { Model model = modelResolver.getEffectiveModel(modelSource, handler); if (model == null) { return null; } for (Repository repo : model.getRepositories()) { modelResolver.addRepository(repo); } for (Dependency dependency : model.getDependencies()) { if (!dependency.getScope().equals(COMPILE_SCOPE)) { continue; } if (dependency.isOptional()) { continue; } if (exclusions.contains(dependency.getGroupId() + ":" + dependency.getArtifactId())) { continue; } try { Rule artifactRule = new Rule(getArtifact(dependency), dependency.getExclusions()); HashSet<String> localDepExclusions = new HashSet<>(exclusions); localDepExclusions.addAll(artifactRule.getExclusions()); boolean isNewDependency = addArtifact(artifactRule, model.toString()); if (isNewDependency) { ModelSource depModelSource = modelResolver.resolveModel(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion()); if (depModelSource != null) { artifactRule.setRepository(depModelSource.getLocation(), handler); artifactRule.setSha1(downloadSha1(artifactRule)); resolveEffectiveModel(depModelSource, localDepExclusions, artifactRule); } else { handler.handle(Event.error("Could not get a model for " + dependency)); } } if (parent != null) { parent.addDependency(artifactRule); parent.getDependencies().addAll(artifactRule.getDependencies()); } else { addArtifact(artifactRule, modelSource.getLocation()); } } catch (UnresolvableModelException | InvalidArtifactCoordinateException e) { handler.handle(Event.error("Could not resolve dependency " + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ": " + e.getMessage())); } } return model; }
From source file:com.google.devtools.build.workspace.WorkspaceResolver.java
License:Open Source License
/** * Calculates transitive dependencies of the given //external package. *//* ww w . j a v a 2 s . co m*/ public void resolveTransitiveDependencies(Package externalPackage) { Location location = Location.fromFile(externalPackage.getFilename()); for (Target target : externalPackage.getTargets()) { // Targets are //external:foo. if (target.getTargetKind().startsWith("maven_jar ")) { RepositoryName repositoryName; try { repositoryName = RepositoryName.create("@" + target.getName()); } catch (LabelSyntaxException e) { handler.handle( Event.error(location, "Invalid repository name for " + target + ": " + e.getMessage())); return; } com.google.devtools.build.lib.packages.Rule workspaceRule = externalPackage .getRule(repositoryName.strippedName()); DefaultModelResolver modelResolver = resolver.getModelResolver(); AttributeMap attributeMap = AggregatingAttributeMapper.of(workspaceRule); Rule rule; try { rule = new Rule(Resolver.getArtifact(attributeMap.get("artifact", Type.STRING))); } catch (InvalidArtifactCoordinateException e) { handler.handle(Event.error(location, "Couldn't get attribute: " + e.getMessage())); return; } if (attributeMap.isAttributeValueExplicitlySpecified("repository")) { modelResolver.addUserRepository(attributeMap.get("repository", Type.STRING)); rule.setRepository(attributeMap.get("repository", Type.STRING), handler); } if (attributeMap.isAttributeValueExplicitlySpecified("sha1")) { rule.setSha1(attributeMap.get("sha1", Type.STRING)); } else { rule.setSha1(resolver.downloadSha1(rule)); } ModelSource modelSource; try { modelSource = modelResolver.resolveModel(rule.groupId(), rule.artifactId(), rule.version()); } catch (UnresolvableModelException e) { handler.handle(Event.error("Could not resolve model for " + target + ": " + e.getMessage())); continue; } resolver.addArtifact(rule, modelSource.getLocation()); resolver.resolveEffectiveModel(modelSource, Sets.<String>newHashSet(), rule); } else if (!target.getTargetKind().startsWith("bind") && !target.getTargetKind().startsWith("source ")) { handler.handle(Event.warn(location, "Cannot fetch transitive dependencies for " + target + " yet, skipping")); } } }
From source file:org.sonatype.maven.polyglot.PolyglotModelUtil.java
License:Open Source License
public static File getLocationFile(final Map<?, ?> options) { if (options != null) { Object src = options.get(ModelProcessor.SOURCE); if (src instanceof URL) { return new File(((URL) src).getFile()); } else if (src != null) { ModelSource sm = (ModelSource) src; return new File(sm.getLocation()); }/*from ww w . j a v a2s . c o m*/ } return null; }
From source file:org.sonatype.maven.polyglot.TeslaModelProcessor.java
License:Open Source License
@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Model read(final Reader input, final Map<String, ?> options) throws IOException, ModelParseException { assert manager != null; ModelSource source = (ModelSource) options.get(ModelProcessor.SOURCE); if (("" + source).contains(".polyglot.")) { log.debug(source.getLocation()); File pom = new File(source.getLocation()); source = new FileModelSource(new File(pom.getPath().replaceFirst("[.]polyglot[.]", ""))); ((Map) options).put(ModelProcessor.SOURCE, source); ModelReader reader = manager.getReaderFor(options); Model model = reader.read(source.getInputStream(), options); MavenXpp3Writer xmlWriter = new MavenXpp3Writer(); StringWriter xml = new StringWriter(); xmlWriter.write(xml, model);// w w w. ja v a 2s .c o m FileUtils.fileWrite(pom, xml.toString()); // dump pom if filename is given via the pom properties String dump = model.getProperties().getProperty("polyglot.dump.pom"); if (dump == null) { // just nice to dump the pom.xml via commandline switch dump = System.getProperty("polyglot.dump.pom"); } if (dump != null) { File dumpPom = new File(pom.getParentFile(), dump); if (!dumpPom.exists() || !FileUtils.fileRead(dumpPom).equals(xml.toString())) { dumpPom.setWritable(true); FileUtils.fileWrite(dumpPom, xml.toString()); if ("true".equals(model.getProperties().getProperty("polyglot.dump.readonly"))) { dumpPom.setReadOnly(); } } } model.setPomFile(pom); return model; } else { ModelReader reader = manager.getReaderFor(options); return reader.read(input, options); } }