Search in sources :

Example 41 with DefaultArtifact

use of org.eclipse.aether.artifact.DefaultArtifact in project wildfly-swarm by wildfly-swarm.

the class ExtraArtifactsHandler method createNode.

private DependencyNode createNode(DependencyNode n, Optional<String> extension, Optional<String> classifier) {
    Artifact original = n.getArtifact();
    Artifact withExtension = new DefaultArtifact(original.getGroupId(), original.getArtifactId(), classifier.orElse(original.getClassifier()), extension.orElse(original.getExtension()), original.getVersion(), original.getProperties(), (File) null);
    DefaultDependencyNode nodeWithClassifier = new DefaultDependencyNode(new Dependency(withExtension, "system"));
    return nodeWithClassifier;
}
Also used : DefaultDependencyNode(org.eclipse.aether.graph.DefaultDependencyNode) Dependency(org.eclipse.aether.graph.Dependency) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact)

Example 42 with DefaultArtifact

use of org.eclipse.aether.artifact.DefaultArtifact in project wildfly-swarm by wildfly-swarm.

the class MavenArtifactResolvingHelper method resolve.

@Override
public ArtifactSpec resolve(ArtifactSpec spec) {
    if (spec.file == null) {
        final DefaultArtifact artifact = new DefaultArtifact(spec.groupId(), spec.artifactId(), spec.classifier(), spec.type(), spec.version());
        final LocalArtifactResult localResult = this.session.getLocalRepositoryManager().find(this.session, new LocalArtifactRequest(artifact, this.remoteRepositories, null));
        if (localResult.isAvailable()) {
            spec.file = localResult.getFile();
        } else {
            try {
                final ArtifactResult result = resolver.resolveArtifact(this.session, new ArtifactRequest(artifact, this.remoteRepositories, null));
                if (result.isResolved()) {
                    spec.file = result.getArtifact().getFile();
                }
            } catch (ArtifactResolutionException e) {
                e.printStackTrace();
            }
        }
    }
    return spec.file != null ? spec : null;
}
Also used : ArtifactResolutionException(org.eclipse.aether.resolution.ArtifactResolutionException) LocalArtifactRequest(org.eclipse.aether.repository.LocalArtifactRequest) ArtifactRequest(org.eclipse.aether.resolution.ArtifactRequest) LocalArtifactResult(org.eclipse.aether.repository.LocalArtifactResult) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) LocalArtifactRequest(org.eclipse.aether.repository.LocalArtifactRequest) LocalArtifactResult(org.eclipse.aether.repository.LocalArtifactResult) ArtifactResult(org.eclipse.aether.resolution.ArtifactResult)

Example 43 with DefaultArtifact

use of org.eclipse.aether.artifact.DefaultArtifact in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudApiMavenService method getBomVersions.

/**
 * Returns the available Google Cloud Java client library BOM versions from Maven Central.
 *
 * @return returns the {@link Version versions} of the BOMs
 */
List<Version> getBomVersions() {
    Artifact artifact = new DefaultArtifact(toBomCoordinates(GOOGLE_CLOUD_JAVA_BOM_ALL_VERSIONS_CONSTRAINT));
    VersionRangeRequest rangeRequest = new VersionRangeRequest();
    rangeRequest.setArtifact(artifact);
    rangeRequest.addRepository(MAVEN_CENTRAL_REPOSITORY);
    try {
        VersionRangeResult result = SYSTEM.resolveVersionRange(SESSION, rangeRequest);
        return result.getVersions();
    } catch (VersionRangeResolutionException e) {
        logger.warn("Error fetching available BOM versions from Maven Central", e);
        return ImmutableList.of();
    }
}
Also used : VersionRangeResult(org.eclipse.aether.resolution.VersionRangeResult) VersionRangeRequest(org.eclipse.aether.resolution.VersionRangeRequest) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) VersionRangeResolutionException(org.eclipse.aether.resolution.VersionRangeResolutionException)

Example 44 with DefaultArtifact

use of org.eclipse.aether.artifact.DefaultArtifact in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudApiMavenService method getManagedDependencyVersion.

/**
 * Finds the version of the passed in {@link CloudLibraryClientMavenCoordinates} that is managed
 * by the given BOM version.
 *
 * @param libraryMavenCoordinates the maven coordinates of the {@link CloudLibrary} for which we
 *     are finding the version
 * @param bomVersion the version of the BOM from which to fetch the library version
 * @return the optional version of the library found in the given BOM
 */
