1 package org.apache.maven.continuum.core.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.continuum.model.repository.LocalRepository;
27 import org.apache.maven.artifact.Artifact;
28 import org.apache.maven.artifact.deployer.ArtifactDeployer;
29 import org.apache.maven.artifact.repository.ArtifactRepository;
30 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
31 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
32 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
33 import org.apache.maven.continuum.configuration.ConfigurationService;
34 import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
35 import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
36 import org.apache.maven.continuum.execution.maven.m2.MavenBuilderHelper;
37 import org.apache.maven.continuum.model.project.BuildDefinition;
38 import org.apache.maven.continuum.model.project.Project;
39 import org.apache.maven.continuum.project.ContinuumProjectState;
40 import org.apache.maven.continuum.utils.WorkingDirectoryService;
41
42
43
44
45
46
47
48 public class DeployArtifactContinuumAction
49 extends AbstractContinuumAction
50 {
51
52
53
54 private ConfigurationService configurationService;
55
56
57
58
59 private BuildExecutorManager buildExecutorManager;
60
61
62
63
64 private WorkingDirectoryService workingDirectoryService;
65
66
67
68
69 private ArtifactDeployer artifactDeployer;
70
71
72
73
74 private MavenBuilderHelper builderHelper;
75
76
77
78
79 private ArtifactRepositoryFactory artifactRepositoryFactory;
80
81 public void execute( Map context )
82 throws Exception
83 {
84
85
86
87
88 File deploymentRepositoryDirectory = configurationService.getDeploymentRepositoryDirectory();
89
90 if ( deploymentRepositoryDirectory != null )
91 {
92
93 Project project = getProject( context );
94
95 ContinuumBuildExecutor buildExecutor = buildExecutorManager.getBuildExecutor( project.getExecutorId() );
96
97
98
99
100
101 if ( project.getState() == ContinuumProjectState.OK )
102 {
103 BuildDefinition buildDefinition = getBuildDefinition( context );
104
105 List<Artifact> artifacts = buildExecutor.getDeployableArtifacts( project,
106 workingDirectoryService.getWorkingDirectory(
107 project ), buildDefinition );
108
109 LocalRepository repository = project.getProjectGroup().getLocalRepository();
110
111 builderHelper.setLocalRepository( repository );
112
113 ArtifactRepository localRepository = builderHelper.getLocalRepository();
114
115 for ( Artifact artifact : artifacts )
116 {
117 ArtifactRepositoryLayout repositoryLayout = new DefaultRepositoryLayout();
118
119 if ( !deploymentRepositoryDirectory.exists() )
120 {
121 deploymentRepositoryDirectory.mkdirs();
122 }
123
124 String location = deploymentRepositoryDirectory.toURL().toExternalForm();
125
126 ArtifactRepository deploymentRepository =
127 artifactRepositoryFactory.createDeploymentArtifactRepository( "deployment-repository", location,
128 repositoryLayout, true );
129
130 artifactDeployer.deploy( artifact.getFile(), artifact, deploymentRepository, localRepository );
131 }
132 }
133 }
134 }
135 }