API 文档 | JavaExec |
---|
在子进程中执行 Java 应用。
类似于 Exec
,但使用指定的 classpath 和应用类启动 JVM。
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' }
在调用构建时通过提供 `--debug-jvm` 开关,可以临时以调试模式启动该进程(参见 JavaExec.getDebug()
)。
gradle someJavaExecTask --debug-jvm
此外,调试配置可以在 JavaExec.debugOptions(org.gradle.api.Action)
中明确设置。
task runApp(type: JavaExec) {
...
debugOptions {
enabled = true
port = 5566
server = true
suspend = false
}
}
属性 | 描述 |
allJvmArgs | 用于启动进程 JVM 的完整参数集。这包括定义系统属性、最小/最大堆大小以及 bootstrap classpath 的参数。 |
args | 传递给要执行的主类的参数。 |
argumentProviders | 应用的参数提供者。 |
bootstrapClasspath | 用于进程的 bootstrap classpath。当此 classpath 为空时,将使用 JVM 的默认 bootstrap classpath。 |
classpath | 执行主类的 classpath。 |
commandLine | 完整的命令行,包括可执行文件及其参数。 |
debug | 确定是否为测试进程启用调试。启用时(即 |
debugOptions | 进程的 Java Debug Wire Protocol 属性。如果启用,则 |
enableAssertions | 如果进程启用了断言,则返回 true。 |
environment | 用于进程的环境变量。默认为当前进程的环境变量。 |
errorOutput | 用于消费执行命令的进程的标准错误输出流。默认为 |
executable | 要使用的可执行文件的名称。 |
executionResult | 此任务运行命令的结果。如果此任务尚未执行,则此提供者没有值。 |
ignoreExitValue | 指示是否忽略非零退出值,或者抛出异常。默认为 |
javaLauncher | 配置用于运行测试的 Java 可执行文件。 |
jvmArgs | 用于启动进程 JVM 的额外参数。不包括系统属性和最小/最大堆大小。 |
jvmArgumentProviders | 用于要分叉的 Java 进程的命令行参数提供者。 |
jvmArguments | 用于启动进程 JVM 的额外 JVM 参数。必须用于设置 JVM 参数的约定。 |
mainClass | 要执行的主类的完全限定名。 |
mainModule | 如果应用应作为 Java 模块运行,则要执行的主模块的名称。 |
maxHeapSize | 进程的最大堆大小(如果设置)。 |
modularity | 执行主类的模块路径处理。 |
standardInput | 执行命令的进程的标准输入流。进程完成后流将关闭。默认为空流。 |
standardOutput | 用于消费执行命令的进程的标准输出流。默认为 |
systemProperties | 将用于进程的系统属性。 |
workingDir | 进程的工作目录。默认为项目目录。 |
方法 | 描述 |
args(args) | 为要执行的主类添加参数。 |
args(args) | 为要执行的主类添加参数。 |
bootstrapClasspath(classpath) | 将给定值添加到进程的 bootstrap classpath 末尾。 |
classpath(paths) | 将元素添加到执行主类的 classpath 中。 |
copyTo(options) | 将这些选项复制到给定选项。 |
copyTo(target) | 将这些选项复制到给定目标选项。 |
debugOptions(action) | 配置进程的 Java Debug Wire Protocol 属性。如果启用了 |
environment(name, value) | 为此进程的环境添加一个环境变量。 |
environment(environmentVariables) | 为此进程的环境添加一些环境变量。 |
executable(executable) | 设置要使用的可执行文件的名称。 |
jvmArgs(arguments) | 添加一些用于启动进程 JVM 的参数。 |
jvmArgs(arguments) | 添加一些用于启动进程 JVM 的参数。 |
systemProperties(properties) | 添加一些用于进程的系统属性。 |
workingDir(dir) | 设置进程的工作目录。提供的参数按 |
FileCollection
bootstrapClasspath
用于进程的 bootstrap classpath。当此 classpath 为空时,将使用 JVM 的默认 bootstrap classpath。
- 默认值
[]
确定是否为测试进程启用调试。启用时(即 debug = true
),进程将以挂起状态启动,并在端口 5005 上监听。调试时应禁用并行测试执行,并且如果 Test.getForkEvery()
使用非零值,则可能需要偶尔重新连接调试器。
从 Gradle 5.6 开始,您可以通过 JavaForkOptions.debugOptions(org.gradle.api.Action)
配置端口和其他 Java 调试属性。
- 默认值
false
JavaDebugOptions
debugOptions
(只读)
进程的 Java Debug Wire Protocol 属性。如果启用,则 -agentlib:jdwp=...
将附加到 JVM 参数中,并包含来自参数的配置。
Provider
<ExecResult
>
executionResult
Provider
<ExecResult
>此任务运行命令的结果。如果此任务尚未执行,则此提供者没有值。
ModularitySpec
modularity
(只读)
执行主类的模块路径处理。
JavaExecSpec
args
(Iterable
<?>
args)
Iterable
<?>为要执行的主类添加参数。
JavaExec
copyTo
(JavaForkOptions
options)
将这些选项复制到给定选项。
JavaExec
copyTo
(ProcessForkOptions
target)
将这些选项复制到给定目标选项。
void
debugOptions
(Action
<JavaDebugOptions
>
action)
Action
<JavaDebugOptions
>配置进程的 Java Debug Wire Protocol 属性。如果启用了 JavaForkOptions.setDebug(boolean)
,则 -agentlib:jdwp=...
将附加到 JVM 参数中,并包含来自参数的配置。
environment(String
name, Object
value)
为此进程的环境添加一个环境变量。
environment(Map
<String
, ?>
environmentVariables)
Map
<String
, ?>为此进程的环境添加一些环境变量。
executable(Object
executable)
设置要使用的可执行文件的名称。
systemProperties(Map
<String
, ?>
properties)
Map
<String
, ?>添加一些用于进程的系统属性。
workingDir(Object
dir)
设置进程的工作目录。提供的参数按 Project.file(java.lang.Object)
进行评估。