Properly handle values with spaces

Closes gh-10741
pull/12955/merge
Stephane Nicoll 7 years ago
parent d4729f5389
commit fd47b728c1

@ -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);
}
}

@ -39,7 +39,8 @@ Dmytro Nosan
---
If the value is empty or not defined (i.e. <<<<MY_ENV/>>>>), 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 <<<List>>> or a <<<URL>>> variable) will cause the

@ -40,7 +40,9 @@
---
If the value is empty or not defined (i.e. <<<<my-property/>>>>), 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 <<<jvmArguments>> instead.
Any String typed Maven variable can be passed as system properties. Any attempt to pass
any other Maven variable type (e.g. a <<<List>>> or a <<<URL>>> variable) will cause the

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

Loading…
Cancel
Save