1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.impl;
20
21 import org.apache.maven.api.annotations.Nonnull;
22 import org.apache.maven.api.di.Inject;
23 import org.apache.maven.api.di.Named;
24 import org.apache.maven.api.di.Singleton;
25 import org.apache.maven.api.services.ArtifactInstaller;
26 import org.apache.maven.api.services.ArtifactInstallerException;
27 import org.apache.maven.api.services.ArtifactInstallerRequest;
28 import org.eclipse.aether.RepositorySystem;
29 import org.eclipse.aether.installation.InstallRequest;
30 import org.eclipse.aether.installation.InstallResult;
31 import org.eclipse.aether.installation.InstallationException;
32
33 import static org.apache.maven.internal.impl.Utils.nonNull;
34
35 @Named
36 @Singleton
37 public class DefaultArtifactInstaller implements ArtifactInstaller {
38
39 private final RepositorySystem repositorySystem;
40
41 @Inject
42 DefaultArtifactInstaller(@Nonnull RepositorySystem repositorySystem) {
43 this.repositorySystem = nonNull(repositorySystem);
44 }
45
46 @Override
47 public void install(ArtifactInstallerRequest request) throws ArtifactInstallerException, IllegalArgumentException {
48 nonNull(request, "request");
49 InternalSession session = InternalSession.from(request.getSession());
50 try {
51 InstallRequest installRequest =
52 new InstallRequest().setArtifacts(session.toArtifacts(request.getArtifacts()));
53
54 InstallResult result = repositorySystem.install(session.getSession(), installRequest);
55 } catch (InstallationException e) {
56 throw new ArtifactInstallerException(e.getMessage(), e);
57 }
58 }
59 }