From 22e8e1f2852f786c4bef1c6ee9b936f97b472f9b Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Tue, 3 Apr 2012 14:12:21 -0700 Subject: [PATCH] Added ToolInstallation.buildEnvVars() This provides generic consumer of ToolInstallation to expose ToolInstallation to the build. --- core/src/main/java/hudson/model/JDK.java | 14 ++++++++++++-- core/src/main/java/hudson/tasks/Maven.java | 11 +++++++++-- .../main/java/hudson/tools/ToolInstallation.java | 12 ++++++++++++ .../src/main/java/hudson/maven/MavenBuild.java | 3 +-- .../java/hudson/maven/MavenModuleSetBuild.java | 4 +--- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/hudson/model/JDK.java b/core/src/main/java/hudson/model/JDK.java index 3809585496..73ca0c9db1 100644 --- a/core/src/main/java/hudson/model/JDK.java +++ b/core/src/main/java/hudson/model/JDK.java @@ -23,6 +23,8 @@ */ package hudson.model; +import com.infradna.tool.bridge_method_injector.BridgeMethodsAdded; +import com.infradna.tool.bridge_method_injector.WithBridgeMethods; import hudson.util.StreamTaskListener; import hudson.util.NullStream; import hudson.util.FormValidation; @@ -100,14 +102,22 @@ public final class JDK extends ToolInstallation implements NodeSpecific, En } /** - * Sets PATH and JAVA_HOME from this JDK. + * @deprecated as of 1.460. Use {@link #buildEnvVars(EnvVars)} */ public void buildEnvVars(Map env) { - // see EnvVars javadoc for why this adss PATH. + // see EnvVars javadoc for why this adds PATH. env.put("PATH+JDK",getHome()+"/bin"); env.put("JAVA_HOME",getHome()); } + /** + * Sets PATH and JAVA_HOME from this JDK. + */ + @Override + public void buildEnvVars(EnvVars env) { + buildEnvVars((Map)env); + } + public JDK forNode(Node node, TaskListener log) throws IOException, InterruptedException { return new JDK(getName(), translateFor(node, log)); } diff --git a/core/src/main/java/hudson/tasks/Maven.java b/core/src/main/java/hudson/tasks/Maven.java index f91f94c28c..467d4a331b 100644 --- a/core/src/main/java/hudson/tasks/Maven.java +++ b/core/src/main/java/hudson/tasks/Maven.java @@ -294,8 +294,7 @@ public class Maven extends Builder { // The other solution would be to set M2_HOME if we are calling Maven2 // and MAVEN_HOME for Maven1 (only of use for strange people that // are calling Maven2 from Maven1) - env.put("M2_HOME",mi.getHome()); - env.put("MAVEN_HOME",mi.getHome()); + mi.buildEnvVars(env); } // just as a precaution // see http://maven.apache.org/continuum/faqs.html#how-does-continuum-detect-a-successful-build @@ -401,6 +400,14 @@ public class Maven extends Builder { return new File(getHome()); } + @Override + public void buildEnvVars(EnvVars env) { + String home = getHome(); + env.put("M2_HOME", home); + env.put("MAVEN_HOME", home); + env.put("PATH+MAVEN", home + "/bin"); + } + /** * Compares the version of this Maven installation to the minimum required version specified. * diff --git a/core/src/main/java/hudson/tools/ToolInstallation.java b/core/src/main/java/hudson/tools/ToolInstallation.java index ef4aea75d7..65ca3fc021 100644 --- a/core/src/main/java/hudson/tools/ToolInstallation.java +++ b/core/src/main/java/hudson/tools/ToolInstallation.java @@ -126,6 +126,18 @@ public abstract class ToolInstallation extends AbstractDescribableImpl + * To add entry to PATH, do {@code envVars.put("PATH+XYZ",path)} where 'XYZ' is something unique. + * Variable names of the form 'A+B' is interpreted as adding the value to the existing PATH. + * + * @since 1.460 + */ + public void buildEnvVars(EnvVars env) { + } + public DescribableList,ToolPropertyDescriptor> getProperties() { assert properties!=null; return properties; diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java index 867fe036c0..667a79d09e 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java @@ -215,8 +215,7 @@ public class MavenBuild extends AbstractMavenBuild { if (mvn == null) throw new hudson.AbortException(Messages.MavenModuleSetBuild_NoMavenConfigured()); mvn = mvn.forEnvironment(envs).forNode(Computer.currentComputer().getNode(), log); - envs.put("M2_HOME", mvn.getHome()); - envs.put("PATH+MAVEN", mvn.getHome() + "/bin"); + mvn.buildEnvVars(envs); return envs; } diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java index 08604ca29b..58ced2e166 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java @@ -169,9 +169,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild