Search in sources :

Example 1 with Dependency

use of io.fabric8.maven.core.model.Dependency in project fabric8-maven-plugin by fabric8io.

the class DependencyEnricherTest method getDummyArtifacts.

private List<Dependency> getDummyArtifacts() {
    List<Dependency> artifacts = new ArrayList<>();
    File aFile = new File(getClass().getResource(artifactFilePath).getFile());
    Dependency artifact = new Dependency(new GroupArtifactVersion("g1", "a1", "v1"), "jar", "compile", aFile);
    artifacts.add(artifact);
    return artifacts;
}
Also used : ArrayList(java.util.ArrayList) Dependency(io.fabric8.maven.core.model.Dependency) GroupArtifactVersion(io.fabric8.maven.core.model.GroupArtifactVersion) File(java.io.File)

Example 2 with Dependency

use of io.fabric8.maven.core.model.Dependency in project fabric8-maven-plugin by fabric8io.

the class MavenEnricherContext method getDependencies.

@Override
public List<Dependency> getDependencies(boolean transitive) {
    final Set<Artifact> artifacts = transitive ? getProject().getArtifacts() : getProject().getDependencyArtifacts();
    final List<Dependency> dependencies = new ArrayList<>();
    for (Artifact artifact : artifacts) {
        dependencies.add(new Dependency(new GroupArtifactVersion(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion()), artifact.getType(), artifact.getScope(), artifact.getFile()));
    }
    return dependencies;
}
Also used : ArrayList(java.util.ArrayList) Dependency(io.fabric8.maven.core.model.Dependency) GroupArtifactVersion(io.fabric8.maven.core.model.GroupArtifactVersion) Artifact(org.apache.maven.artifact.Artifact)

Example 3 with Dependency

use of io.fabric8.maven.core.model.Dependency in project fabric8 by jboss-fuse.

the class AetherBasedResolver method collectDependencies.

protected DependencyNode collectDependencies(Artifact root, String pomVersion, final Filter<Dependency> excludeDependencyFilter) throws RepositoryException, IOException {
    final DefaultRepositorySystemSession session = newSession();
    try {
        List<RemoteRepository> repos = selectRepositories();
        assignProxyAndMirrors(repos);
        ArtifactDescriptorResult artifactDescriptorResult = m_repoSystem.readArtifactDescriptor(session, new ArtifactDescriptorRequest(root, repos, null));
        repos.addAll(artifactDescriptorResult.getRepositories());
        Dependency rootDependency = new Dependency(root, null);
        List<Dependency> dependencies = artifactDescriptorResult.getDependencies();
        final DefaultDependencyNode rootNode = new DefaultDependencyNode(rootDependency);
        GenericVersionScheme versionScheme = new GenericVersionScheme();
        rootNode.setVersion(versionScheme.parseVersion(pomVersion));
        rootNode.setVersionConstraint(versionScheme.parseVersionConstraint(pomVersion));
        DependencyNode pomNode = rootNode;
        // final Filter<Dependency> shouldExclude = Filters.or(DependencyFilters.testScopeFilter, excludeDependencyFilter, new NewerVersionExistsFilter(rootNode));
        final Filter<Dependency> shouldExclude = Filters.or(Arrays.asList(DependencyFilters.testScopeFilter, excludeDependencyFilter));
        DependencySelector dependencySelector = new AndDependencySelector(new ScopeDependencySelector("test"), new ExclusionDependencySelector(), new DependencySelector() {

            @Override
            public DependencySelector deriveChildSelector(DependencyCollectionContext context) {
                return this;
            }

            @Override
            public boolean selectDependency(Dependency dependency) {
                try {
                    return !DependencyFilters.matches(dependency, shouldExclude);
                } catch (Exception e) {
                    failedToMakeDependencyTree(dependency, e);
                    return false;
                }
            }
        });
        session.setDependencySelector(dependencySelector);
        // work on the root dependency directly?
        if (true) {
            for (Dependency dependency : dependencies) {
                DependencyNode node = resolveDependencies(session, repos, pomNode, dependency, shouldExclude);
                if (node != null) {
                    pomNode.getChildren().add(node);
                }
            }
        } else {
            DependencyNode node = resolveDependencies(session, repos, pomNode, rootDependency, shouldExclude);
            if (node != null) {
                pomNode = node;
            }
        }
        // now lets transform the dependency tree to remove different versions for the same artifact
        final DependencyGraphTransformationContext tranformContext = new DependencyGraphTransformationContext() {

            Map<Object, Object> map = new HashMap<>();

            public RepositorySystemSession getSession() {
                return session;
            }

            public Object get(Object key) {
                return map.get(key);
            }

            public Object put(Object key, Object value) {
                return map.put(key, value);
            }
        };
        DependencyGraphTransformer transformer = new ReplaceConflictingVersionResolver();
        pomNode = transformer.transformGraph(pomNode, tranformContext);
        transformer = new DuplicateTransformer();
        pomNode = transformer.transformGraph(pomNode, tranformContext);
        return pomNode;
    } finally {
        releaseSession(session);
    }
}
Also used : DependencyGraphTransformationContext(org.eclipse.aether.collection.DependencyGraphTransformationContext) ReplaceConflictingVersionResolver(io.fabric8.maven.ReplaceConflictingVersionResolver) RemoteRepository(org.eclipse.aether.repository.RemoteRepository) DuplicateTransformer(io.fabric8.maven.DuplicateTransformer) DefaultRepositorySystemSession(org.eclipse.aether.DefaultRepositorySystemSession) DefaultDependencyNode(org.eclipse.aether.graph.DefaultDependencyNode) DependencyNode(org.eclipse.aether.graph.DependencyNode) ChainedDependencyGraphTransformer(org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer) DependencyGraphTransformer(org.eclipse.aether.collection.DependencyGraphTransformer) ArtifactDescriptorRequest(org.eclipse.aether.resolution.ArtifactDescriptorRequest) ScopeDependencySelector(org.eclipse.aether.util.graph.selector.ScopeDependencySelector) ExclusionDependencySelector(org.eclipse.aether.util.graph.selector.ExclusionDependencySelector) DependencyCollectionContext(org.eclipse.aether.collection.DependencyCollectionContext) AndDependencySelector(org.eclipse.aether.util.graph.selector.AndDependencySelector) Dependency(org.eclipse.aether.graph.Dependency) FailedToResolveDependency(io.fabric8.maven.FailedToResolveDependency) DependencyCollectionException(org.eclipse.aether.collection.DependencyCollectionException) SocketTimeoutException(java.net.SocketTimeoutException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) ArtifactNotFoundException(org.eclipse.aether.transfer.ArtifactNotFoundException) RepositoryException(org.eclipse.aether.RepositoryException) VersionRangeResolutionException(org.eclipse.aether.resolution.VersionRangeResolutionException) MetadataTransferException(org.eclipse.aether.transfer.MetadataTransferException) NoRouteToHostException(java.net.NoRouteToHostException) ArtifactTransferException(org.eclipse.aether.transfer.ArtifactTransferException) ArtifactResolutionException(org.eclipse.aether.resolution.ArtifactResolutionException) DependencyResolutionException(org.eclipse.aether.resolution.DependencyResolutionException) MalformedURLException(java.net.MalformedURLException) MetadataNotFoundException(org.eclipse.aether.transfer.MetadataNotFoundException) InvalidVersionSpecificationException(org.eclipse.aether.version.InvalidVersionSpecificationException) AndDependencySelector(org.eclipse.aether.util.graph.selector.AndDependencySelector) ScopeDependencySelector(org.eclipse.aether.util.graph.selector.ScopeDependencySelector) OptionalDependencySelector(org.eclipse.aether.util.graph.selector.OptionalDependencySelector) ExclusionDependencySelector(org.eclipse.aether.util.graph.selector.ExclusionDependencySelector) DependencySelector(org.eclipse.aether.collection.DependencySelector) DefaultDependencyNode(org.eclipse.aether.graph.DefaultDependencyNode) GenericVersionScheme(org.eclipse.aether.util.version.GenericVersionScheme) ArtifactDescriptorResult(org.eclipse.aether.resolution.ArtifactDescriptorResult) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap)

