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 010369758d37..4877d9a0057e 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 @@ -19,6 +19,7 @@ import java.io.File; import java.net.URL; import java.net.URLClassLoader; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; import org.springframework.boot.loader.tools.JavaExecutable; @@ -53,6 +55,9 @@ public class RunMojo extends AbstractRunMojo { */ private Boolean hasDevtools; + @Parameter(property = "optimizedLaunch", defaultValue = "true") + private boolean optimizedLaunch = true; + @Override protected boolean enableForkByDefault() { return super.enableForkByDefault() || hasDevtools(); @@ -69,6 +74,10 @@ protected void logDisabledFork() { @Override protected void runWithForkedJvm(File workingDirectory, List args, Map environmentVariables) throws MojoExecutionException { + if (this.optimizedLaunch) { + String[] optimizedLaunchArgs = { "-Xverify:none", "-XX:TieredStopAtLevel=1" }; + Collections.addAll(args, optimizedLaunchArgs); + } int exitCode = forkJvm(workingDirectory, args, environmentVariables); if (exitCode == 0 || exitCode == EXIT_CODE_SIGINT) { return;