diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractRunMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractRunMojo.java index 3ddfe3c597..8a26e9d12d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractRunMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractRunMojo.java @@ -569,18 +569,14 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { */ static class SystemPropertyFormatter { - private static final String NO_VALUE_FORMAT = "-D%s"; - - private static final String KEY_VALUE_FORMAT = NO_VALUE_FORMAT + "=%s"; - public static String format(Object key, Object value) { if (key == null) { return ""; } - if (value == null || String.valueOf(value).trim().isEmpty()) { - return String.format(NO_VALUE_FORMAT, key); + if (value == null || String.valueOf(value).isEmpty()) { + return String.format("-D%s", key); } - return String.format(KEY_VALUE_FORMAT, key, value); + return String.format("-D%s=\"%s\"", key, value); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-env-variables.apt.vm b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-env-variables.apt.vm index 855fc8a329..0fc0f6934b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-env-variables.apt.vm +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-env-variables.apt.vm @@ -39,7 +39,8 @@ Dmytro Nosan --- If the value is empty or not defined (i.e. <<<>>>), the env variable is set - with an empty String as the value. + with an empty String as the value. Maven trims values specified in the pom so it is + not possible to specify a env variable who needs to start or end with a space. Any String typed Maven variable can be passed as system properties. Any attempt to pass any other Maven variable type (e.g. a <<>> or a <<>> variable) will cause the diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm index c1041e657a..962b8e6c35 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm @@ -40,7 +40,9 @@ --- If the value is empty or not defined (i.e. <<<>>>), the system property - is set with an empty String as the value. + is set with an empty String as the value. Maven trims values specified in the pom so it + is not possible to specify a System property who needs to start or end with a space via + this mechanism: consider using <<> instead. Any String typed Maven variable can be passed as system properties. Any attempt to pass any other Maven variable type (e.g. a <<>> or a <<>> variable) will cause the diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java index 50b360980b..8a18a8a93f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java @@ -40,7 +40,7 @@ public class SystemPropertyFormatterTests { @Test public void parseKeyWithValue() { assertThat(SystemPropertyFormatter.format("key1", "value1")) - .isEqualTo("-Dkey1=value1"); + .isEqualTo("-Dkey1=\"value1\""); } @Test @@ -48,4 +48,10 @@ public class SystemPropertyFormatterTests { assertThat(SystemPropertyFormatter.format("key1", "")).isEqualTo("-Dkey1"); } + @Test + public void parseKeyWithOnlySpace() { + assertThat(SystemPropertyFormatter.format("key1", " ")) + .isEqualTo("-Dkey1=\" \""); + } + }