Properly handle values with spaces

Closes gh-10741
This commit is contained in:
Stephane Nicoll 2018-04-24 16:26:51 +02:00
parent d4729f5389
commit fd47b728c1
4 changed files with 15 additions and 10 deletions

View File

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

View File

@ -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

View File

@ -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

View File

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