Search in sources :

Example 1 with Model

use of org.apache.maven.model.Model in project che by eclipse.

the class MavenModelUtil method convertToMavenModel.

public static Model convertToMavenModel(MavenModel model) {
    Model result = new Model();
    result.setArtifactId(model.getMavenKey().getArtifactId());
    result.setGroupId(model.getMavenKey().getGroupId());
    result.setVersion(model.getMavenKey().getVersion());
    result.setPackaging(model.getPackaging());
    result.setName(model.getName());
    if (model.getParent() != null) {
        Parent parent = new Parent();
        MavenKey parentKey = model.getParent().getMavenKey();
        parent.setArtifactId(parentKey.getArtifactId());
        parent.setGroupId(parentKey.getGroupId());
        parent.setVersion(parentKey.getVersion());
        parent.setRelativePath(model.getParent().getRelativePath());
        result.setParent(parent);
    }
    result.setProperties(model.getProperties());
    result.setModules(model.getModules());
    result.setBuild(new Build());
    MavenBuild modelBuild = model.getBuild();
    convertToMavenBuildBase(modelBuild, result.getBuild());
    result.getBuild().setSourceDirectory(modelBuild.getSources().get(0));
    result.getBuild().setTestSourceDirectory(modelBuild.getTestSources().get(0));
    result.setProfiles(convertToMavenProfiles(model.getProfiles()));
    return result;
}
Also used : MavenBuild(org.eclipse.che.maven.data.MavenBuild) MavenKey(org.eclipse.che.maven.data.MavenKey) Parent(org.apache.maven.model.Parent) MavenParent(org.eclipse.che.maven.data.MavenParent) MavenBuild(org.eclipse.che.maven.data.MavenBuild) Build(org.apache.maven.model.Build) MavenModel(org.eclipse.che.maven.data.MavenModel) Model(org.apache.maven.model.Model)

Example 2 with Model

use of org.apache.maven.model.Model in project che by eclipse.

the class EffectivePomWriter method writeEffectivePom.

/**
     * method from org.apache.maven.plugins.help.EffectivePomMojo
     * Method for writing the effective pom informations of the current build.
     *
     * @param project the project of the current build, not null.
     * @param writer the XML writer , not null, not null.
     * @throws MojoExecutionException if any
     */
private static void writeEffectivePom(MavenProject project, XMLWriter writer) throws MojoExecutionException {
    Model pom = project.getModel();
    cleanModel(pom);
    String effectivePom;
    StringWriter sWriter = new StringWriter();
    MavenXpp3Writer pomWriter = new MavenXpp3Writer();
    try {
        pomWriter.write(sWriter, pom);
    } catch (IOException e) {
        throw new MojoExecutionException("Cannot serialize POM to XML.", e);
    }
    effectivePom = addMavenNamespace(sWriter.toString(), true);
    writeComment(writer, "Effective POM for project \'" + project.getId() + "\'");
    writer.writeMarkup(effectivePom);
}
Also used : StringWriter(java.io.StringWriter) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) Model(org.apache.maven.model.Model) IOException(java.io.IOException) MavenXpp3Writer(org.apache.maven.model.io.xpp3.MavenXpp3Writer)

Example 3 with Model

use of org.apache.maven.model.Model in project buck by facebook.

the class Resolver method getDependenciesFromPom.

