提交 3ec951ec 编写于 作者: K kohsuke

Expose MAVEN_OPTS as env. var, in addition to set it to Maven JVM.

    (<a href="https://hudson.dev.java.net/issues/show_bug.cgi?id=3644">issue 3644</a>)


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@19452 71c3de6d-444a-0410-be80-ed276b4c234a
上级 f6e93634
......@@ -36,6 +36,7 @@ import hudson.model.Result;
import hudson.model.Run;
import hudson.model.Cause.UpstreamCause;
import hudson.model.Environment;
import hudson.model.TaskListener;
import hudson.remoting.Channel;
import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry;
......@@ -170,6 +171,19 @@ public class MavenBuild extends AbstractBuild<MavenModule,MavenBuild> {
return true;
}
/**
* Exposes {@code MAVEN_OPTS} to forked processes.
*
* <p>
* See {@link MavenModuleSetBuild#getEnvironment(TaskListener)} for discussion.
*/
@Override
public EnvVars getEnvironment(TaskListener log) throws IOException, InterruptedException {
EnvVars envs = super.getEnvironment(log);
envs.put("MAVEN_OPTS",project.getParent().getMavenOpts());
return envs;
}
public void registerAsProjectAction(MavenReporter reporter) {
if(projectActionReporters==null)
projectActionReporters = new ArrayList<MavenReporter>();
......
......@@ -42,6 +42,7 @@ import hudson.model.Hudson;
import hudson.model.ParametersAction;
import hudson.model.Result;
import hudson.model.Computer;
import hudson.model.TaskListener;
import hudson.model.Cause.UpstreamCause;
import hudson.remoting.Channel;
import hudson.remoting.VirtualChannel;
......@@ -111,6 +112,21 @@ public final class MavenModuleSetBuild extends AbstractBuild<MavenModuleSet,Mave
super(project, buildDir);
}
/**
* Exposes {@code MAVEN_OPTS} to forked processes.
*
* When we fork Maven, we do so directly by executing Java, thus this environment variable
* is pointless (we have to tweak JVM launch option correctly instead, which can be seen in
* {@link MavenProcessFactory}), but setting the environment variable explicitly is still
* useful in case this Maven forks other Maven processes via normal way. See HUDSON-3644.
*/
@Override
public EnvVars getEnvironment(TaskListener log) throws IOException, InterruptedException {
EnvVars envs = super.getEnvironment(log);
envs.put("MAVEN_OPTS",project.getMavenOpts());
return envs;
}
/**
* Displays the combined status of all modules.
* <p>
......
......@@ -253,7 +253,7 @@ final class MavenProcessFactory implements ProcessCache.Factory {
if(jdk==null) {
args.add("java");
} else {
args.add(jdk.getJavaHome()+"/bin/java"); // use JDK.getExecutable() here ?
args.add(jdk.getHome()+"/bin/java"); // use JDK.getExecutable() here ?
}
if(debugPort!=0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册