diff --git a/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc b/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc index c1c6c10885..54c194b765 100644 --- a/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc +++ b/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc @@ -768,7 +768,7 @@ entropy for session keys.) [[using-boot-running-with-the-gradle-plugin]] === Using the Gradle plugin -The Spring Boot Gradle plugin also includes a `run` goal which can be used to run +The Spring Boot Gradle plugin also includes a `bootRun` task which can be used to run your application in an exploded form. The `bootRun` task is added whenever you import the `spring-boot-plugin` diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy index df85b415f7..dee21899d0 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy @@ -18,8 +18,6 @@ package org.springframework.boot.gradle import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.plugins.ApplicationPlugin -import org.gradle.api.plugins.BasePlugin import org.gradle.api.plugins.JavaPlugin import org.springframework.boot.gradle.agent.AgentPluginFeatures import org.springframework.boot.gradle.dependencymanagement.DependencyManagementPluginFeatures @@ -41,7 +39,6 @@ class SpringBootPlugin implements Plugin { project.getExtensions().create("springBoot", SpringBootPluginExtension) project.getPlugins().apply(JavaPlugin) - project.getPlugins().apply(ApplicationPlugin) new AgentPluginFeatures().apply(project) new RepackagePluginFeatures().apply(project) diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/FindMainClassTask.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/FindMainClassTask.java index f38e830288..cb0b1fea96 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/FindMainClassTask.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/FindMainClassTask.java @@ -22,6 +22,7 @@ import org.gradle.api.DefaultTask; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.plugins.ApplicationPluginConvention; +import org.gradle.api.plugins.ExtraPropertiesExtension; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskAction; import org.springframework.boot.gradle.SpringBootPluginExtension; @@ -33,14 +34,24 @@ import org.springframework.boot.loader.tools.MainClassFinder; * * @author Dave Syer * @author Phillip Webb + * @author Andy Wilkinson */ public class FindMainClassTask extends DefaultTask { @TaskAction public void setMainClassNameProperty() { Project project = getProject(); - if (project.property("mainClassName") == null) { - project.setProperty("mainClassName", findMainClass()); + if (!project.hasProperty("mainClassName") + || project.property("mainClassName") == null) { + String mainClass = findMainClass(); + if (project.hasProperty("mainClassName")) { + project.setProperty("mainClassName", mainClass); + } + else { + ExtraPropertiesExtension extraProperties = (ExtraPropertiesExtension) project + .getExtensions().getByName("ext"); + extraProperties.set("mainClassName", mainClass); + } } } @@ -58,13 +69,14 @@ public class FindMainClassTask extends DefaultTask { ApplicationPluginConvention application = (ApplicationPluginConvention) project .getConvention().getPlugins().get("application"); - // Try the Application extension setting - if (mainClass == null && application.getMainClassName() != null) { + + if (mainClass == null && application != null) { + // Try the Application extension setting mainClass = application.getMainClassName(); } - Task runTask = getProject().getTasks().getByName("run"); - if (mainClass == null && runTask.hasProperty("main")) { + Task runTask = project.getTasks().findByName("run"); + if (mainClass == null && runTask != null) { mainClass = (String) runTask.property("main"); } @@ -91,10 +103,10 @@ public class FindMainClassTask extends DefaultTask { if (bootExtension.getMainClass() == null) { bootExtension.setMainClass(mainClass); } - if (application.getMainClassName() == null) { + if (application != null && application.getMainClassName() == null) { application.setMainClassName(mainClass); } - if (!runTask.hasProperty("main")) { + if (runTask != null && !runTask.hasProperty("main")) { runTask.setProperty("main", mainClass); }