private ImmutableList<Dependency> getDependenciesFromPom(Model model) {
    return model.getDependencies().stream().map(dep -> {
        ArtifactType stereotype = session.getArtifactTypeRegistry().get(dep.getType());
        if (stereotype == null) {
            stereotype = new DefaultArtifactType(dep.getType());
        }
        Map<String, String> props = null;
        boolean system = dep.getSystemPath() != null && dep.getSystemPath().length() > 0;
        if (system) {
            props = ImmutableMap.of(ArtifactProperties.LOCAL_PATH, dep.getSystemPath());
        }
        @SuppressWarnings("PMD.PrematureDeclaration") DefaultArtifact artifact = new DefaultArtifact(dep.getGroupId(), dep.getArtifactId(), dep.getClassifier(), null, dep.getVersion(), props, stereotype);
        ImmutableList<Exclusion> exclusions = FluentIterable.from(dep.getExclusions()).transform(input -> {
            String group = input.getGroupId();
            String artifact1 = input.getArtifactId();
            group = (group == null || group.length() == 0) ? "*" : group;
            artifact1 = (artifact1 == null || artifact1.length() == 0) ? "*" : artifact1;
            return new Exclusion(group, artifact1, "*", "*");
        }).toList();
        return new Dependency(artifact, dep.getScope(), dep.isOptional(), exclusions);
    }).collect(MoreCollectors.toImmutableList());
}
Also used : ServiceLocator(org.eclipse.aether.spi.locator.ServiceLocator) STGroupString(org.stringtemplate.v4.STGroupString) DefaultDependencyManagementInjector(org.apache.maven.model.management.DefaultDependencyManagementInjector) SortedSet(java.util.SortedSet) DependencyFilterUtils(org.eclipse.aether.util.filter.DependencyFilterUtils) Version(org.eclipse.aether.version.Version) URL(java.net.URL) TEST(org.eclipse.aether.util.artifact.JavaScopes.TEST) DefaultModelBuilderFactory(org.apache.maven.model.building.DefaultModelBuilderFactory) ArtifactDescriptorException(org.eclipse.aether.resolution.ArtifactDescriptorException) Matcher(java.util.regex.Matcher) ModelBuilder(org.apache.maven.model.building.ModelBuilder) FluentIterable(com.google.common.collect.FluentIterable) DefaultProfileSelector(org.apache.maven.model.profile.DefaultProfileSelector) SubArtifact(org.eclipse.aether.util.artifact.SubArtifact) Map(java.util.Map) DefaultArtifactType(org.eclipse.aether.artifact.DefaultArtifactType) Path(java.nio.file.Path) ImmutableSetMultimap(com.google.common.collect.ImmutableSetMultimap) DefaultDependencyManagementImporter(org.apache.maven.model.composition.DefaultDependencyManagementImporter) LocalRepository(org.eclipse.aether.repository.LocalRepository) Function(com.google.common.base.Function) ImmutableMap(com.google.common.collect.ImmutableMap) RepositoryPolicy(org.eclipse.aether.repository.RepositoryPolicy) Collection(java.util.Collection) Artifact(org.eclipse.aether.artifact.Artifact) Executors(java.util.concurrent.Executors) Objects(java.util.Objects) CmdLineException(org.kohsuke.args4j.CmdLineException) List(java.util.List) ModelBuildingResult(org.apache.maven.model.building.ModelBuildingResult) ST(org.stringtemplate.v4.ST) ArtifactRequest(org.eclipse.aether.resolution.ArtifactRequest) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) ArtifactDescriptorResult(org.eclipse.aether.resolution.ArtifactDescriptorResult) DependencyResult(org.eclipse.aether.resolution.DependencyResult) ListeningExecutorService(com.google.common.util.concurrent.ListeningExecutorService) Model(org.apache.maven.model.Model) RepositorySystem(org.eclipse.aether.RepositorySystem) DependencyFilter(org.eclipse.aether.graph.DependencyFilter) MoreExecutors(com.google.common.util.concurrent.MoreExecutors) ArtifactDescriptorRequest(org.eclipse.aether.resolution.ArtifactDescriptorRequest) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) VersionScheme(org.eclipse.aether.version.VersionScheme) ArtifactProperties(org.eclipse.aether.artifact.ArtifactProperties) Dependency(org.eclipse.aether.graph.Dependency) JavaScopes(org.eclipse.aether.util.artifact.JavaScopes) MutableDirectedGraph(com.facebook.buck.graph.MutableDirectedGraph) GenericVersionScheme(org.eclipse.aether.util.version.GenericVersionScheme) Callable(java.util.concurrent.Callable) TraversableGraph(com.facebook.buck.graph.TraversableGraph) RepositorySystemSession(org.eclipse.aether.RepositorySystemSession) TreeSet(java.util.TreeSet) ArtifactType(org.eclipse.aether.artifact.ArtifactType) ImmutableList(com.google.common.collect.ImmutableList) ImmutableSortedMap(com.google.common.collect.ImmutableSortedMap) Nullable(javax.annotation.Nullable) MoreCollectors(com.facebook.buck.util.MoreCollectors) ArtifactResolutionException(org.eclipse.aether.resolution.ArtifactResolutionException) ImmutableSortedSet(com.google.common.collect.ImmutableSortedSet) CollectRequest(org.eclipse.aether.collection.CollectRequest) Resources(com.google.common.io.Resources) DefaultPluginConfigurationExpander(org.apache.maven.model.plugin.DefaultPluginConfigurationExpander) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Files(java.nio.file.Files) UTF_8(java.nio.charset.StandardCharsets.UTF_8) ModelBuildingException(org.apache.maven.model.building.ModelBuildingException) MostExecutors(com.facebook.buck.util.concurrent.MostExecutors) MavenRepositorySystemUtils(org.apache.maven.repository.internal.MavenRepositorySystemUtils) IOException(java.io.IOException) ArtifactResult(org.eclipse.aether.resolution.ArtifactResult) DependencyRequest(org.eclipse.aether.resolution.DependencyRequest) Maps(com.google.common.collect.Maps) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) InvalidVersionSpecificationException(org.eclipse.aether.version.InvalidVersionSpecificationException) ExecutionException(java.util.concurrent.ExecutionException) MorePaths(com.facebook.buck.io.MorePaths) RemoteRepository(org.eclipse.aether.repository.RemoteRepository) Futures(com.google.common.util.concurrent.Futures) Ordering(com.google.common.collect.Ordering) RepositoryException(org.eclipse.aether.RepositoryException) Paths(java.nio.file.Paths) DefaultPluginManagementInjector(org.apache.maven.model.management.DefaultPluginManagementInjector) DefaultModelBuildingRequest(org.apache.maven.model.building.DefaultModelBuildingRequest) Exclusion(org.eclipse.aether.graph.Exclusion) Preconditions(com.google.common.base.Preconditions) VisibleForTesting(com.google.common.annotations.VisibleForTesting) DefaultArtifactType(org.eclipse.aether.artifact.DefaultArtifactType) ArtifactType(org.eclipse.aether.artifact.ArtifactType) ImmutableList(com.google.common.collect.ImmutableList) Exclusion(org.eclipse.aether.graph.Exclusion) DefaultArtifactType(org.eclipse.aether.artifact.DefaultArtifactType) STGroupString(org.stringtemplate.v4.STGroupString) Dependency(org.eclipse.aether.graph.Dependency) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) ImmutableSortedMap(com.google.common.collect.ImmutableSortedMap) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact)

