1 package com.atlassian.maven.plugins.amps.util;
2
3 import com.atlassian.maven.plugins.amps.ProductArtifact;
4
5 import org.apache.maven.artifact.repository.ArtifactRepository;
6 import org.apache.maven.artifact.factory.ArtifactFactory;
7 import org.apache.maven.artifact.resolver.ArtifactResolver;
8 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
9 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
10 import org.apache.maven.artifact.Artifact;
11 import org.apache.maven.plugin.MojoExecutionException;
12
13 import java.util.List;
14
15 public class ArtifactRetriever
16 {
17 private final ArtifactResolver artifactResolver;
18 private final ArtifactFactory artifactFactory;
19 private final ArtifactRepository localRepository;
20 private final List<ArtifactRepository> remoteRepositories;
21
22 public ArtifactRetriever(ArtifactResolver artifactResolver, ArtifactFactory artifactFactory, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories)
23 {
24 this.artifactResolver = artifactResolver;
25 this.artifactFactory = artifactFactory;
26 this.localRepository = localRepository;
27 this.remoteRepositories = remoteRepositories;
28 }
29
30 public String resolve(ProductArtifact dependency) throws MojoExecutionException
31 {
32 Artifact artifact = this.artifactFactory.createArtifact(dependency.getGroupId(),
33 dependency.getArtifactId(), dependency.getVersion(), "compile", "jar");
34 try
35 {
36 this.artifactResolver.resolve(artifact, remoteRepositories, localRepository);
37 }
38 catch (ArtifactResolutionException e)
39 {
40 throw new MojoExecutionException("Cannot resolve artifact", e);
41 }
42 catch (ArtifactNotFoundException e)
43 {
44 throw new MojoExecutionException("Cannot find artifact", e);
45 }
46 return artifact.getFile().getPath();
47 }
48 }