diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java index 478803315150fb66116b9fc0007a9d3c33f5f0b6..bd30ba081f7a82165f8b552fd93155d44afddaab 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java @@ -478,7 +478,7 @@ public class MavenBuild extends AbstractMavenBuild { @Override protected Lease decideWorkspace(Node n, WorkspaceList wsl) throws InterruptedException, IOException { - return wsl.allocate(getParentBuild().getModuleRoot().child(getProject().getRelativePath())); + return wsl.allocate(getModuleSetBuild().getModuleRoot().child(getProject().getRelativePath())); } protected Result doRun(BuildListener listener) throws Exception { diff --git a/test/pom.xml b/test/pom.xml index 4999043686cd154704a564acae8f88ffc0693c34..4b6655e03c04858d43672c5e89e6360719eaccfa 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -42,16 +42,14 @@ THE SOFTWARE. maven-surefire-plugin - + once true -XX:MaxPermSize=128m - + hudson.ClassicPluginStrategy.useAntClassLoader true @@ -109,6 +107,11 @@ THE SOFTWARE. maven-plugin ${project.version} + + org.jvnet.hudson.plugins + subversion + 1.7 + org.mortbay.jetty jetty diff --git a/test/src/test/java/hudson/maven/MavenBuildTest.java b/test/src/test/java/hudson/maven/MavenBuildTest.java index e5e0538b20e31c41250840498ac4acb5b22d1f86..a777ebbfeedd412cd645ce7446a00575cb8551d5 100644 --- a/test/src/test/java/hudson/maven/MavenBuildTest.java +++ b/test/src/test/java/hudson/maven/MavenBuildTest.java @@ -4,6 +4,7 @@ import org.jvnet.hudson.test.HudsonTestCase; import org.jvnet.hudson.test.Bug; import org.jvnet.hudson.test.ExtractResourceSCM; import hudson.Launcher; +import hudson.scm.SubversionSCM; import hudson.model.BuildListener; import hudson.model.Result; @@ -33,7 +34,7 @@ public class MavenBuildTest extends HudsonTestCase { public void testTestFailureInEarlyTaskSegment() throws Exception { configureDefaultMaven(); MavenModuleSet m = createMavenProject(); - m.setGoals("clean install findbugs:findbugs"); + m.setGoals("clean install findbugs:findbugs"); m.setScm(new ExtractResourceSCM(getClass().getResource("maven-test-failure-findbugs.zip"))); assertBuildStatus(Result.UNSTABLE, m.scheduleBuild2(0).get()); } @@ -44,7 +45,7 @@ public class MavenBuildTest extends HudsonTestCase { public void testCompilationFailure() throws Exception { configureDefaultMaven(); MavenModuleSet m = createMavenProject(); - m.setGoals("clean install"); + m.setGoals("clean install"); m.setScm(new ExtractResourceSCM(getClass().getResource("maven-compilation-failure.zip"))); assertBuildStatus(Result.FAILURE, m.scheduleBuild2(0).get()); } @@ -57,4 +58,20 @@ public class MavenBuildTest extends HudsonTestCase { return true; } } + + /** + * Workspace determination problem on non-aggregator style build. + */ + @Bug(4226) + public void testParallelModuleBuild() throws Exception { + configureDefaultMaven(); + MavenModuleSet m = createMavenProject(); + m.setScm(new SubversionSCM("https://www.dev.java.net/svn/hudson/trunk/hudson/test-projects/multimodule-maven")); + m.setAggregatorStyleBuild(false); + + assertBuildStatusSuccess(m.scheduleBuild2(0).get()); + // run module builds + assertBuildStatusSuccess(m.getModule("test$module1").scheduleBuild2(0).get()); + assertBuildStatusSuccess(m.getModule("test$module1").scheduleBuild2(0).get()); + } }