1 package org.apache.maven.continuum.execution.shell;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.continuum.execution.AbstractBuildExecutor;
23 import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
24 import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
25 import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
26 import org.apache.maven.continuum.execution.ContinuumBuildExecutorException;
27 import org.apache.maven.continuum.installation.InstallationService;
28 import org.apache.maven.continuum.model.project.BuildDefinition;
29 import org.apache.maven.continuum.model.project.Project;
30 import org.apache.maven.continuum.model.scm.ScmResult;
31 import org.apache.maven.continuum.model.system.Installation;
32 import org.apache.maven.continuum.model.system.Profile;
33 import org.codehaus.plexus.util.StringUtils;
34
35 import java.io.File;
36 import java.util.Collections;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40
41
42
43
44
45 public class ShellBuildExecutor
46 extends AbstractBuildExecutor
47 implements ContinuumBuildExecutor
48 {
49
50
51
52
53 public static final String CONFIGURATION_EXECUTABLE = "executable";
54
55 public static final String ID = ContinuumBuildExecutorConstants.SHELL_BUILD_EXECUTOR;
56
57
58
59
60
61 public ShellBuildExecutor()
62 {
63 super( ID, false );
64 }
65
66
67
68
69
70 public synchronized ContinuumBuildExecutionResult build( Project project, BuildDefinition buildDefinition,
71 File buildOutput, List<Project> projectsWithCommonScmRoot,
72 String projectScmRootUrl )
73 throws ContinuumBuildExecutorException
74 {
75
76 String executable = getBuildFileForProject( project, buildDefinition );
77
78 return executeShellCommand( project, executable, buildDefinition.getArguments(), buildOutput, getEnvironments(
79 buildDefinition ), null, null );
80 }
81
82 protected Map<String, String> getEnvironments( BuildDefinition buildDefinition )
83 {
84 Profile profile = buildDefinition.getProfile();
85 if ( profile == null )
86 {
87 return Collections.EMPTY_MAP;
88 }
89 Map<String, String> envVars = new HashMap<String, String>();
90 String javaHome = getJavaHomeValue( buildDefinition );
91 if ( !StringUtils.isEmpty( javaHome ) )
92 {
93 envVars.put( getInstallationService().getEnvVar( InstallationService.JDK_TYPE ), javaHome );
94 }
95 Installation builder = profile.getBuilder();
96 if ( builder != null )
97 {
98 envVars.put( builder.getVarName(), builder.getVarValue() );
99 }
100 envVars.putAll( getEnvironmentVariables( buildDefinition ) );
101 return envVars;
102
103 }
104
105 public void updateProjectFromCheckOut( File workingDirectory, Project project, BuildDefinition buildDefinition,
106 ScmResult scmResult )
107 throws ContinuumBuildExecutorException
108 {
109 }
110 }