diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc index e7c730f9f5..11d676b9f9 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/asciidoc/reacting.adoc @@ -70,8 +70,10 @@ applied to a project, the Spring Boot plugin will automatically import the When Gradle's {application-plugin}[`application` plugin] is applied to a project, the Spring Boot plugin: -1. Creates a `CreateStartScripts` task named `bootStartScripts` that will creates scripts - that launch the artifact in the `bootArchives` configuration using `java -jar`. +1. Creates a `CreateStartScripts` task named `bootStartScripts` that will create scripts + that launch the artifact in the `bootArchives` configuration using `java -jar`. The + task is configured to use the `applicationDefaultJvmArgs` property as a convention + for its `defaultJvmOpts` property. 2. Creates a new distribution named `boot` and configures it to contain the artifact in the `bootArchives` configuration in its `lib` directory and the start scripts in its `bin` directory. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java index aa9ad97b3f..0a9b839896 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java @@ -77,6 +77,8 @@ final class ApplicationPluginAction implements PluginApplicationAction { () -> new File(project.getBuildDir(), "bootScripts")); bootStartScripts.getConventionMapping().map("applicationName", applicationConvention::getApplicationName); + bootStartScripts.getConventionMapping().map("defaultJvmOpts", + applicationConvention::getApplicationDefaultJvmArgs); CopySpec binCopySpec = project.copySpec().into("bin").from(bootStartScripts); binCopySpec.setFileMode(0x755); distribution.getContents().with(binCopySpec); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java index 0870b3ca29..9fc22f37e5 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java @@ -73,6 +73,14 @@ public class ApplicationPluginActionIntegrationTests { .contains("bootStartScripts exists = true"); } + @Test + public void createsBootStartScriptsTaskUsesApplicationPluginsDefaultJvmOpts() { + assertThat(this.gradleBuild + .build("startScriptsDefaultJvmOpts", "-PapplyApplicationPlugin") + .getOutput()).contains( + "bootStartScripts defaultJvmOpts = [-Dcom.example.a=alpha, -Dcom.example.b=bravo]"); + } + @Test public void zipDistributionForJarCanBeBuilt() throws IOException { assertThat( diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle index 18509a038c..d65bb50147 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.gradle @@ -8,6 +8,7 @@ apply plugin: 'org.springframework.boot' if (project.hasProperty('applyApplicationPlugin')) { apply plugin: 'application' + applicationDefaultJvmArgs = ['-Dcom.example.a=alpha', '-Dcom.example.b=bravo'] } task('taskExists') { @@ -31,3 +32,11 @@ task('javaCompileEncoding') { } } } + +task('startScriptsDefaultJvmOpts') { + doFirst { + tasks.withType(org.springframework.boot.gradle.tasks.application.CreateBootStartScripts) { + println "$name defaultJvmOpts = $defaultJvmOpts" + } + } +}