[[running-your-application]]
== Running your application with Gradle

To run your application without first building an archive use the `bootRun` task:

[source,bash,indent=0,subs="verbatim"]
----
	$ ./gradlew bootRun
----

The `bootRun` task is an instance of
{boot-run-javadoc}[`BootRun`] which is a `JavaExec` subclass. As such, all of the
{gradle-dsl}/org.gradle.api.tasks.JavaExec.html[usual configuration options] for executing
a Java process in Gradle are available to you. The task is automatically configured to use
the runtime classpath of the main source set.

By default, the main class will be configured automatically by looking for a class with a
`public static void main(String[])` method in directories on the task's classpath.

The main class can also be configured explicity using the task's `main` property:

[source,groovy,indent=0,subs="verbatim"]
----
include::../gradle/running/boot-run-main.gradle[tags=main]
----

Alternatively, if the {application-plugin}[`application` plugin] has been applied
its `mainClassName` project property can be used:

[source,groovy,indent=0,subs="verbatim"]
----
include::../gradle/running/application-plugin-main-class-name.gradle[tags=main-class]
----



[[running-your-application-reloading-resources]]
=== Reloading resources
If devtools has been added to your project it will automatically monitor your
application for changes. Alternatively, you can configure `bootRun` such that your
application's static resources are loaded from their source location:

[source,groovy,indent=0,subs="verbatim"]
----
include::../gradle/running/boot-run-source-resources.gradle[tags=source-resources]
----

This makes them reloadable in the live application which can be helpful at development
time.
