diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java index 6243efcf..d15c5af2 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/ReleaserProperties.java @@ -33,11 +33,14 @@ public class ReleaserProperties { */ private String workingDir; + private Git git = new Git(); + private Pom pom = new Pom(); - private Build build = new Build(); + private Maven maven = new Maven(); + + public static class Git { - public static class Pom { /** * URL to Spring Cloud Release Git repository */ @@ -48,20 +51,6 @@ public class ReleaserProperties { */ private String cloneDestinationDir; - /** - * Which branch of Spring Cloud Release should be checked out. Defaults to {@code master} - */ - private String branch = "master"; - - /** - * List of regular expressions of ignored poms. Defaults to test projects and samples. - */ - @SuppressWarnings("unchecked") - private List ignoredPomRegex = Arrays.asList(new String[] { - "^.*spring-cloud-contract-maven-plugin/src/test/projects/.*$", - "^.*samples/standalone.*$" - }); - public String getSpringCloudReleaseGitUrl() { return this.springCloudReleaseGitUrl; } @@ -78,6 +67,24 @@ public class ReleaserProperties { this.cloneDestinationDir = cloneDestinationDir; } + } + + public static class Pom { + + /** + * Which branch of Spring Cloud Release should be checked out. Defaults to {@code master} + */ + private String branch = "master"; + + /** + * List of regular expressions of ignored poms. Defaults to test projects and samples. + */ + @SuppressWarnings("unchecked") + private List ignoredPomRegex = Arrays.asList(new String[] { + "^.*spring-cloud-contract-maven-plugin/src/test/projects/.*$", + "^.*samples/standalone.*$" + }); + public String getBranch() { return this.branch; } @@ -95,24 +102,29 @@ public class ReleaserProperties { } } - public static class Build { + public static class Maven { /** * Command to be executed to build the project */ - private String command = "./mvnw clean install -Pdocs"; + private String buildCommand = "./mvnw clean install -Pdocs"; + + /** + * Command to be executed to deploy a built project + */ + private String deployCommand = "./mvnw deploy -DskipTests -Pfast"; /** * Max wait time in minutes for the build to finish */ private long waitTimeInMinutes = 20; - public String getCommand() { - return this.command; + public String getBuildCommand() { + return this.buildCommand; } - public void setCommand(String command) { - this.command = command; + public void setBuildCommand(String buildCommand) { + this.buildCommand = buildCommand; } public long getWaitTimeInMinutes() { @@ -122,6 +134,14 @@ public class ReleaserProperties { public void setWaitTimeInMinutes(long waitTimeInMinutes) { this.waitTimeInMinutes = waitTimeInMinutes; } + + public String getDeployCommand() { + return deployCommand; + } + + public void setDeployCommand(String deployCommand) { + this.deployCommand = deployCommand; + } } public String getWorkingDir() { @@ -132,6 +152,14 @@ public class ReleaserProperties { this.workingDir = workingDir; } + public Git getGit() { + return this.git; + } + + public void setGit(Git git) { + this.git = git; + } + public Pom getPom() { return this.pom; } @@ -140,11 +168,11 @@ public class ReleaserProperties { this.pom = pom; } - public Build getBuild() { - return this.build; + public Maven getMaven() { + return this.maven; } - public void setBuild(Build build) { - this.build = build; + public void setMaven(Maven maven) { + this.maven = maven; } } diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/builder/ProjectBuilder.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/builder/ProjectBuilder.java index 18f3f65d..9aa6423b 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/builder/ProjectBuilder.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/builder/ProjectBuilder.java @@ -37,8 +37,8 @@ public class ProjectBuilder { public void build() { try { - String[] commands = this.properties.getBuild().getCommand().split(" "); - long waitTimeInMinutes = this.properties.getBuild().getWaitTimeInMinutes(); + String[] commands = this.properties.getMaven().getBuildCommand().split(" "); + long waitTimeInMinutes = this.properties.getMaven().getWaitTimeInMinutes(); this.executor.runCommand(commands, waitTimeInMinutes); assertNoHtmlFilesContainUnresolvedTags(); log.info("No HTML files from docs contain unresolved tags"); diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectUpdater.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectUpdater.java index 5272bce0..7b737484 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectUpdater.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/ProjectUpdater.java @@ -44,8 +44,8 @@ public class ProjectUpdater { public ProjectUpdater(ReleaserProperties properties) { try { - this.destinationDir = properties.getPom().getCloneDestinationDir() != null ? - new File(properties.getPom().getCloneDestinationDir()) : + this.destinationDir = properties.getGit().getCloneDestinationDir() != null ? + new File(properties.getGit().getCloneDestinationDir()) : Files.createTempDirectory("releaser").toFile(); this.properties = properties; this.gitRepo = new GitRepo(this.destinationDir); @@ -63,7 +63,7 @@ public class ProjectUpdater { */ public void updateProject(File projectRoot) { File clonedScRelease = this.gitRepo.cloneProject( - URI.create(this.properties.getPom().getSpringCloudReleaseGitUrl())); + URI.create(this.properties.getGit().getSpringCloudReleaseGitUrl())); this.gitRepo.checkout(clonedScRelease, this.properties.getPom().getBranch()); SCReleasePomParser sCReleasePomParser = new SCReleasePomParser(clonedScRelease); Versions versions = sCReleasePomParser.allVersions(); diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/AcceptanceTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/AcceptanceTests.java index aad4bee6..064e1d5a 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/AcceptanceTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/AcceptanceTests.java @@ -73,7 +73,7 @@ public class AcceptanceTests { private ReleaserProperties releaserProperties() throws URISyntaxException { ReleaserProperties releaserProperties = new ReleaserProperties(); - releaserProperties.getPom().setSpringCloudReleaseGitUrl(file("/projects/spring-cloud-release/").toURI().getPath()); + releaserProperties.getGit().setSpringCloudReleaseGitUrl(file("/projects/spring-cloud-release/").toURI().getPath()); return releaserProperties; } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/builder/ProjectBuilderTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/builder/ProjectBuilderTests.java index bab5fb3a..a95f38dd 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/builder/ProjectBuilderTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/builder/ProjectBuilderTests.java @@ -26,7 +26,7 @@ public class ProjectBuilderTests { @Test public void should_successfully_execute_a_command_when_after_running_there_is_no_html_file_with_unresolved_tag() throws Exception { ReleaserProperties properties = new ReleaserProperties(); - properties.getBuild().setCommand("ls -al"); + properties.getMaven().setBuildCommand("ls -al"); properties.setWorkingDir(file("/projects/builder/resolved").getPath()); ProjectBuilder builder = new ProjectBuilder(properties, executor(properties)); @@ -40,7 +40,7 @@ public class ProjectBuilderTests { @Test public void should_throw_exception_when_after_running_there_is_an_html_file_with_unresolved_tag() throws Exception { ReleaserProperties properties = new ReleaserProperties(); - properties.getBuild().setCommand("ls -al"); + properties.getMaven().setBuildCommand("ls -al"); properties.setWorkingDir(file("/projects/builder/unresolved").getPath()); ProjectBuilder builder = new ProjectBuilder(properties, executor(properties)); @@ -50,8 +50,8 @@ public class ProjectBuilderTests { @Test public void should_throw_exception_when_command_took_too_long_to_execute() throws Exception { ReleaserProperties properties = new ReleaserProperties(); - properties.getBuild().setCommand("sleep 1"); - properties.getBuild().setWaitTimeInMinutes(0); + properties.getMaven().setBuildCommand("sleep 1"); + properties.getMaven().setWaitTimeInMinutes(0); properties.setWorkingDir(file("/projects/builder/unresolved").getPath()); ProjectBuilder builder = new ProjectBuilder(properties, executor(properties));