1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.archetype.downloader;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.io.File;
26 import java.util.List;
27
28 import org.eclipse.aether.RepositorySystem;
29 import org.eclipse.aether.RepositorySystemSession;
30 import org.eclipse.aether.artifact.DefaultArtifact;
31 import org.eclipse.aether.repository.RemoteRepository;
32 import org.eclipse.aether.resolution.ArtifactRequest;
33 import org.eclipse.aether.resolution.ArtifactResolutionException;
34 import org.eclipse.aether.resolution.ArtifactResult;
35
36
37
38
39 @Named
40 @Singleton
41 public class DefaultDownloader implements Downloader {
42
43 @Inject
44 private RepositorySystem repositorySystem;
45
46 @Override
47 public File download(
48 String groupId,
49 String artifactId,
50 String version,
51 List<RemoteRepository> remoteRepositories,
52 RepositorySystemSession repositorySystemSession)
53 throws DownloadException {
54
55 DefaultArtifact artifact = new DefaultArtifact(groupId, artifactId, "", "jar", version);
56
57 ArtifactRequest request = new ArtifactRequest(artifact, remoteRepositories, "archetype");
58 try {
59 ArtifactResult result = repositorySystem.resolveArtifact(repositorySystemSession, request);
60 return result.getArtifact().getFile();
61 } catch (ArtifactResolutionException e) {
62 throw new DownloadException("Could not resolve artifact " + artifactId, e);
63 }
64 }
65 }