Example 4 with Dependency

use of io.fabric8.maven.core.model.Dependency in project fabric8 by jboss-fuse.

the class AetherBasedResolver method handleDependencyResolveFailure.

protected void handleDependencyResolveFailure(DependencyNode pomNode, Dependency dependency, Exception e) throws FailedToResolveDependency {
    FailedToResolveDependency exception = new FailedToResolveDependency(dependency, e);
    if (throwExceptionsOnResolveDependencyFailure) {
        throw exception;
    } else {
        LOGGER.warn(exception.getMessage(), e);
        // lets just add the current dependency without its full dependency tree
        DefaultDependencyNode node = new DefaultDependencyNode(dependency);
        pomNode.getChildren().add(node);
    }
}
Also used : FailedToResolveDependency(io.fabric8.maven.FailedToResolveDependency) DefaultDependencyNode(org.eclipse.aether.graph.DefaultDependencyNode)

Example 5 with Dependency

use of io.fabric8.maven.core.model.Dependency in project fabric8 by jboss-fuse.

the class JavaContainers method addMavenDependencies.

protected static void addMavenDependencies(Map<String, Parser> artifacts, DependencyDTO dependency) throws MalformedURLException {
    String url = dependency.toBundleUrlWithType();
    Parser parser = Parser.parsePathWithSchemePrefix(url);
    String scope = dependency.getScope();
    if (!artifacts.containsKey(url) && !artifacts.containsValue(parser) && !(Objects.equal("test", scope))) {
        LOGGER.debug("Adding url: " + url + " parser: " + parser);
        artifacts.put(url, parser);
    }
    List<DependencyDTO> children = dependency.getChildren();
    if (children != null) {
        for (DependencyDTO child : children) {
            addMavenDependencies(artifacts, child);
        }
    }
}
Also used : DependencyDTO(io.fabric8.deployer.dto.DependencyDTO) Parser(io.fabric8.maven.util.Parser)

Aggregations

File (java.io.File)8 ArrayList (java.util.ArrayList)8 IOException (java.io.IOException)6 Dependency (io.fabric8.agent.model.Dependency)4 Feature (io.fabric8.agent.model.Feature)4 Util.readAsString (io.fabric8.arquillian.utils.Util.readAsString)4 URL (java.net.URL)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 ResourceUtils.addIdentityRequirement (io.fabric8.agent.resolver.ResourceUtils.addIdentityRequirement)3 HasMetadata (io.fabric8.kubernetes.api.model.HasMetadata)3 Dependency (io.fabric8.maven.core.model.Dependency)3 Parser (io.fabric8.maven.util.Parser)3 HashSet (java.util.HashSet)3 BundleInfo (io.fabric8.agent.model.BundleInfo)2 Requirement (io.fabric8.agent.model.Requirement)2 Logger (io.fabric8.arquillian.kubernetes.log.Logger)2 Util.cleanupSession (io.fabric8.arquillian.utils.Util.cleanupSession)2 DependencyDTO (io.fabric8.deployer.dto.DependencyDTO)2 FailedToResolveDependency (io.fabric8.maven.FailedToResolveDependency)2