1 package org.apache.maven.shared.transfer.artifact.deploy.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.ArtifactRepository;
27 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
28 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
29 import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
30 import org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
31 import org.sonatype.aether.RepositorySystem;
32 import org.sonatype.aether.RepositorySystemSession;
33 import org.sonatype.aether.artifact.Artifact;
34 import org.sonatype.aether.deployment.DeployRequest;
35 import org.sonatype.aether.deployment.DeploymentException;
36 import org.sonatype.aether.repository.RemoteRepository;
37 import org.sonatype.aether.util.artifact.SubArtifact;
38
39
40
41
42 class Maven30ArtifactDeployer
43 implements MavenArtifactDeployer
44 {
45
46 private final RepositorySystem repositorySystem;
47
48 private final RepositorySystemSession session;
49
50 Maven30ArtifactDeployer( RepositorySystem repositorySystem, RepositorySystemSession session )
51 {
52 this.repositorySystem = repositorySystem;
53 this.session = session;
54 }
55
56 @Override
57 public void deploy( Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
58 throws ArtifactDeployerException
59 {
60 deploy( null, mavenArtifacts );
61 }
62
63 @Override
64 public void deploy( ArtifactRepository remoteRepository,
65 Collection<org.apache.maven.artifact.Artifact> mavenArtifacts )
66 throws ArtifactDeployerException
67 {
68
69 DeployRequest request = new DeployRequest();
70
71 RemoteRepository defaultRepository = null;
72
73 if ( remoteRepository != null )
74 {
75 defaultRepository = getRemoteRepository( session, remoteRepository );
76 }
77
78
79 for ( org.apache.maven.artifact.Artifact mavenArtifact : mavenArtifacts )
80 {
81 Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, "toArtifact",
82 org.apache.maven.artifact.Artifact.class, mavenArtifact );
83 request.addArtifact( aetherArtifact );
84
85 RemoteRepository aetherRepository;
86 if ( remoteRepository == null )
87 {
88 aetherRepository = getRemoteRepository( session, mavenArtifact.getRepository() );
89 }
90 else
91 {
92 aetherRepository = defaultRepository;
93 }
94
95 request.setRepository( aetherRepository );
96
97 for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
98 {
99 if ( metadata instanceof ProjectArtifactMetadata )
100 {
101 Artifact pomArtifact = new SubArtifact( aetherArtifact, "", "pom" );
102 pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() );
103 request.addArtifact( pomArtifact );
104 }
105 else if (
106 metadata instanceof ArtifactRepositoryMetadata )
107 {
108
109 }
110 else if ( metadata instanceof org.apache.maven.shared.transfer.metadata.ArtifactMetadata )
111 {
112 org.apache.maven.shared.transfer.metadata.ArtifactMetadata transferMedata =
113 ( org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata;
114
115 request.addMetadata( new Maven30MetadataBridge( metadata ).setFile( transferMedata.getFile() ) );
116 }
117 }
118 }
119
120
121 try
122 {
123 repositorySystem.deploy( session, request );
124 }
125 catch ( DeploymentException e )
126 {
127 throw new ArtifactDeployerException( e.getMessage(), e );
128 }
129 }
130
131 private RemoteRepository getRemoteRepository( RepositorySystemSession session, ArtifactRepository remoteRepository )
132 throws ArtifactDeployerException
133 {
134 RemoteRepository aetherRepo = Invoker.invoke( RepositoryUtils.class, "toRepo",
135 ArtifactRepository.class,
136 remoteRepository );
137
138 if ( aetherRepo.getAuthentication() == null )
139 {
140 aetherRepo.setAuthentication( session.getAuthenticationSelector().getAuthentication( aetherRepo ) );
141 }
142
143 if ( aetherRepo.getProxy() == null )
144 {
145 aetherRepo.setProxy( session.getProxySelector().getProxy( aetherRepo ) );
146 }
147
148 return aetherRepo;
149 }
150 }