提交 65c5b0d6 编写于 作者: K kohsuke

[FIXED HUDSON-4192] in 1.320. The core wasn't setting the workspace for...

[FIXED HUDSON-4192] in 1.320. The core wasn't setting the workspace for MavenBuild, leaving it empty.

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@20635 71c3de6d-444a-0410-be80-ed276b4c234a
上级 eca53a76
......@@ -204,6 +204,14 @@ public abstract class AbstractBuild<P extends AbstractProject<P,R>,R extends Abs
return n.createPath(workspace);
}
/**
* Normally, a workspace is assigned by {@link Runner}, but this lets you set the workspace in case
* {@link AbstractBuild} is created without a build.
*/
protected void setWorkspace(FilePath ws) {
this.workspace = ws.getRemote();
}
/**
* Returns the root directory of the checked-out module.
* <p>
......
......@@ -24,19 +24,13 @@
package hudson.maven;
import hudson.FilePath;
import hudson.Util;
import hudson.EnvVars;
import hudson.slaves.WorkspaceList;
import hudson.slaves.WorkspaceList.Lease;
import hudson.maven.agent.AbortException;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.DependencyGraph;
import hudson.model.Hudson;
import hudson.model.Result;
import hudson.model.Run;
import hudson.model.Cause.UpstreamCause;
import hudson.model.Environment;
import hudson.model.TaskListener;
import hudson.model.Node;
......@@ -66,10 +60,8 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* {@link Run} for {@link MavenModule}.
......@@ -231,6 +223,13 @@ public class MavenBuild extends AbstractMavenBuild<MavenModule,MavenBuild> {
return new ExecutedMojo.Cache();
}
/**
* Backdoor for {@link MavenModuleSetBuild} to assign workspaces for modules.
*/
protected void setWorkspace(FilePath path) {
super.setWorkspace(path);
}
/**
* Runs Maven and builds the project.
*/
......
......@@ -427,8 +427,10 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
changedModules.add(m.getModuleName().toString());
}
}
proxies.put(m.getModuleName(),m.newBuild().new ProxyImpl2(MavenModuleSetBuild.this,slistener));
MavenBuild mb = m.newBuild();
mb.setWorkspace(getModuleRoot().child(m.getRelativePath()));
proxies.put(m.getModuleName(), mb.new ProxyImpl2(MavenModuleSetBuild.this,slistener));
}
// run the complete build here
......
package hudson.maven;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.ExtractResourceSCM;
import hudson.Launcher;
import hudson.model.BuildListener;
import java.io.IOException;
/**
* @author Kohsuke Kawaguchi
*/
public class MavenBuildTest extends HudsonTestCase {
/**
* NPE in {@code build.getProject().getWorkspace()} for {@link MavenBuild}.
*/
@Bug(4192)
public void testMavenRun() throws Exception {
configureDefaultMaven();
MavenModuleSet m = createMavenProject();
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("HUDSON-4192.zip")));
assertBuildStatusSuccess(m.scheduleBuild2(0).get());
}
private static class TestReporter extends MavenReporter {
@Override
public boolean end(MavenBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
assertNotNull(build.getProject().getWorkspace());
assertNotNull(build.getWorkspace());
return true;
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册