From 663ba13468ca1d94a42d26b46e1f7fc5a4ad2e1a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 20 Nov 2017 11:15:03 +0100 Subject: [PATCH] Fixed invalid system props tokenizing --- .../cloud/release/internal/project/ProjectBuilder.java | 10 ++++++++-- .../release/internal/project/ProjectBuilderTests.java | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java index 3794e0cf..cda335e9 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/project/ProjectBuilder.java @@ -106,10 +106,16 @@ public class ProjectBuilder { */ private String[] substituteSystemProps(String... commands) { boolean containsSystemProps = this.properties.getMaven().getSystemProperties().contains("-D"); - String[] splitSystemProps = StringUtils.tokenizeToStringArray(this.properties.getMaven() + String[] splitSystemProps = StringUtils.delimitedListToStringArray(this.properties.getMaven() .getSystemProperties(), "-D"); + // first element might be empty even though the second one contains values + if (splitSystemProps.length > 1) { + splitSystemProps = StringUtils.isEmpty(splitSystemProps[0]) ? + Arrays.copyOfRange(splitSystemProps, 1, splitSystemProps.length) : + splitSystemProps; + } String[] systemPropsWithPrefix = containsSystemProps ? Arrays.stream(splitSystemProps) - .map(s -> "-D" + s) + .map(s -> "-D" + s.trim()) .collect(Collectors.toList()) .toArray(new String[splitSystemProps.length]) : splitSystemProps; final AtomicInteger index = new AtomicInteger(-1); diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java index 20850c84..02aeafe9 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/project/ProjectBuilderTests.java @@ -133,14 +133,14 @@ public class ProjectBuilderTests { public void should_successfully_execute_a_deploy_command_with_sys_props_placeholder() throws Exception { ReleaserProperties properties = new ReleaserProperties(); properties.getMaven().setDeployCommand("echo \"{{systemProps}}\""); - properties.getMaven().setSystemProperties("hello world"); + properties.getMaven().setSystemProperties("-Dhello=hello-world"); properties.setWorkingDir(tmpFile("/builder/resolved").getPath()); ProjectBuilder builder = new ProjectBuilder(properties, executor(properties)); builder.deploy(); then(asString(tmpFile("/builder/resolved/resolved.log"))) - .contains("hello world"); + .contains("-Dhello=hello-world"); } @Test