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.artifact.Artifact;
25 import org.apache.maven.artifact.repository.ArtifactRepository;
26 import org.apache.maven.project.ProjectBuildingRequest;
27 import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer;
28 import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
29 import org.codehaus.plexus.PlexusConstants;
30 import org.codehaus.plexus.PlexusContainer;
31 import org.codehaus.plexus.component.annotations.Component;
32 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
33 import org.codehaus.plexus.context.Context;
34 import org.codehaus.plexus.context.ContextException;
35 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
36
37
38
39
40 @Component( role = ArtifactDeployer.class )
41 class DefaultArtifactDeployer
42 implements ArtifactDeployer, Contextualizable
43 {
44
45 private PlexusContainer container;
46
47 @Override
48 public void deploy( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts )
49 throws ArtifactDeployerException
50 {
51 validateParameters( request, mavenArtifacts );
52
53 try
54 {
55 String hint = isMaven31() ? "maven31" : "maven3";
56
57 ArtifactDeployer effectiveArtifactDeployer = container.lookup( ArtifactDeployer.class, hint );
58
59 effectiveArtifactDeployer.deploy( request, mavenArtifacts );
60 }
61 catch ( ComponentLookupException e )
62 {
63 throw new ArtifactDeployerException( e.getMessage(), e );
64 }
65 }
66
67 @Override
68 public void deploy( ProjectBuildingRequest request, ArtifactRepository remoteRepository,
69 Collection<Artifact> mavenArtifacts )
70 throws ArtifactDeployerException
71 {
72 validateParameters( request, mavenArtifacts );
73 try
74 {
75 String hint = isMaven31() ? "maven31" : "maven3";
76
77 ArtifactDeployer effectiveArtifactDeployer = container.lookup( ArtifactDeployer.class, hint );
78
79 effectiveArtifactDeployer.deploy( request, remoteRepository, mavenArtifacts );
80 }
81 catch ( ComponentLookupException e )
82 {
83 throw new ArtifactDeployerException( e.getMessage(), e );
84 }
85 }
86
87 private void validateParameters( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts )
88 {
89 if ( request == null )
90 {
91 throw new IllegalArgumentException( "The parameter request is not allowed to be null." );
92 }
93 if ( mavenArtifacts == null )
94 {
95 throw new IllegalArgumentException( "The parameter mavenArtifacts is not allowed to be null." );
96 }
97 if ( mavenArtifacts.isEmpty() )
98 {
99 throw new IllegalArgumentException( "The collection mavenArtifacts is not allowed to be empty." );
100 }
101 }
102
103
104
105
106 protected static boolean isMaven31()
107 {
108 return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" );
109 }
110
111 private static boolean canFindCoreClass( String className )
112 {
113 try
114 {
115 Thread.currentThread().getContextClassLoader().loadClass( className );
116
117 return true;
118 }
119 catch ( ClassNotFoundException e )
120 {
121 return false;
122 }
123 }
124
125
126
127
128
129
130
131 public void contextualize( Context context )
132 throws ContextException
133 {
134 container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
135 }
136 }