Package org.gradle.api.plugins

## Interface JavaApplication

-     public interface JavaApplication

  Configuration for a Java application, defining how to assemble the application.

  An instance of this type is added as a project extension by the Java application plugin under the name 'application'.

       plugins {
           id 'application'
       }

       application {
         mainClass.set("com.foo.bar.FooBar")
       }

  Since:
    4.10

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Iterable<java.lang.String>` | `getApplicationDefaultJvmArgs()` | Array of string arguments to pass to the JVM when running the application
    `CopySpec` | `getApplicationDistribution()` | The specification of the contents of the distribution.
    `java.lang.String` | `getApplicationName()` | The name of the application.
    `java.lang.String` | `getExecutableDir()` | Directory to place executables in
    `Property<java.lang.String>` | `getMainClass()` | The fully qualified name of the application's main class.
    `Property<java.lang.String>` | `getMainModule()` | The name of the application's Java module if it should run as a module.
    `void` | `setApplicationDefaultJvmArgs​(java.lang.Iterable<java.lang.String> applicationDefaultJvmArgs)` | Array of string arguments to pass to the JVM when running the application
    `void` | `setApplicationDistribution​(CopySpec applicationDistribution)` |
    `void` | `setApplicationName​(java.lang.String applicationName)` | The name of the application.
    `void` | `setExecutableDir​(java.lang.String executableDir)` | Directory to place executables in

- - ### Method Detail

    - #### getApplicationName

          java.lang.String getApplicationName()

      The name of the application.

    - #### setApplicationName

          void setApplicationName​(java.lang.String applicationName)

      The name of the application.

    - #### getMainModule

          Property<java.lang.String> getMainModule()

      The name of the application's Java module if it should run as a module.
      Since:
        6.4

    - #### getMainClass

          Property<java.lang.String> getMainClass()

      The fully qualified name of the application's main class.
      Since:
        6.4

    - #### getApplicationDefaultJvmArgs

          java.lang.Iterable<java.lang.String> getApplicationDefaultJvmArgs()

      Array of string arguments to pass to the JVM when running the application

    - #### setApplicationDefaultJvmArgs

          void setApplicationDefaultJvmArgs​(java.lang.Iterable<java.lang.String> applicationDefaultJvmArgs)

      Array of string arguments to pass to the JVM when running the application

    - #### getExecutableDir

          java.lang.String getExecutableDir()

      Directory to place executables in

    - #### setExecutableDir

          void setExecutableDir​(java.lang.String executableDir)

      Directory to place executables in

    - #### getApplicationDistribution

          CopySpec getApplicationDistribution()

      The specification of the contents of the distribution.

      Use this `CopySpec` to include extra files/resource in the application distribution.

           plugins {
               id 'application'
           }

           application {
               applicationDistribution.from("some/dir") {
                   include "*.txt"
               }
           }

      Note that the application plugin pre configures this spec to; include the contents of "`src/dist`", copy the application start scripts into the "`bin`" directory, and copy the built jar and its dependencies into the "`lib`" directory.

    - #### setApplicationDistribution

          void setApplicationDistribution​(CopySpec applicationDistribution)