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