提交 f53bb92f 编写于 作者: K Kohsuke Kawaguchi

call sequence of this is different from that of Maven2, and this breaks MavenArtifactArchiver.

By the time MavenModuleSetBuild.notifyModuleBuild() is called, we need the processing on one module to be completed.
上级 a4df6c6a
......@@ -393,7 +393,6 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
public void reccordProjectSucceeded( ExecutionEvent event ) {
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( event.getProject() );
mavenBuildProxy2.end();
mavenBuildProxy2.setResult( Result.SUCCESS );
......@@ -423,7 +422,8 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
}
}
}
mavenBuildProxy2.end();
}
/**
* @see org.apache.maven.execution.ExecutionListener#projectFailed(org.apache.maven.execution.ExecutionEvent)
......@@ -438,7 +438,6 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
public void reccordProjectFailed( ExecutionEvent event ) {
MavenBuildProxy2 mavenBuildProxy2 = getMavenBuildProxy2( event.getProject() );
mavenBuildProxy2.end();
mavenBuildProxy2.setResult( Result.FAILURE );
MavenProject mavenProject = event.getProject();
List<MavenReporter> mavenReporters = getMavenReporters( mavenProject );
......@@ -466,7 +465,9 @@ public class Maven3Builder extends AbstractMavenBuilder implements DelegatingCal
}
}
}
}
mavenBuildProxy2.end();
}
/**
* @see org.apache.maven.execution.ExecutionListener#mojoSkipped(org.apache.maven.execution.ExecutionEvent)
......
......@@ -25,6 +25,8 @@ package hudson.maven;
import hudson.FilePath;
import hudson.EnvVars;
import hudson.maven.reporters.MavenArtifact;
import hudson.maven.reporters.MavenArtifactRecord;
import hudson.maven.reporters.SurefireArchiver;
import hudson.slaves.WorkspaceList;
import hudson.slaves.WorkspaceList.Lease;
......@@ -55,6 +57,7 @@ import org.apache.maven.project.MavenProject;
import org.kohsuke.stapler.Ancestor;
import org.kohsuke.stapler.Stapler;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
import java.io.File;
import java.io.FileNotFoundException;
......
......@@ -33,6 +33,8 @@ import hudson.FilePath.FileCallable;
import hudson.Launcher;
import hudson.Util;
import hudson.maven.MavenBuild.ProxyImpl2;
import hudson.maven.reporters.MavenAggregatedArtifactRecord;
import hudson.maven.reporters.MavenArtifactRecord;
import hudson.maven.reporters.MavenFingerprinter;
import hudson.maven.reporters.MavenMailer;
import hudson.model.AbstractProject;
......@@ -95,6 +97,7 @@ import org.apache.maven.project.ProjectBuildingException;
import org.codehaus.plexus.util.PathTool;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.sonatype.aether.transfer.TransferCancelledException;
import org.sonatype.aether.transfer.TransferEvent;
import org.sonatype.aether.transfer.TransferListener;
......@@ -342,6 +345,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
* null if this build is done by earlier version of Hudson that didn't record this information
* (this means the build was done by Maven2.x)
*/
@Exported
public String getMavenVersionUsed() {
return mavenVersionUsed;
}
......@@ -476,7 +480,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
// new AggregatableAction
MavenAggregatedReport mar = aa.createAggregatedAction(this, moduleBuilds);
mar.update(moduleBuilds,newBuild);
actions.add(mar);
addAction(mar);
modified = true;
}
}
......
......@@ -30,6 +30,7 @@ import hudson.maven.MavenUtil;
import hudson.maven.RedeployPublisher.WrappedArtifactRepository;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Api;
import hudson.model.BallColor;
import hudson.model.BuildBadgeAction;
import hudson.model.Result;
......@@ -62,6 +63,8 @@ import org.kohsuke.stapler.HttpResponse;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
/**
* UI to redeploy artifacts after the fact.
......@@ -73,10 +76,12 @@ import org.kohsuke.stapler.StaplerResponse;
* @author Kohsuke Kawaguchi
*/
public abstract class MavenAbstractArtifactRecord<T extends AbstractBuild<?,?>> extends TaskAction implements BuildBadgeAction {
@ExportedBean
public final class Record {
/**
* Repository URL that artifacts were deployed.
*/
@Exported
public final String url;
/**
......@@ -107,26 +112,32 @@ public abstract class MavenAbstractArtifactRecord<T extends AbstractBuild<?,?>>
/**
* Result of the deployment. During the build, this value is null.
*/
@Exported
public Result getResult() {
return result;
}
@Exported
public int getNumber() {
return records.indexOf(this);
}
@Exported
public boolean isBuilding() {
return result==null;
}
@Exported
public Calendar getTimestamp() {
return (Calendar) timeStamp.clone();
}
@Exported
public String getBuildStatusUrl() {
return getIconColor().getImage();
}
@Exported
public BallColor getIconColor() {
if(result==null)
return BallColor.GREY_ANIME;
......@@ -144,6 +155,7 @@ public abstract class MavenAbstractArtifactRecord<T extends AbstractBuild<?,?>>
/**
* Records of a deployment.
*/
@Exported
public final CopyOnWriteArrayList<Record> records = new CopyOnWriteArrayList<Record>();
/**
......@@ -171,6 +183,10 @@ public abstract class MavenAbstractArtifactRecord<T extends AbstractBuild<?,?>>
return REDEPLOY;
}
public Api getApi() {
return new Api(this);
}
public boolean hasBadge() {
if (records != null) {
for (final Record record : records) {
......
......@@ -34,18 +34,22 @@ import hudson.model.Action;
import hudson.model.TaskListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
/**
* Redeploy action for the entire {@link MavenModuleSetBuild}.
*
* @author Kohsuke Kawaguchi
*/
@ExportedBean
public class MavenAggregatedArtifactRecord extends MavenAbstractArtifactRecord<MavenModuleSetBuild> implements MavenAggregatedReport {
public final MavenModuleSetBuild parent;
......@@ -68,17 +72,27 @@ public class MavenAggregatedArtifactRecord extends MavenAbstractArtifactRecord<M
return null;
}
/**
* {@link MavenArtifactRecord}s of every module build contributed to {@link #parent}.
*/
@Exported(inline=true)
public List<MavenArtifactRecord> getModuleRecords() {
List<MavenArtifactRecord> r = new ArrayList<MavenArtifactRecord>();
for (MavenBuild build : parent.getModuleLastBuilds().values()) {
MavenArtifactRecord mar = build.getAction(MavenArtifactRecord.class);
if(mar!=null) r.add(mar);
}
return r;
}
public void deploy(MavenEmbedder embedder, ArtifactRepository deploymentRepository, TaskListener listener) throws MavenEmbedderException, IOException, ComponentLookupException, ArtifactDeploymentException {
if(debug)
listener.getLogger().println("Redeploying artifacts of "+parent+" timestamp="+parent.getTimestamp());
for (MavenBuild build : parent.getModuleLastBuilds().values()) {
MavenArtifactRecord mar = build.getAction(MavenArtifactRecord.class);
if(mar!=null) {
if(debug)
listener.getLogger().println("Deploying module: "+build+" timestamp="+build.getTimestamp());
mar.deploy(embedder,deploymentRepository,listener);
}
for (MavenArtifactRecord mar : getModuleRecords()) {
if(debug)
listener.getLogger().println("Deploying module: "+mar.parent+" timestamp="+mar.parent.getTimestamp());
mar.deploy(embedder,deploymentRepository,listener);
}
}
}
/*
* The MIT License
*
* Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi
* Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
......@@ -39,6 +39,8 @@ import org.apache.maven.artifact.handler.DefaultArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import com.google.common.collect.Maps;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
import java.io.File;
import java.io.FileInputStream;
......@@ -61,10 +63,12 @@ import java.util.logging.Logger;
* @author Kohsuke Kawaguchi
* @since 1.189
*/
@ExportedBean
public final class MavenArtifact implements Serializable {
/**
* Basic parameters of a Maven artifact.
*/
@Exported
public final String groupId, artifactId, version, classifier, type;
/**
......@@ -78,6 +82,7 @@ public final class MavenArtifact implements Serializable {
* use their <tt>finalName</tt> if one is configured.) This is often
* different from {@link #canonicalName}.
*/
@Exported
public final String fileName;
/**
......@@ -88,11 +93,13 @@ public final class MavenArtifact implements Serializable {
* The reason we persist this is that the extension is only available
* through {@link ArtifactHandler}.
*/
@Exported
public final String canonicalName;
/**
* The md5sum for this artifact.
*/
@Exported
public final String md5sum;
public MavenArtifact(Artifact a) throws IOException {
......
/*
* The MIT License
*
* Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi
*
* Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi, CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
......@@ -33,6 +33,7 @@ import hudson.maven.MavenModuleSetBuild;
import hudson.maven.MavenUtil;
import hudson.maven.RedeployPublisher.WrappedArtifactRepository;
import hudson.model.Action;
import hudson.model.Api;
import hudson.model.TaskListener;
import java.io.IOException;
......@@ -50,6 +51,8 @@ import org.apache.maven.artifact.installer.ArtifactInstaller;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
/**
* {@link Action} that remembers {@link MavenArtifact artifact}s that are built.
......@@ -59,15 +62,18 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
* @author Kohsuke Kawaguchi
* @see MavenArtifactArchiver
*/
@ExportedBean
public class MavenArtifactRecord extends MavenAbstractArtifactRecord<MavenBuild> implements AggregatableAction {
/**
* The build to which this record belongs.
*/
@Exported
public final MavenBuild parent;
/**
* POM artifact.
*/
@Exported(inline=true)
public final MavenArtifact pomArtifact;
/**
......@@ -75,11 +81,13 @@ public class MavenArtifactRecord extends MavenAbstractArtifactRecord<MavenBuild>
*
* If this is a POM module, the main artifact contains the same value as {@link #pomArtifact}.
*/
@Exported(inline=true)
public final MavenArtifact mainArtifact;
/**
* Attached artifacts. Can be empty but never null.
*/
@Exported(inline=true)
public final List<MavenArtifact> attachedArtifacts;
public MavenArtifactRecord(MavenBuild parent, MavenArtifact pomArtifact, MavenArtifact mainArtifact, List<MavenArtifact> attachedArtifacts) {
......@@ -102,7 +110,7 @@ public class MavenArtifactRecord extends MavenAbstractArtifactRecord<MavenBuild>
return mainArtifact.isPOM();
}
public MavenAggregatedReport createAggregatedAction(MavenModuleSetBuild build, Map<MavenModule, List<MavenBuild>> moduleBuilds) {
public MavenAggregatedArtifactRecord createAggregatedAction(MavenModuleSetBuild build, Map<MavenModule, List<MavenBuild>> moduleBuilds) {
return new MavenAggregatedArtifactRecord(build);
}
......@@ -144,8 +152,6 @@ public class MavenArtifactRecord extends MavenAbstractArtifactRecord<MavenBuild>
}
}
/**
* Installs the artifact to the local Maven repository.
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册