From 00449bef6a06347464bb83d8fe0a22db809d81bc Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 4 Jun 2018 17:23:21 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Use=20app=E2=80=A6DefaultJvmArgs=20as=20con?= =?UTF-8?q?vention=20for=20start=20script's=20defaultJvmOpts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes gh-12631 --- .../src/main/asciidoc/reacting.adoc | 6 ++++-- .../boot/gradle/plugin/ApplicationPluginAction.java | 2 ++ .../plugin/ApplicationPluginActionIntegrationTests.java | 8 ++++++++ .../ApplicationPluginActionIntegrationTests.gradle | 9 +++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) 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 e7c730f9f59..11d676b9f92 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 aa9ad97b3fb..0a9b8398964 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 0870b3ca29c..9fc22f37e59 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 18509a038c3..d65bb50147f 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" + } + } +} From 70c0d6a005ad47c992ee2fabe06a244311c12d03 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 4 Jun 2018 17:42:06 +0100 Subject: [PATCH 2/2] Test the Gradle plugin against Gradle 4.8 Closes gh-13359 --- .../boot/gradle/junit/GradleCompatibilitySuite.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilitySuite.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilitySuite.java index e02b8490f9b..458530ff38a 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilitySuite.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilitySuite.java @@ -39,7 +39,7 @@ import org.springframework.boot.gradle.testkit.GradleBuild; public final class GradleCompatibilitySuite extends Suite { private static final List GRADLE_VERSIONS = Arrays.asList("default", "4.1", - "4.2", "4.3", "4.4.1", "4.5.1", "4.6", "4.7"); + "4.2", "4.3", "4.4.1", "4.5.1", "4.6", "4.7", "4.8"); public GradleCompatibilitySuite(Class clazz) throws InitializationError { super(clazz, createRunners(clazz));