diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml
new file mode 100644
index 00000000000..1cafbfc7890
--- /dev/null
+++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+ org.springframework.boot.maven.it
+ run-disable-fork
+ 0.0.1.BUILD-SNAPSHOT
+
+ UTF-8
+
+
+
+
+ @project.groupId@
+ @project.artifactId@
+ @project.version@
+
+
+ package
+
+ run
+
+
+ false
+ -Dfoo=bar
+
+
+
+
+
+
+
diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/src/main/java/org/test/SampleApplication.java b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/src/main/java/org/test/SampleApplication.java
new file mode 100644
index 00000000000..dd90d636156
--- /dev/null
+++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/src/main/java/org/test/SampleApplication.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2012-2014 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 ("bar".equals(foo)) {
+ throw new IllegalStateException("System property foo should not be available. Fork disabled");
+ }
+ System.out.println("I haz been run");
+ }
+
+}
diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy
new file mode 100644
index 00000000000..cb445e7a2c9
--- /dev/null
+++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/run-disable-fork/verify.groovy
@@ -0,0 +1,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]")
+
diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java
index e30a4cc796d..2f4dbfc3764 100644
--- a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java
+++ b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java
@@ -135,8 +135,8 @@ public class RunMojo extends AbstractDependencyFilterMojo {
* is only used if an agent or jvmArguments are specified.
* @since 1.2
*/
- @Parameter(property = "fork", defaultValue = "false")
- private boolean fork;
+ @Parameter(property = "fork")
+ private Boolean fork;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
@@ -171,10 +171,17 @@ public class RunMojo extends AbstractDependencyFilterMojo {
findAgent();
boolean hasAgent = (this.agent != null && this.agent.length > 0);
boolean hasJvmArgs = (this.jvmArguments != null && this.jvmArguments.length() > 0);
- if (this.fork || hasAgent || hasJvmArgs) {
+ boolean hasFork = this.fork != null ? this.fork : (hasAgent || hasJvmArgs);
+ if (hasFork) {
runWithForkedJvm(startClassName);
}
else {
+ if (hasAgent) {
+ getLog().warn("Fork mode disabled, ignoring agent");
+ }
+ if (hasJvmArgs) {
+ getLog().warn("Fork mode disabled, ignoring JVM argument(s) ["+this.jvmArguments+"]");
+ }
runWithMavenJvm(startClassName);
}
}
diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-debug.apt.vm b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-debug.apt.vm
index 6ff9cdb4ced..c6b362b4e6f 100644
--- a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-debug.apt.vm
+++ b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/run-debug.apt.vm
@@ -6,9 +6,11 @@
2014-05-14
-----
- The <<>> goal forks a process for the boot application. It is possible to specify jvm arguments
- to that forked process. The following configuration suspend the process until a debugger has joined
- on port 5005
+ By default, the <<>> goal runs in the same process unless jvm arguments or an agent have been specified. You
+ can enable or disable forking explicitly using the <<>> attribute.
+
+ If you need to fork the process and debug it you can add the necessary JVM arguments to enable remote debugging. The
+ following configuration suspend the process until a debugger has joined on port 5005:
---
@@ -36,8 +38,8 @@
---
- These arguments can be specified on the command line as well, make sure to wrap that properly,
- that is:
+ Note that since you specified some JVM arguments, the process is forked automatically. These arguments can be
+ specified on the command line as well, make sure to wrap that properly, that is:
---
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"