Optional<String> getManagedDependencyVersion(CloudLibraryClientMavenCoordinates libraryMavenCoordinates, String bomVersion) {
    Artifact bomArtifact = new DefaultArtifact(toBomCoordinates(bomVersion));
    ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
    request.setArtifact(bomArtifact);
    request.addRepository(MAVEN_CENTRAL_REPOSITORY);
    try {
        ArtifactDescriptorResult result = SYSTEM.readArtifactDescriptor(SESSION, request);
        return result.getManagedDependencies().stream().filter(dependency -> {
            Artifact artifact = dependency.getArtifact();
            String coordinatesFromBom = toFormattedMavenCoordinates(libraryMavenCoordinates.getGroupId(), libraryMavenCoordinates.getArtifactId());
            String libraryCoordinates = toFormattedMavenCoordinates(artifact.getGroupId(), artifact.getArtifactId());
            return coordinatesFromBom.equalsIgnoreCase(libraryCoordinates);
        }).findFirst().map(dependency -> dependency.getArtifact().getVersion());
    } catch (ArtifactDescriptorException e) {
        logger.warn("Error fetching version of client library from bom version " + bomVersion);
        return Optional.empty();
    }
}
Also used : ArtifactDescriptorResult(org.eclipse.aether.resolution.ArtifactDescriptorResult) ArtifactDescriptorException(org.eclipse.aether.resolution.ArtifactDescriptorException) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) ArtifactDescriptorRequest(org.eclipse.aether.resolution.ArtifactDescriptorRequest)

Example 45 with DefaultArtifact

use of org.eclipse.aether.artifact.DefaultArtifact in project revapi by revapi.

the class Main method run.

@SuppressWarnings("ConstantConditions")
private static void run(File cacheDir, String[] extensionGAVs, List<FileArchive> oldArchives, List<FileArchive> oldSupplementaryArchives, List<FileArchive> newArchives, List<FileArchive> newSupplementaryArchives, String[] configFiles, Map<String, String> additionalConfig) throws Exception {
    ProjectModule.Builder bld = ProjectModule.build();
    bld.localRepository(cacheDir);
    if (extensionGAVs != null) {
        for (String gav : extensionGAVs) {
            bld.addDependency(gav);
        }
    }
    Properties libraryVersionsProps = new Properties();
    libraryVersionsProps.load(Main.class.getResourceAsStream("/library.versions"));
    Set<Artifact> globalArtifacts = libraryVersionsProps.stringPropertyNames().stream().map(p -> {
        String gav = p + ':' + libraryVersionsProps.get(p);
        return new DefaultArtifact(gav);
    }).collect(toSet());
    bld.moduleSpecController(new ModuleSpecController() {

        private boolean override;

        private String currentModuleName;

        @Override
        public void start(String moduleName) {
            currentModuleName = moduleName;
        }

        // TODO add warnings when the deps depend on another revapi version than the one bundled...
        @Override
        public DependencySpec modifyDependency(String dependencyName, DependencySpec original) {
            boolean overrideThis = false;
            Artifact a = new DefaultArtifact(dependencyName);
            for (Artifact ga : globalArtifacts) {
                if (ga.getGroupId().equals(a.getGroupId()) && ga.getArtifactId().equals(a.getArtifactId()) && !ga.getVersion().equals(a.getVersion())) {
                    LOG.warn("Detected version conflict in dependencies of extension " + currentModuleName + ". The extension depends on " + a + " while the CLI has " + ga + " on global" + " classpath. This will likely cause problems.");
                }
            }
            override = override || overrideThis;
            return overrideThis ? null : original;
        }

        @Override
        public void modify(ModuleSpec.Builder bld) {
            if (override) {
                Set<String> revapiPaths = new HashSet<>(Arrays.asList("org/revapi", "org/revapi/configuration", "org/revapi/query", "org/revapi/simple"));
                bld.addDependency(DependencySpec.createSystemDependencySpec(revapiPaths));
                override = false;
            }
        }

        @Override
        public void end(String moduleName) {
            currentModuleName = null;
        }
    });
    LOG.info("Downloading extensions");
    Module project = bld.create();
    Revapi revapi = Revapi.builder().withAllExtensionsFrom(project.getClassLoader()).withAllExtensionsFromThreadContextClassLoader().build();
    AnalysisContext.Builder ctxBld = AnalysisContext.builder(revapi).withOldAPI(API.of(oldArchives).supportedBy(oldSupplementaryArchives).build()).withNewAPI(API.of(newArchives).supportedBy(newSupplementaryArchives).build());
    if (configFiles != null) {
        for (String cf : configFiles) {
            File f = new File(cf);
            checkCanRead(f, "Configuration file");
            try (FileInputStream is = new FileInputStream(f)) {
                ctxBld.mergeConfigurationFromJSONStream(is);
            }
        }
    }
    for (Map.Entry<String, String> e : additionalConfig.entrySet()) {
        String[] keyPath = e.getKey().split("\\.");
        ModelNode additionalNode = new ModelNode();
        ModelNode key = additionalNode.get(keyPath);
        String value = e.getValue();
        if (value.startsWith("[") && value.endsWith("]")) {
            String[] values = value.substring(1, value.length() - 1).split("\\s*,\\s*");
            for (String v : values) {
                key.add(v);
            }
        } else {
            key.set(value);
        }
        ctxBld.mergeConfiguration(additionalNode);
    }
    LOG.info("Starting analysis");
    try (AnalysisResult result = revapi.analyze(ctxBld.build())) {
        if (!result.isSuccess()) {
            throw result.getFailure();
        }
    }
}
Also used : Arrays(java.util.Arrays) FileArchive(org.revapi.simple.FileArchive) MavenBootstrap(pw.krejci.modules.maven.MavenBootstrap) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) DependencySpec(org.jboss.modules.DependencySpec) ModuleSpec(org.jboss.modules.ModuleSpec) Collections.singletonList(java.util.Collections.singletonList) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) ArtifactResolver(org.revapi.maven.utils.ArtifactResolver) Getopt(gnu.getopt.Getopt) Collectors.toSet(java.util.stream.Collectors.toSet) Nullable(javax.annotation.Nullable) LongOpt(gnu.getopt.LongOpt) API(org.revapi.API) Properties(java.util.Properties) AnalysisContext(org.revapi.AnalysisContext) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Collections.emptyList(java.util.Collections.emptyList) Set(java.util.Set) Artifact(org.eclipse.aether.artifact.Artifact) AnalysisResult(org.revapi.AnalysisResult) FileInputStream(java.io.FileInputStream) Revapi(org.revapi.Revapi) File(java.io.File) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) RemoteRepository(org.eclipse.aether.repository.RemoteRepository) List(java.util.List) Module(org.jboss.modules.Module) RepositoryException(org.eclipse.aether.RepositoryException) ProjectModule(pw.krejci.modules.maven.ProjectModule) ModuleSpecController(pw.krejci.modules.maven.ModuleSpecController) ScopeDependencyTraverser(org.revapi.maven.utils.ScopeDependencyTraverser) ModelNode(org.jboss.dmr.ModelNode) ScopeDependencySelector(org.revapi.maven.utils.ScopeDependencySelector) RepositorySystem(org.eclipse.aether.RepositorySystem) HashSet(java.util.HashSet) Collectors.toSet(java.util.stream.Collectors.toSet) Set(java.util.Set) Revapi(org.revapi.Revapi) AnalysisContext(org.revapi.AnalysisContext) Properties(java.util.Properties) ModuleSpec(org.jboss.modules.ModuleSpec) DependencySpec(org.jboss.modules.DependencySpec) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) Artifact(org.eclipse.aether.artifact.Artifact) FileInputStream(java.io.FileInputStream) AnalysisResult(org.revapi.AnalysisResult) ProjectModule(pw.krejci.modules.maven.ProjectModule) ModuleSpecController(pw.krejci.modules.maven.ModuleSpecController) Module(org.jboss.modules.Module) ProjectModule(pw.krejci.modules.maven.ProjectModule) ModelNode(org.jboss.dmr.ModelNode) File(java.io.File) HashMap(java.util.HashMap) Map(java.util.Map) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact)

