Java
    Executes a Java application in a child process.
Similar to Exec, but starts a JVM with the given classpath and application class.
plugins {
    id 'java'
}
task runApp(type: JavaExec) {
  classpath = sourceSets.main.runtimeClasspath
  mainClass = 'package.Main'
  // arguments to pass to the application
  args 'appArg1'
}
// Using and creating an Executable Jar
jar {
  manifest {
    attributes('Main-Class': 'package.Main')
  }
}
task runExecutableJar(type: JavaExec) {
  // Executable jars can have only _one_ jar on the classpath.
  classpath = files(tasks.jar)
  // 'main' does not need to be specified
  // arguments to pass to the application
  args 'appArg1'
}
The process can be started in debug mode (see getDebug) in an ad-hoc manner by supplying the `--debug-jvm` switch when invoking the build.
gradle someJavaExecTask --debug-jvm
Also, debug configuration can be explicitly set in debugOptions:
task runApp(type: JavaExec) {
   ...
   debugOptions {
       enabled = true
       port = 5566
       server = true
       suspend = false
   }
}
Properties
The extra properties extension in this object's extension container.
Functions
Kotlin extension function for org.gradle.api.tasks.JavaExec.environment.
Kotlin extension function for org.gradle.process.ProcessForkOptions.environment.
args and passes it to setArgs.Kotlin extension function for org.gradle.process.ProcessForkOptions.setEnvironment.
Kotlin extension function for org.gradle.api.tasks.JavaExec.systemProperties.
Kotlin extension function for org.gradle.process.JavaForkOptions.systemProperties.
Returns the extension of the specified type.
Returns the extension of the specified extensionType.