提交 239b8b0b 编写于 作者: A abayer

[FIXED HUDSON-4939] Reworked createEmbedder to allow for determining...

[FIXED HUDSON-4939] Reworked createEmbedder to allow for determining MavenModuleSet configuration from a build object

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@28280 71c3de6d-444a-0410-be80-ed276b4c234a
上级 86b2bcb0
......@@ -28,6 +28,7 @@ import hudson.Util;
import hudson.model.BuildListener;
import hudson.model.TaskListener;
import hudson.model.AbstractProject;
import hudson.model.AbstractBuild;
import hudson.model.Hudson;
import hudson.tasks.Maven.MavenInstallation;
import hudson.tasks.Maven.ProjectWithMaven;
......@@ -76,6 +77,44 @@ public class MavenUtil {
return createEmbedder(listener,m!=null?m.getHomeDir():null,profiles);
}
/**
* This version tries to infer mavenHome and other options by looking at a build.
*
* @see #createEmbedder(TaskListener, File, String)
*/
public static MavenEmbedder createEmbedder(TaskListener listener, AbstractBuild<?,?> build) throws MavenEmbedderException, IOException, InterruptedException {
MavenInstallation m=null;
File settingsLoc = null;
String profiles = null;
Properties systemProperties = null;
String privateRepository = null;
AbstractProject project = build.getProject();
if (project instanceof ProjectWithMaven) {
m = ((ProjectWithMaven) project).inferMavenInstallation().forNode(Hudson.getInstance(),listener);
}
if (project instanceof MavenModuleSet) {
String altSet = ((MavenModuleSet) project).getAlternateSettings();
settingsLoc = (altSet == null) ? null
: new File(build.getWorkspace().child(altSet).getRemote());
if (((MavenModuleSet) project).usesPrivateRepository()) {
privateRepository = build.getWorkspace().child(".repository").getRemote();
}
profiles = ((MavenModuleSet) project).getProfiles();
systemProperties = ((MavenModuleSet) project).getMavenProperties();
}
return createEmbedder(listener,
m!=null?m.getHomeDir():null,
profiles,
systemProperties,
privateRepository,
settingsLoc);
}
public static MavenEmbedder createEmbedder(TaskListener listener, File mavenHome, String profiles) throws MavenEmbedderException, IOException {
return createEmbedder(listener,mavenHome,profiles,new Properties());
}
......
......@@ -96,7 +96,8 @@ public class RedeployPublisher extends Recorder {
listener.getLogger().println("Deploying artifacts to "+url);
try {
MavenEmbedder embedder = MavenUtil.createEmbedder(listener,build.getProject(),null);
MavenEmbedder embedder = MavenUtil.createEmbedder(listener,build);
ArtifactRepositoryLayout layout =
(ArtifactRepositoryLayout) embedder.getContainer().lookup( ArtifactRepositoryLayout.ROLE,"default");
ArtifactRepositoryFactory factory =
......
......@@ -201,7 +201,7 @@ public abstract class MavenAbstractArtifactRecord<T extends AbstractBuild<?,?>>
new TaskThread(this,ListenerAndText.forFile(logFile)) {
protected void perform(TaskListener listener) throws Exception {
try {
MavenEmbedder embedder = MavenUtil.createEmbedder(listener,getBuild().getProject(),null);
MavenEmbedder embedder = MavenUtil.createEmbedder(listener,getBuild());
ArtifactRepositoryLayout layout =
(ArtifactRepositoryLayout) embedder.getContainer().lookup( ArtifactRepositoryLayout.ROLE,"default");
ArtifactRepositoryFactory factory =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册