diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/running.adoc b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/running.adoc index 075882296a..369b633ff2 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/running.adoc +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/running.adoc @@ -9,13 +9,13 @@ The plugin includes a run goal which can be used to launch your application from Application arguments can be specified using the `arguments` parameter, see <> for more details. -By default the application is executed in a forked process and setting properties on the command-line will not affect the application. +The application is executed in a forked process and setting properties on the command-line will not affect the application. If you need to specify some JVM arguments (that is for debugging purposes), you can use the `jvmArguments` parameter, see <> for more details. There is also explicit support for <> and <>. As enabling a profile is quite common, there is dedicated `profiles` property that offers a shortcut for `-Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"`, see <>. -Although this is not recommended, it is possible to execute the application directly from the Maven JVM by disabling the `fork` property. +Although this is not recommended (and deprecated), it is possible to execute the application directly from the Maven JVM by disabling the `fork` property. Doing so means that the `jvmArguments`, `systemPropertyVariables`, `environmentVariables` and `agents` options are ignored. Spring Boot `devtools` is a module to improve the development-time experience when working on Spring Boot applications. @@ -73,7 +73,7 @@ include::goals/run.adoc[leveloffset=+1] [[run.examples.debug]] === Debug the Application -By default, the `run` goal runs your application in a forked process. +The `run` goal runs your application in a forked process. If you need to debug it, you should add the necessary JVM arguments to enable remote debugging. The following configuration suspend the process until a debugger has joined on port 5005: 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 a23bb5860c..cbcba09bc9 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 @@ -192,12 +192,14 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { private File classesDirectory; /** - * Flag to indicate if the run processes should be forked. Disabling forking will - * disable some features such as an agent, custom JVM arguments, devtools or - * specifying the working directory to use. + * Deprecated. Flag to indicate if the run processes should be forked. Disabling + * forking will disable some features such as an agent, custom JVM arguments, devtools + * or specifying the working directory to use. * @since 1.2.0 + * @deprecated since 2.7.0 for removal in 3.0.0 with no replacement */ @Parameter(property = "spring-boot.run.fork", defaultValue = "true") + @Deprecated private boolean fork; /** @@ -226,7 +228,9 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { /** * Specify if the application process should be forked. * @return {@code true} if the application process should be forked + * @deprecated since 2.7.0 for removal in 3.0.0 with no replacement */ + @Deprecated protected boolean isFork() { return this.fork; } @@ -244,6 +248,7 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { return this.workingDirectory != null; } + @SuppressWarnings("deprecation") private void run(String startClassName) throws MojoExecutionException, MojoFailureException { boolean fork = isFork(); this.project.getProperties().setProperty("_spring.boot.fork.enabled", Boolean.toString(fork)); @@ -304,7 +309,9 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo { * @param arguments the class arguments * @throws MojoExecutionException in case of MOJO execution errors * @throws MojoFailureException in case of MOJO failures + * @deprecated since 2.7.0 for removal in 3.0.0 with no replacement */ + @Deprecated protected abstract void runWithMavenJvm(String startClassName, String... arguments) throws MojoExecutionException, MojoFailureException; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java index 959dbc4872..3064c930f6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java @@ -71,6 +71,7 @@ public class RunMojo extends AbstractRunMojo { } @Override + @SuppressWarnings("deprecation") protected RunArguments resolveJvmArguments() { RunArguments jvmArguments = super.resolveJvmArguments(); if (isFork() && this.optimizedLaunch) { @@ -114,6 +115,7 @@ public class RunMojo extends AbstractRunMojo { } @Override + @Deprecated protected void runWithMavenJvm(String startClassName, String... arguments) throws MojoExecutionException { IsolatedThreadGroup threadGroup = new IsolatedThreadGroup(startClassName); Thread launchThread = new Thread(threadGroup, new LaunchRunner(startClassName, arguments), "main"); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java index 8fe7c84e34..b7d60de843 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java @@ -113,6 +113,7 @@ public class StartMojo extends AbstractRunMojo { } @Override + @SuppressWarnings("deprecation") protected RunArguments resolveApplicationArguments() { RunArguments applicationArguments = super.resolveApplicationArguments(); applicationArguments.getArgs().addLast(ENABLE_MBEAN_PROPERTY); @@ -123,6 +124,7 @@ public class StartMojo extends AbstractRunMojo { } @Override + @SuppressWarnings("deprecation") protected RunArguments resolveJvmArguments() { RunArguments jvmArguments = super.resolveJvmArguments(); if (isFork()) { @@ -138,6 +140,7 @@ public class StartMojo extends AbstractRunMojo { } @Override + @Deprecated protected void runWithMavenJvm(String startClassName, String... arguments) throws MojoExecutionException { IsolatedThreadGroup threadGroup = new IsolatedThreadGroup(startClassName); Thread launchThread = new Thread(threadGroup, new LaunchRunner(startClassName, arguments), @@ -171,6 +174,7 @@ public class StartMojo extends AbstractRunMojo { "Spring application did not start before the configured timeout (" + (wait * maxAttempts) + "ms"); } + @SuppressWarnings("deprecation") private void waitForSpringApplication() throws MojoFailureException, MojoExecutionException { try { if (isFork()) {