1 package org.apache.maven.shared.transfer.artifact.install.internal;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23
24 import org.apache.maven.RepositoryUtils;
25 import org.apache.maven.artifact.metadata.ArtifactMetadata;
26 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
27 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
28 import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
29 import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
30 import org.sonatype.aether.RepositorySystem;
31 import org.sonatype.aether.RepositorySystemSession;
32 import org.sonatype.aether.artifact.Artifact;
33 import org.sonatype.aether.installation.InstallRequest;
34 import org.sonatype.aether.installation.InstallationException;
35 import org.sonatype.aether.util.artifact.SubArtifact;
36
37
38
39
40 class Maven30ArtifactInstaller
41 implements MavenArtifactInstaller
42 {
43 private final RepositorySystem repositorySystem;
44
45 private final RepositorySystemSession session;
46
47 Maven30ArtifactInstaller( RepositorySystem repositorySystem, RepositorySystemSession session )
48 {
49 this.repositorySystem = repositorySystem;
50 this.session = session;
51 }
52
53 @Override
54 public void install( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
55 throws ArtifactInstallerException
56 {
57
58 InstallRequest request = new InstallRequest();
59
60
61 for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
62 {
63 Artifact mainArtifact =
64 (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
65 org.apache.maven.artifact.Artifact.class, mavenArtifact );
66 request.addArtifact( mainArtifact );
67
68 for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
69 {
70 if ( metadata instanceof ProjectArtifactMetadata )
71 {
72 Artifact pomArtifact = new SubArtifact( mainArtifact, "", "pom" );
73 pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() );
74 request.addArtifact( pomArtifact );
75 }
76 else if (
77 metadata instanceof ArtifactRepositoryMetadata )
78 {
79
80 }
81 else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata )
82 {
83 org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMedata =
84 ( org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata;
85
86 request.addMetadata( new Maven30MetadataBridge( metadata ).setFile( transferMedata.getFile() ) );
87 }
88 }
89 }
90
91
92
93
94
95
96
97 try
98 {
99 repositorySystem.install( session, request );
100 }
101 catch ( InstallationException e )
102 {
103 throw new ArtifactInstallerException( e.getMessage(), e );
104 }
105 }
106 }