Aggregations

DefaultArtifact (org.eclipse.aether.artifact.DefaultArtifact)110 Artifact (org.eclipse.aether.artifact.Artifact)70 ArtifactResult (org.eclipse.aether.resolution.ArtifactResult)42 File (java.io.File)39 ArtifactRequest (org.eclipse.aether.resolution.ArtifactRequest)34 ArtifactResolutionException (org.eclipse.aether.resolution.ArtifactResolutionException)29 IOException (java.io.IOException)24 Dependency (org.eclipse.aether.graph.Dependency)23 ArrayList (java.util.ArrayList)16 RemoteRepository (org.eclipse.aether.repository.RemoteRepository)13 CollectRequest (org.eclipse.aether.collection.CollectRequest)12 VersionRangeRequest (org.eclipse.aether.resolution.VersionRangeRequest)12 VersionRangeResolutionException (org.eclipse.aether.resolution.VersionRangeResolutionException)12 VersionRangeResult (org.eclipse.aether.resolution.VersionRangeResult)12 SubArtifact (org.eclipse.aether.util.artifact.SubArtifact)12 DefaultRepositorySystemSession (org.eclipse.aether.DefaultRepositorySystemSession)11 ArtifactDescriptorException (org.eclipse.aether.resolution.ArtifactDescriptorException)10 Version (org.eclipse.aether.version.Version)10 Model (org.apache.maven.model.Model)9 RepositorySystem (org.eclipse.aether.RepositorySystem)9