Example 4 with Model

use of org.apache.maven.model.Model in project buck by facebook.

the class Resolver method resolve.

public void resolve(Collection<String> artifacts) throws RepositoryException, ExecutionException, InterruptedException, IOException {
    ImmutableList.Builder<RemoteRepository> repoBuilder = ImmutableList.builder();
    ImmutableMap.Builder<String, Dependency> dependencyBuilder = ImmutableMap.builder();
    repoBuilder.addAll(repos);
    for (String artifact : artifacts) {
        if (artifact.endsWith(".pom")) {
            Model model = loadPomModel(Paths.get(artifact));
            repoBuilder.addAll(getReposFromPom(model));
            for (Dependency dep : getDependenciesFromPom(model)) {
                dependencyBuilder.put(buildKey(dep.getArtifact()), dep);
            }
        } else {
            Dependency dep = getDependencyFromString(artifact);
            dependencyBuilder.put(buildKey(dep.getArtifact()), dep);
        }
    }
    repos = repoBuilder.build();
    ImmutableMap<String, Dependency> specifiedDependencies = dependencyBuilder.build();
    ImmutableMap<String, Artifact> knownDeps = getRunTimeTransitiveDeps(specifiedDependencies.values());
    // We now have the complete set of dependencies. Build the graph of dependencies. We'd like
    // aether to do this for us, but it doesn't preserve the complete dependency information we need
    // to accurately construct build files.
    final MutableDirectedGraph<Artifact> graph = buildDependencyGraph(knownDeps);
    // Now we have the graph, grab the sources and jars for each dependency, as well as the relevant
    // checksums (which are download by default. Yay!)
    ImmutableSetMultimap<Path, Prebuilt> downloadedArtifacts = downloadArtifacts(graph, specifiedDependencies);
    createBuckFiles(downloadedArtifacts);
}
Also used : Path(java.nio.file.Path) ImmutableList(com.google.common.collect.ImmutableList) RemoteRepository(org.eclipse.aether.repository.RemoteRepository) STGroupString(org.stringtemplate.v4.STGroupString) Dependency(org.eclipse.aether.graph.Dependency) ImmutableMap(com.google.common.collect.ImmutableMap) SubArtifact(org.eclipse.aether.util.artifact.SubArtifact) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Model(org.apache.maven.model.Model)

Example 5 with Model

use of org.apache.maven.model.Model in project buck by facebook.

the class Pom method constructModel.

private Model constructModel() {
    File file = path.toFile();
    Model model = new Model();
    model.setModelVersion(POM_MODEL_VERSION);
    if (publishable.getPomTemplate().isPresent()) {
        model = constructModel(pathResolver.getAbsolutePath(publishable.getPomTemplate().get()).toFile(), model);
    }
    if (file.isFile()) {
        model = constructModel(file, model);
    }
    return model;
}
Also used : Model(org.apache.maven.model.Model) File(java.io.File)

Aggregations

Model (org.apache.maven.model.Model)117 MavenProject (org.apache.maven.project.MavenProject)57 File (java.io.File)40 Assembly (org.apache.maven.plugins.assembly.model.Assembly)21 ConsoleLogger (org.codehaus.plexus.logging.console.ConsoleLogger)20 IOException (java.io.IOException)19 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)19 EasyMockSupport (org.easymock.classextension.EasyMockSupport)14 MavenXpp3Reader (org.apache.maven.model.io.xpp3.MavenXpp3Reader)12 DependencySet (org.apache.maven.plugins.assembly.model.DependencySet)11 FileSet (org.apache.maven.plugins.assembly.model.FileSet)11 ArtifactMock (org.apache.maven.plugins.assembly.archive.task.testutils.ArtifactMock)10 XmlPullParserException (org.codehaus.plexus.util.xml.pull.XmlPullParserException)10 Reader (java.io.Reader)7 StringReader (java.io.StringReader)7 StringWriter (java.io.StringWriter)7 Properties (java.util.Properties)7 Artifact (org.apache.maven.artifact.Artifact)7 Build (org.apache.maven.model.Build)7 MockAndControlForAddDependencySetsTask (org.apache.maven.plugins.assembly.archive.task.testutils.MockAndControlForAddDependencySetsTask)7