1 package org.opendaylight.odlparent;
4 import java.util.ArrayList;
5 import java.util.LinkedHashSet;
9 import org.eclipse.aether.DefaultRepositorySystemSession;
10 import org.eclipse.aether.RepositorySystem;
11 import org.eclipse.aether.RepositorySystemSession;
12 import org.eclipse.aether.artifact.Artifact;
13 import org.eclipse.aether.artifact.DefaultArtifact;
14 import org.eclipse.aether.collection.CollectRequest;
15 import org.eclipse.aether.graph.Dependency;
16 import org.eclipse.aether.graph.DependencyFilter;
17 import org.eclipse.aether.installation.InstallRequest;
18 import org.eclipse.aether.installation.InstallationException;
19 import org.eclipse.aether.repository.LocalRepository;
20 import org.eclipse.aether.repository.LocalRepositoryManager;
21 import org.eclipse.aether.repository.RemoteRepository;
22 import org.eclipse.aether.resolution.ArtifactRequest;
23 import org.eclipse.aether.resolution.ArtifactResolutionException;
24 import org.eclipse.aether.resolution.ArtifactResult;
25 import org.eclipse.aether.resolution.DependencyRequest;
26 import org.eclipse.aether.resolution.DependencyResolutionException;
27 import org.eclipse.aether.resolution.DependencyResult;
29 public class AetherUtil {
31 private RepositorySystem repoSystem;
33 private RepositorySystemSession repoSession;
35 private List<RemoteRepository> remoteRepos;
37 protected File localRepository;
39 public AetherUtil(RepositorySystem repoSystem,RepositorySystemSession repoSession,List<RemoteRepository> remoteRepos, File localRepository) {
40 this.repoSystem = repoSystem;
41 this.repoSession = repoSession;
42 this.remoteRepos = remoteRepos;
43 this.localRepository = localRepository;
46 public Set<Artifact> resolveDependencies(List<Dependency>dependencies,DependencyFilter filter) throws DependencyResolutionException {
47 Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
48 CollectRequest collectRequest = new CollectRequest();
49 collectRequest.setDependencies(dependencies);
50 collectRequest.setRepositories(remoteRepos);
51 DependencyRequest request = new DependencyRequest(collectRequest,filter);
52 DependencyResult results = repoSystem.resolveDependencies(repoSession, request);
53 for(ArtifactResult artifactResult: results.getArtifactResults()) {
54 artifacts.add(artifactResult.getArtifact());
59 public Artifact resolveArtifact(Artifact artifact) throws ArtifactResolutionException {
60 ArtifactRequest request = new ArtifactRequest(artifact, remoteRepos,null);
61 ArtifactResult result = repoSystem.resolveArtifact(repoSession, request);
62 return result.getArtifact();
65 public Artifact resolveArtifact(String coord) throws ArtifactResolutionException {
66 DefaultArtifact artifact = new DefaultArtifact(coord);
67 return resolveArtifact(artifact);
70 public Set<Artifact> resolveArtifacts(Set<String> coords) throws ArtifactResolutionException {
71 Set<Artifact> result = new LinkedHashSet<Artifact>();
72 for(String coord: coords) {
73 result.add(resolveArtifact(coord));
78 public Dependency toDependency(String coord) {
79 Artifact artifact = new DefaultArtifact(coord);
80 Dependency dependency = new Dependency(artifact, null);
84 public List<Dependency> toDependencies(List<String> coords) {
85 List<Dependency> result = new ArrayList<Dependency>();
86 for(String coord: coords) {
87 result.add(toDependency(coord));
92 public void installArtifacts(Set<Artifact> artifacts) throws InstallationException {
93 LocalRepository localRepo = new LocalRepository(localRepository);
94 LocalRepositoryManager localManager = repoSystem.newLocalRepositoryManager(repoSession, localRepo);
95 DefaultRepositorySystemSession localSession = new DefaultRepositorySystemSession();
96 localSession.setLocalRepositoryManager(localManager);
97 InstallRequest installRequest = new InstallRequest();
98 for(Artifact featureArtifact : artifacts) {
99 installRequest.addArtifact(featureArtifact);
101 repoSystem.install(localSession, installRequest);