Gradle JavaExec Task Type
External
- https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html
- https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/JavaExec.html
- https://www.baeldung.com/gradle-run-java-main
Internal
Overview
Executes a Java application as a child process. To get details on the actual java command line, execute Gradle with -i command line option. While the execution task name can be arbitrary, "run" is usually a good choice.
task someTask(type: JavaExec) {
classpath = configurations.runtimeClasspath
main = 'myPackage.MyMainClass'
args = ['something', 'somethingelse']
jvmArgs = ['-Xmx12G', '-Xms1G']
environment "LD_LIBRARY_PATH", "/usr/local/lib"
systemProperties = [ "some.prop": "some.value", "some.other.prop": "some.other.value" ]
}
Debugging Code Run with JavaExec
task someTask(type: JavaExec) {
classpath = configurations.runtimeClasspath
main = 'myPackage.MyMainClass'
args = ['something', 'somethingelse']
jvmArgs = ['-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005']
}
The above configuration will start the JVM executing 'myPackage.MyMainClass' in debug mode and suspend waiting for a connection on 5005. For a process model, see
Configuration
classpath
TODO
classpath = sourceSets.main.runtimeClasspath
classpath = configurations.runtimeClasspath
classpath = configurations.compileClasspath
main
The main class. Must be available on classpath.
main = 'playground.javaExec.Main'
args
"args" can be provided as a single string, but in this case, even if individual tokens are separated by space, the main() method will get just one single string as argument:
args 'A B C'
This will be passed to the Java main() method as args[0]:
arguments:
args[0]: X Y Z
To provide individual tokens, use this syntax:
args = ['A', 'B', 'C']
The list elements will be passed to the Java main() method as individual arguments:
arguments:
args[0]: A
args[1]: B
args[2]: C
jvmArgs
jvmArgs = ['-Xmx12g']
maxHeapSize
environment
Specifies a single environment variable, as a key value pair separated by comma. Multiple variable can be specified that way:
environment "SOME_ENV_VAR", "some value"
environment "SOME_OTHER_ENV_VAR", "some other value"
systemProperties
A Groovy map.
systemProperties = [ "some.prop": "some.value", "some.other.prop": "some.other.value" ]
group
description
standardOutput
task someTask(type: JavaExec) {
...
standardOutput = System.out
...
}
errorOutput
task someTask(type: JavaExec) {
...
errorOutput = System.err
...
}