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=\" \"");
+ }
+
}