From ba34bf6470a480bd875f1ab8fb26d8099e25294f Mon Sep 17 00:00:00 2001 From: Vadeg <0xvadeg@gmail.com> Date: Sat, 21 Oct 2017 13:18:52 +0200 Subject: [PATCH 1/2] Add system properties support using explicit configuration tag See gh-10741 --- .../src/it/run-disable-fork/pom.xml | 4 ++ .../src/it/run-disable-fork/verify.groovy | 2 +- .../src/it/run-jvm-system-props/pom.xml | 37 ++++++++++ .../main/java/org/test/SampleApplication.java | 44 ++++++++++++ .../src/it/run-jvm-system-props/verify.groovy | 3 + .../boot/maven/AbstractRunMojo.java | 68 +++++++++++++++++-- .../maven/SystemPropertyFormatterTests.java | 52 ++++++++++++++ 7 files changed, 205 insertions(+), 5 deletions(-) create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/verify.groovy create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml index 142c1c6829..84c639e071 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml @@ -26,6 +26,10 @@ false -Dfoo=bar ${project.build.sourceDirectory} + + value1 + + diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy index baaf7a9a59..93ce0736fa 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy @@ -2,6 +2,6 @@ import static org.junit.Assert.assertTrue def file = new File(basedir, "build.log") assertTrue file.text.contains("I haz been run") -assertTrue file.text.contains("Fork mode disabled, ignoring JVM argument(s) [-Dfoo=bar]") +assertTrue file.text.contains("Fork mode disabled, ignoring JVM argument(s) [-Dfoo=bar -Dproperty1=value1 -Dproperty2]") assertTrue file.text.contains("Fork mode disabled, ignoring working directory configuration") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml new file mode 100644 index 0000000000..318359736c --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + org.springframework.boot.maven.it + run-jvmargs + 0.0.1.BUILD-SNAPSHOT + + UTF-8 + @java.version@ + @java.version@ + + + + + @project.groupId@ + @project.artifactId@ + @project.version@ + + + package + + run + + + -Dfoo="value 1" -Dbar=value2 + + value1 + + + + + + + + + diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java new file mode 100644 index 0000000000..165822591e --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java @@ -0,0 +1,44 @@ +/* + * Copyright 2012-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.test; + +public class SampleApplication { + + public static void main(String[] args) { + String foo = System.getProperty("foo"); + if (!"value 1".equals(foo)) { + throw new IllegalStateException("foo system property mismatch (got [" + foo + "]"); + } + String bar = System.getProperty("bar"); + if (!"value2".equals(bar)) { + throw new IllegalStateException("bar system property mismatch (got [" + bar + "]"); + } + + String property1 = System.getProperty("property1"); + if (!"value1".equals(property1)) { + throw new IllegalStateException("property1 system property mismatch (got [" + property1 + "]"); + } + + String property2 = System.getProperty("property2"); + if (!"".equals(property2)) { + throw new IllegalStateException("property1 system property mismatch (got [" + property2 + "]"); + } + + System.out.println("I haz been run"); + } + +} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/verify.groovy b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/verify.groovy new file mode 100644 index 0000000000..841c4a97de --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/verify.groovy @@ -0,0 +1,3 @@ +def file = new File(basedir, "build.log") +return file.text.contains("I haz been run") + 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 3ec06db410..2923de3417 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 @@ -25,7 +25,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Resource; @@ -169,6 +171,15 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { @Parameter(property = "spring-boot.run.skip", defaultValue = "false") private boolean skip; + /** + * List of JVM system properties. System property consists of key and value + * and it will be transformed to -Dkey=value format. + * In case if value is not specified or empty only key will be provided. + * @since 2.0 + */ + @Parameter(property = "spring-boot.run.systemPropertyVariabled") + private Map systemPropertyVariables; + @Override public void execute() throws MojoExecutionException, MojoFailureException { if (this.skip) { @@ -201,7 +212,8 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { } private boolean hasJvmArgs() { - return (this.jvmArguments != null && !this.jvmArguments.isEmpty()); + return (this.jvmArguments != null && !this.jvmArguments.isEmpty()) || + (this.systemPropertyVariables != null && !this.systemPropertyVariables.isEmpty()); } private boolean hasWorkingDirectorySet() { @@ -232,8 +244,22 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { getLog().warn("Fork mode disabled, ignoring agent"); } if (hasJvmArgs()) { - getLog().warn("Fork mode disabled, ignoring JVM argument(s) [" - + this.jvmArguments + "]"); + String messageTemplate = "Fork mode disabled, ignoring JVM argument(s) [%s%s]"; + String sysPropsStr = ""; + if (this.systemPropertyVariables != null && !this.systemPropertyVariables.isEmpty()) { + sysPropsStr = this.systemPropertyVariables + .entrySet() + .stream() + .map(e -> SystemPropertyFormatter.format(e.getKey(), e.getValue())) + .collect(Collectors.joining(" ")); + } + String message = String.format( + messageTemplate, + this.jvmArguments, + sysPropsStr.isEmpty() ? sysPropsStr : " " + sysPropsStr + ); + + getLog().warn(message); } if (hasWorkingDirectorySet()) { getLog().warn("Fork mode disabled, ignoring working directory configuration"); @@ -292,7 +318,22 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { * @return a {@link RunArguments} defining the JVM arguments */ protected RunArguments resolveJvmArguments() { - return new RunArguments(this.jvmArguments); + final StringBuilder stringBuilder = new StringBuilder(); + if (this.jvmArguments != null) { + stringBuilder.append(this.jvmArguments); + } + if (this.systemPropertyVariables != null) { + String result = this.systemPropertyVariables + .entrySet() + .stream() + .map(e -> SystemPropertyFormatter.format(e.getKey(), e.getValue())) + .collect(Collectors.joining(" ")); + stringBuilder + .append(" ") + .append(result); + + } + return new RunArguments(stringBuilder.toString()); } private void addJvmArgs(List args) { @@ -509,4 +550,23 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { } + /** + * System properties formatter. + */ + 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); + } + return String.format(KEY_VALUE_FORMAT, key, value); + } + } + } 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 new file mode 100644 index 0000000000..97038d636c --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/SystemPropertyFormatterTests.java @@ -0,0 +1,52 @@ +/* + * Copyright 2012-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.maven; + +import org.assertj.core.api.Assertions; +import org.junit.Test; + +import org.springframework.boot.maven.AbstractRunMojo.SystemPropertyFormatter; + +/** + * Tests for {@link AbstractRunMojo.SystemPropertyFormatter} + */ +public class SystemPropertyFormatterTests { + + @Test + public void parseEmpty() throws Exception { + Assertions.assertThat(SystemPropertyFormatter.format(null, null)) + .isEqualTo(""); + } + + @Test + public void parseOnlyKey() throws Exception { + Assertions.assertThat(SystemPropertyFormatter.format("key1", null)) + .isEqualTo("-Dkey1"); + } + + @Test + public void parseKeyWithValue() throws Exception { + Assertions.assertThat(SystemPropertyFormatter.format("key1", "value1")) + .isEqualTo("-Dkey1=value1"); + } + + @Test + public void parseKeyWithEmptyValue() throws Exception { + Assertions.assertThat(SystemPropertyFormatter.format("key1", "")) + .isEqualTo("-Dkey1"); + } +} From 03539d8e16e6333790af7b4f0b19042cce44b187 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 24 Apr 2018 11:42:49 +0200 Subject: [PATCH 2/2] Polish "Add system properties support using explicit configuration tag" Closes gh-10741 --- .../src/it/run-disable-fork/verify.groovy | 2 +- .../src/it/run-jvm-system-props/pom.xml | 2 + .../main/java/org/test/SampleApplication.java | 11 ++-- .../boot/maven/AbstractRunMojo.java | 57 +++++++----------- .../apt/examples/run-system-properties.apt.vm | 59 +++++++++++++++++++ .../src/site/apt/index.apt | 2 + .../src/site/apt/usage.apt.vm | 9 ++- .../src/site/site.xml | 1 + .../maven/SystemPropertyFormatterTests.java | 27 ++++----- 9 files changed, 111 insertions(+), 59 deletions(-) create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy index 93ce0736fa..752e0988f0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy @@ -2,6 +2,6 @@ import static org.junit.Assert.assertTrue def file = new File(basedir, "build.log") assertTrue file.text.contains("I haz been run") -assertTrue file.text.contains("Fork mode disabled, ignoring JVM argument(s) [-Dfoo=bar -Dproperty1=value1 -Dproperty2]") +assertTrue file.text.contains("Fork mode disabled, ignoring JVM argument(s) [-Dproperty1=value1 -Dproperty2 -Dfoo=bar]") assertTrue file.text.contains("Fork mode disabled, ignoring working directory configuration") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml index 318359736c..92f46e8ea6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/pom.xml @@ -27,6 +27,8 @@ value1 + ${project.artifactId} + should-be-ignored diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java index 165822591e..4932bfc419 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/it/run-jvm-system-props/src/main/java/org/test/SampleApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,17 +27,18 @@ public class SampleApplication { if (!"value2".equals(bar)) { throw new IllegalStateException("bar system property mismatch (got [" + bar + "]"); } - String property1 = System.getProperty("property1"); if (!"value1".equals(property1)) { throw new IllegalStateException("property1 system property mismatch (got [" + property1 + "]"); } - String property2 = System.getProperty("property2"); if (!"".equals(property2)) { - throw new IllegalStateException("property1 system property mismatch (got [" + property2 + "]"); + throw new IllegalStateException("property2 system property mismatch (got [" + property2 + "]"); + } + String property3 = System.getProperty("property3"); + if (!"run-jvmargs".equals(property3)) { + throw new IllegalStateException("property3 system property mismatch (got [" + property3 + "]"); } - System.out.println("I haz been run"); } 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 2923de3417..2eb74cad2b 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 @@ -107,6 +107,14 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { @Parameter(property = "spring-boot.run.jvmArguments") private String jvmArguments; + /** + * List of JVM system properties to pass to the process. NOTE: the use of system + * properties means that processes will be started by forking a new JVM. + * @since 2.1.0 + */ + @Parameter + private Map systemPropertyVariables; + /** * Arguments that should be passed to the application. On command line use commas to * separate multiple arguments. @@ -171,15 +179,6 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { @Parameter(property = "spring-boot.run.skip", defaultValue = "false") private boolean skip; - /** - * List of JVM system properties. System property consists of key and value - * and it will be transformed to -Dkey=value format. - * In case if value is not specified or empty only key will be provided. - * @since 2.0 - */ - @Parameter(property = "spring-boot.run.systemPropertyVariabled") - private Map systemPropertyVariables; - @Override public void execute() throws MojoExecutionException, MojoFailureException { if (this.skip) { @@ -213,7 +212,8 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { private boolean hasJvmArgs() { return (this.jvmArguments != null && !this.jvmArguments.isEmpty()) || - (this.systemPropertyVariables != null && !this.systemPropertyVariables.isEmpty()); + (this.systemPropertyVariables != null + && !this.systemPropertyVariables.isEmpty()); } private boolean hasWorkingDirectorySet() { @@ -244,22 +244,10 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { getLog().warn("Fork mode disabled, ignoring agent"); } if (hasJvmArgs()) { - String messageTemplate = "Fork mode disabled, ignoring JVM argument(s) [%s%s]"; - String sysPropsStr = ""; - if (this.systemPropertyVariables != null && !this.systemPropertyVariables.isEmpty()) { - sysPropsStr = this.systemPropertyVariables - .entrySet() - .stream() - .map(e -> SystemPropertyFormatter.format(e.getKey(), e.getValue())) - .collect(Collectors.joining(" ")); - } - String message = String.format( - messageTemplate, - this.jvmArguments, - sysPropsStr.isEmpty() ? sysPropsStr : " " + sysPropsStr - ); - - getLog().warn(message); + RunArguments runArguments = resolveJvmArguments(); + getLog().warn("Fork mode disabled, ignoring JVM argument(s) [" + + Arrays.stream(runArguments.asArray()).collect( + Collectors.joining(" ")) + "]"); } if (hasWorkingDirectorySet()) { getLog().warn("Fork mode disabled, ignoring working directory configuration"); @@ -319,19 +307,15 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { */ protected RunArguments resolveJvmArguments() { final StringBuilder stringBuilder = new StringBuilder(); - if (this.jvmArguments != null) { - stringBuilder.append(this.jvmArguments); - } if (this.systemPropertyVariables != null) { - String result = this.systemPropertyVariables + stringBuilder.append(this.systemPropertyVariables .entrySet() .stream() .map(e -> SystemPropertyFormatter.format(e.getKey(), e.getValue())) - .collect(Collectors.joining(" ")); - stringBuilder - .append(" ") - .append(result); - + .collect(Collectors.joining(" "))); + } + if (this.jvmArguments != null) { + stringBuilder.append(" ").append(this.jvmArguments); } return new RunArguments(stringBuilder.toString()); } @@ -551,11 +535,12 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { } /** - * System properties formatter. + * Format System properties. */ 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) { 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 new file mode 100644 index 0000000000..c1041e657a --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-system-properties.apt.vm @@ -0,0 +1,59 @@ + ----- + Using System Properties + ----- + Stephane Nicoll + ----- + 2018-04-24 + ----- + + System properties can be specified using the <<>> attribute. + The following sets <<>> to <<>> and <<>> to 42: + +--- + + ... + + + 42 + + ... + + ... + + ${project.groupId} + ${project.artifactId} + ${project.version} + + + test + ${my.value} + + + ... + + ... + + ... + + ... + +--- + + If the value is empty or not defined (i.e. <<<>>>), the system property + is set with an empty String as the value. + + 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 + variable expression to be passed literally (unevaluated). + + The <<>> parameter takes precedence over system properties defined with + the mechanism above. In the following example, the value for <<>> is + <<>>: + + +--- +mvn spring-boot:run -Dspring-boot.jvmArguments="-Dproperty1=overridden" +--- + + + diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/index.apt b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/index.apt index a1f9db3d25..f3e47a5d96 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/index.apt +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/index.apt @@ -52,6 +52,8 @@ Spring Boot Maven Plugin * {{{./examples/run-debug.html}Debug the application}} + * {{{./examples/run-system-properties.html}Using system properties}} + * {{{./examples/it-random-port.html}Random port for integration tests}} * {{{./examples/it-skip.html}Skip integration tests}} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/usage.apt.vm b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/usage.apt.vm index 3452b1340b..ffa09b3e1f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/usage.apt.vm +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/usage.apt.vm @@ -135,12 +135,15 @@ mvn spring-boot:run By default the application is executed directly from the Maven JVM. If you need to run in a forked process you can use the 'fork' option. Forking will also occur if the - 'jvmArguments' or 'agent' options are specified, or if devtools is present. + 'jvmArguments', 'systemPropertyVariables' or 'agent' options are specified, or if + devtools is present. If you need to specify some JVM arguments (i.e. for debugging purposes), you can use the <<>> parameter, see {{{./examples/run-debug.html}Debug the application}} - for more details. As a convenience, the profiles to enable are handled by a specific - property (<<>>), see {{{./examples/run-profiles.html}Specify active profiles}}. + for more details. There is also explicit support + {{{./examples/run-system-properties.html}for system properties}}. As a convenience, the + profiles to enable are handled by a specific property (<<>>), see + {{{./examples/run-profiles.html}Specify active profiles}}. Spring Boot 1.3 has introduced <<>>, a module to improve the development-time experience when working on Spring Boot applications. To enable it, just add the following diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/site.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/site.xml index 2ecc646eca..5e1157ab54 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/site.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/site/site.xml @@ -11,6 +11,7 @@ + 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 97038d636c..50b360980b 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,37 +16,36 @@ package org.springframework.boot.maven; -import org.assertj.core.api.Assertions; import org.junit.Test; import org.springframework.boot.maven.AbstractRunMojo.SystemPropertyFormatter; +import static org.assertj.core.api.Assertions.assertThat; + /** - * Tests for {@link AbstractRunMojo.SystemPropertyFormatter} + * Tests for {@link AbstractRunMojo.SystemPropertyFormatter}. */ public class SystemPropertyFormatterTests { @Test - public void parseEmpty() throws Exception { - Assertions.assertThat(SystemPropertyFormatter.format(null, null)) - .isEqualTo(""); + public void parseEmpty() { + assertThat(SystemPropertyFormatter.format(null, null)).isEqualTo(""); } @Test - public void parseOnlyKey() throws Exception { - Assertions.assertThat(SystemPropertyFormatter.format("key1", null)) - .isEqualTo("-Dkey1"); + public void parseOnlyKey() { + assertThat(SystemPropertyFormatter.format("key1", null)).isEqualTo("-Dkey1"); } @Test - public void parseKeyWithValue() throws Exception { - Assertions.assertThat(SystemPropertyFormatter.format("key1", "value1")) + public void parseKeyWithValue() { + assertThat(SystemPropertyFormatter.format("key1", "value1")) .isEqualTo("-Dkey1=value1"); } @Test - public void parseKeyWithEmptyValue() throws Exception { - Assertions.assertThat(SystemPropertyFormatter.format("key1", "")) - .isEqualTo("-Dkey1"); + public void parseKeyWithEmptyValue() { + assertThat(SystemPropertyFormatter.format("key1", "")).isEqualTo("-Dkey1"); } + }