1 package org.opendaylight.odlparent;
4 import java.util.ArrayList;
5 import java.util.LinkedHashSet;
9 import org.apache.maven.plugin.logging.Log;
10 import org.eclipse.aether.DefaultRepositorySystemSession;
11 import org.eclipse.aether.RepositorySystem;
12 import org.eclipse.aether.RepositorySystemSession;
13 import org.eclipse.aether.artifact.Artifact;
14 import org.eclipse.aether.artifact.DefaultArtifact;
15 import org.eclipse.aether.collection.CollectRequest;
16 import org.eclipse.aether.graph.Dependency;
17 import org.eclipse.aether.graph.DependencyFilter;
18 import org.eclipse.aether.installation.InstallRequest;
19 import org.eclipse.aether.installation.InstallationException;
20 import org.eclipse.aether.repository.LocalRepository;
21 import org.eclipse.aether.repository.LocalRepositoryManager;
22 import org.eclipse.aether.repository.RemoteRepository;
23 import org.eclipse.aether.resolution.ArtifactRequest;
24 import org.eclipse.aether.resolution.ArtifactResolutionException;
25 import org.eclipse.aether.resolution.ArtifactResult;
26 import org.eclipse.aether.resolution.DependencyRequest;
27 import org.eclipse.aether.resolution.DependencyResolutionException;
28 import org.eclipse.aether.resolution.DependencyResult;
30 public class AetherUtil {
32 private RepositorySystem repoSystem;
34 private RepositorySystemSession repoSession;
36 private List<RemoteRepository> remoteRepos;
38 protected File localRepository;
42 public AetherUtil(RepositorySystem repoSystem,RepositorySystemSession repoSession,List<RemoteRepository> remoteRepos, File localRepository,Log log) {
43 this.repoSystem = repoSystem;
44 this.repoSession = repoSession;
45 this.remoteRepos = remoteRepos;
46 this.localRepository = localRepository;
50 public Set<Artifact> resolveDependencies(List<Dependency>dependencies,DependencyFilter filter) throws DependencyResolutionException {
51 Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
52 CollectRequest collectRequest = new CollectRequest();
53 collectRequest.setDependencies(dependencies);
54 collectRequest.setRepositories(remoteRepos);
55 DependencyRequest request = new DependencyRequest(collectRequest,filter);
56 DependencyResult results = repoSystem.resolveDependencies(repoSession, request);
57 for(ArtifactResult artifactResult: results.getArtifactResults()) {
58 artifacts.add(artifactResult.getArtifact());
63 public Artifact resolveArtifact(Artifact artifact) {
64 ArtifactRequest request = new ArtifactRequest(artifact, remoteRepos,null);
65 ArtifactResult result;
67 result = repoSystem.resolveArtifact(repoSession, request);
68 } catch (ArtifactResolutionException e) {
69 log.warn("Unable to resolve artifact: " + e.getMessage());
72 return result.getArtifact();
75 public Artifact resolveArtifact(String coord) {
76 DefaultArtifact artifact = new DefaultArtifact(coord);
77 return resolveArtifact(artifact);
80 public Set<Artifact> resolveArtifacts(Set<String> coords) {
81 Set<Artifact> result = new LinkedHashSet<Artifact>();
82 for(String coord: coords) {
83 Artifact artifact = resolveArtifact(coord);
84 if (artifact != null) {
91 public Dependency toDependency(String coord) {
92 Artifact artifact = new DefaultArtifact(coord);
93 Dependency dependency = new Dependency(artifact, null);
97 public List<Dependency> toDependencies(List<String> coords) {
98 List<Dependency> result = new ArrayList<Dependency>();
99 for(String coord: coords) {
100 result.add(toDependency(coord));
105 public void installArtifacts(Set<Artifact> artifacts) throws InstallationException {
106 LocalRepository localRepo = new LocalRepository(localRepository);
107 LocalRepositoryManager localManager = repoSystem.newLocalRepositoryManager(repoSession, localRepo);
108 DefaultRepositorySystemSession localSession = new DefaultRepositorySystemSession();
109 localSession.setLocalRepositoryManager(localManager);
110 InstallRequest installRequest = new InstallRequest();
111 for(Artifact featureArtifact : artifacts) {
112 installRequest.addArtifact(featureArtifact);
114 repoSystem.install(localSession, installRequest);