#70 - Adapt to changed distribution build.

Splitting distribution build into preparation and the actual distribution build.
This commit is contained in:
Mark Paluch
2018-03-21 11:34:07 +01:00
parent 98fd8eab43
commit 6e6374ea9f
3 changed files with 51 additions and 8 deletions

View File

@@ -31,6 +31,8 @@ import org.springframework.data.release.model.Phase;
import org.springframework.data.release.model.Project;
import org.springframework.data.release.model.Train;
import org.springframework.data.release.model.TrainIteration;
import org.springframework.data.release.utils.ExecutionUtils;
import org.springframework.data.release.utils.Logger;
import org.springframework.plugin.core.PluginRegistry;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
@@ -45,6 +47,7 @@ public class BuildOperations {
private final @NonNull PluginRegistry<BuildSystem, Project> buildSystems;
private final @NonNull MavenProperties properties;
private final @NonNull Logger logger;
/**
* Updates all inter-project dependencies based on the given {@link TrainIteration} and release {@link Phase}.
@@ -78,12 +81,18 @@ public class BuildOperations {
/**
* Triggers the distribution builds for all modules participating in the given {@link Train}.
*
* @param iteration must not be {@literal null}.
* @param train must not be {@literal null}.
*/
public void distributeResources(Train train) {
Assert.notNull(train, "Train must not be null!");
logger.log(train, "Preparing distribution build…");
ExecutionUtils.run(train, module -> {
doWithBuildSystem(module, BuildSystem::prepareDistributionBuild);
});
logger.log(train, "Running distribution build…");
doWithBuildSystem(train, BuildSystem::triggerDistributionBuild);
}

View File

@@ -56,7 +56,15 @@ interface BuildSystem extends Plugin<Project> {
DeploymentInformation deploy(ModuleIteration module);
/**
* Runs the distribution build.
* Runs the distribution build preparation.
*
* @param module must not be {@literal null}.
* @return
*/
Module prepareDistributionBuild(Module module);
/**
* Runs the distribution build. Requires {@link #prepareDistributionBuild(Module) a preparation run}.
*
* @param module must not be {@literal null}.
* @return

View File

@@ -95,6 +95,24 @@ class MavenBuildSystem implements BuildSystem {
return module;
}
/*
* (non-Javadoc)
* @see org.springframework.data.release.build.BuildSystem#prepareDistributionBuild(org.springframework.data.release.model.Module)
*/
@Override
public Module prepareDistributionBuild(Module module) {
return doWithDistributionBuild(module, project -> {
logger.log(project, "Preparing distribution build…");
mvn.execute(project, CommandLine.of(Goal.CLEAN, goal("generate-sources"), //
profile("distribute"), Argument.of("-B")));
logger.log(project, "Successfully prepared distribution build!");
});
}
/*
* (non-Javadoc)
* @see org.springframework.data.release.build.BuildSystem#triggerDistributionBuild(org.springframework.data.release.model.Module)
@@ -102,6 +120,19 @@ class MavenBuildSystem implements BuildSystem {
@Override
public Module triggerDistributionBuild(Module module) {
return doWithDistributionBuild(module, project -> {
logger.log(project, "Triggering distribution build…");
mvn.execute(project, CommandLine.of(Goal.DEPLOY, //
SKIP_TESTS, profile("distribute"), Argument.of("-B")));
logger.log(project, "Successfully finished distribution build!");
});
}
private Module doWithDistributionBuild(Module module, Consumer<Project> consumer) {
Project project = module.getProject();
if (BUILD.equals(project)) {
@@ -113,12 +144,7 @@ class MavenBuildSystem implements BuildSystem {
return module;
}
logger.log(project, "Triggering distribution build…");
mvn.execute(project, CommandLine.of(Goal.CLEAN, Goal.DEPLOY, //
SKIP_TESTS, profile("distribute"), Argument.of("-B")));
logger.log(project, "Successfully finished distribution build!");
consumer.accept(project);
return module;
}