提交 56c6aa32 编写于 作者: J Jesse Glick

[FIXED JENKINS-17331] PerJobLocalRepositoryLocator should prefer the...

[FIXED JENKINS-17331] PerJobLocalRepositoryLocator should prefer the MavenModuleSetBuild.workspace for single-module builds.
上级 3d2acbcd
......@@ -64,6 +64,9 @@ Upcoming changes</a>
<li class=rfe>
Better report file deletion failures.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-17271">issue 17271</a>)
<li class=bug>
"Local to the workspace" repository locator does not work when building one module in isolation.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-17331">issue 17331</a>)
<li class=bug>
Master node mode not correctly displayed in <code>/computer/(master)/configure</code>.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-17263">issue 17263</a>)
......
......@@ -74,6 +74,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
import javax.annotation.CheckForNull;
import jenkins.mvn.SettingsProvider;
......@@ -153,7 +154,7 @@ public class MavenBuild extends AbstractMavenBuild<MavenModule,MavenBuild> {
* is manually triggered.
* @see #getModuleSetBuild()
*/
public MavenModuleSetBuild getParentBuild() {
public @CheckForNull MavenModuleSetBuild getParentBuild() {
return getParent().getParent().getBuildByNumber(getNumber());
}
......@@ -174,7 +175,7 @@ public class MavenBuild extends AbstractMavenBuild<MavenModule,MavenBuild> {
* is manually removed.
* @see #getParentBuild()
*/
public MavenModuleSetBuild getModuleSetBuild() {
public @CheckForNull MavenModuleSetBuild getModuleSetBuild() {
return getParent().getParent().getNearestOldBuild(getNumber());
}
......
......@@ -3,6 +3,8 @@ package hudson.maven.local_repo;
import hudson.Extension;
import hudson.FilePath;
import hudson.maven.AbstractMavenBuild;
import hudson.maven.MavenBuild;
import hudson.maven.MavenModuleSetBuild;
import org.kohsuke.stapler.DataBoundConstructor;
/**
......@@ -17,8 +19,17 @@ public class PerJobLocalRepositoryLocator extends LocalRepositoryLocator {
@Override
public FilePath locate(AbstractMavenBuild build) {
// XXX should this use ((MavenBuild) build).getParentBuild().getWorkspace() when instanceof MavenBuild?
return build.getWorkspace().child(".repository");
if (build instanceof MavenBuild) {
MavenModuleSetBuild parentBuild = ((MavenBuild) build).getModuleSetBuild();
if (parentBuild != null) {
build = parentBuild;
}
}
FilePath ws = build.getWorkspace();
if (ws == null) {
return null;
}
return ws.child(".repository");
}
@Extension
......
......@@ -23,7 +23,7 @@
*/
package hudson.maven;
import hudson.maven.local_repo.PerExecutorLocalRepositoryLocator;
import hudson.maven.local_repo.PerJobLocalRepositoryLocator;
import hudson.model.AbstractProject;
import hudson.model.Item;
import hudson.model.Result;
......@@ -75,8 +75,7 @@ public class MavenProjectTest extends HudsonTestCase {
project.setScm(new ExtractResourceSCM(getClass().getResource(
scmResource)));
project.setMaven(mi.getName());
// PerJobLocalRepositoryLocator does not work, since the repo for a module is distinct from that of the set
project.setLocalRepository(new PerExecutorLocalRepositoryLocator());
project.setLocalRepository(new PerJobLocalRepositoryLocator());
return project;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册