[JENKINS-8711] Post build action deploy to maven repository can fail using "private maven repository" option

This commit is contained in:
Olivier Lamy committed 2011-02-23 00:36:48 +01:00
1 parent a19afb186b
commit 7dc2652349
1 file changed
+38 -2
@@ -30,16 +30,22 @@ import hudson.maven.reporters.MavenAbstractArtifactRecord;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Hudson;
import hudson.model.Result;
import hudson.model.TaskListener;
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.BuildStepMonitor;
import hudson.tasks.Publisher;
import hudson.tasks.Recorder;
import hudson.tasks.Maven.MavenInstallation;
import hudson.tasks.Maven.ProjectWithMaven;
import hudson.util.FormValidation;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Map.Entry;
import net.sf.json.JSONObject;
@@ -115,7 +121,7 @@ public class RedeployPublisher extends Recorder {
listener.getLogger().println("Deploying artifacts to "+url);
try {
MavenEmbedder embedder = MavenUtil.createEmbedder(listener,build);
MavenEmbedder embedder = createEmbedder(listener,build);
ArtifactRepositoryLayout layout =
(ArtifactRepositoryLayout) embedder.lookup( ArtifactRepositoryLayout.ROLE,"default");
ArtifactRepositoryFactory factory =
@@ -140,7 +146,37 @@ public class RedeployPublisher extends Recorder {
return true;
}
/**
*
* copy from MavenUtil but here we have to ignore localRepo path and setting as thoses paths comes
* from the remote node and can not exist in master see http://issues.jenkins-ci.org/browse/JENKINS-8711
*
*/
private 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) {
profiles = ((MavenModuleSet) project).getProfiles();
systemProperties = ((MavenModuleSet) project).getMavenProperties();
}
return MavenUtil.createEmbedder(new MavenEmbedderRequest(listener,
m!=null?m.getHomeDir():null,
profiles,
systemProperties,
privateRepository,
settingsLoc ));
}
/**
* Obtains the {@link MavenAbstractArtifactRecord} that we'll work on.