JavaExec

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

确定是否为测试进程启用调试。启用时(即 debug = true),进程将以挂起状态启动,并在端口 5005 上监听。调试时应禁用并行测试执行,并且如果 Test.getForkEvery() 使用非零值,则可能需要偶尔重新连接调试器。

debugOptions

进程的 Java Debug Wire Protocol 属性。如果启用,则 -agentlib:jdwp=... 将附加到 JVM 参数中,并包含来自参数的配置。

enableAssertions

如果进程启用了断言,则返回 true。

environment

用于进程的环境变量。默认为当前进程的环境变量。

errorOutput

用于消费执行命令的进程的标准错误输出流。默认为 System.err

executable

要使用的可执行文件的名称。

executionResult

此任务运行命令的结果。如果此任务尚未执行,则此提供者没有值。

ignoreExitValue

指示是否忽略非零退出值,或者抛出异常。默认为 false

javaLauncher

配置用于运行测试的 Java 可执行文件。

jvmArgs

用于启动进程 JVM 的额外参数。不包括系统属性和最小/最大堆大小。

jvmArgumentProviders

用于要分叉的 Java 进程的命令行参数提供者。

jvmArguments

用于启动进程 JVM 的额外 JVM 参数。必须用于设置 JVM 参数的约定。

mainClass

要执行的主类的完全限定名。

mainModule

如果应用应作为 Java 模块运行,则要执行的主模块的名称。

maxHeapSize

进程的最大堆大小(如果设置)。

modularity

执行主类的模块路径处理。

standardInput

执行命令的进程的标准输入流。进程完成后流将关闭。默认为空流。

standardOutput

用于消费执行命令的进程的标准输出流。默认为 System.out

systemProperties

将用于进程的系统属性。

workingDir

进程的工作目录。默认为项目目录。

方法

方法描述
args(args)

为要执行的主类添加参数。

args(args)

为要执行的主类添加参数。

bootstrapClasspath(classpath)

将给定值添加到进程的 bootstrap classpath 末尾。

classpath(paths)

将元素添加到执行主类的 classpath 中。

copyTo(options)

将这些选项复制到给定选项。

copyTo(target)

将这些选项复制到给定目标选项。

debugOptions(action)

配置进程的 Java Debug Wire Protocol 属性。如果启用了 JavaForkOptions.setDebug(boolean),则 -agentlib:jdwp=... 将附加到 JVM 参数中,并包含来自参数的配置。

environment(name, value)

为此进程的环境添加一个环境变量。

environment(environmentVariables)

为此进程的环境添加一些环境变量。

executable(executable)

设置要使用的可执行文件的名称。

jvmArgs(arguments)

添加一些用于启动进程 JVM 的参数。

jvmArgs(arguments)

添加一些用于启动进程 JVM 的参数。

systemProperties(properties)

添加一些用于进程的系统属性。

workingDir(dir)

设置进程的工作目录。提供的参数按 Project.file(java.lang.Object) 进行评估。

脚本块

没有脚本块

属性详情

List<String> allJvmArgs

用于启动进程 JVM 的完整参数集。这包括定义系统属性、最小/最大堆大小以及 bootstrap classpath 的参数。

List<String> args

传递给要执行的主类的参数。

默认值
[]

List<CommandLineArgumentProvider> argumentProviders (只读)

应用的参数提供者。

默认值
[]

FileCollection bootstrapClasspath

用于进程的 bootstrap classpath。当此 classpath 为空时,将使用 JVM 的默认 bootstrap classpath。

默认值
[]

FileCollection classpath

执行主类的 classpath。

默认值
null

List<String> commandLine (只读)

完整的命令行,包括可执行文件及其参数。

boolean debug

确定是否为测试进程启用调试。启用时(即 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 参数中,并包含来自参数的配置。

boolean enableAssertions

如果进程启用了断言,则返回 true。

默认值
false

Map<String, Object> environment

用于进程的环境变量。默认为当前进程的环境变量。

默认值
当前进程的环境

OutputStream errorOutput

用于消费执行命令的进程的标准错误输出流。默认为 System.err

默认值
System.err

String executable

要使用的可执行文件的名称。

默认值
当前 JVM 的 java 可执行文件

Provider<ExecResult> executionResult

此任务运行命令的结果。如果此任务尚未执行,则此提供者没有值。

boolean ignoreExitValue

指示是否忽略非零退出值,或者抛出异常。默认为 false

默认值
false

Property<JavaLauncher> javaLauncher

配置用于运行测试的 Java 可执行文件。

默认值
java.toolchain

List<String> jvmArgs

用于启动进程 JVM 的额外参数。不包括系统属性和最小/最大堆大小。

默认值
[]

List<CommandLineArgumentProvider> jvmArgumentProviders (只读)

用于要分叉的 Java 进程的命令行参数提供者。

默认值
[]

ListProperty<String> jvmArguments

用于启动进程 JVM 的额外 JVM 参数。必须用于设置 JVM 参数的约定。

默认值
null

Property<String> mainClass

要执行的主类的完全限定名。

如果使用具有 Main-Class 属性的 可执行 Jar,则无需设置此项。

默认值
null

Property<String> mainModule

如果应用应作为 Java 模块运行,则要执行的主模块的名称。

默认值
null

String maxHeapSize

进程的最大堆大小(如果设置)。

默认值
null

ModularitySpec modularity (只读)

执行主类的模块路径处理。

InputStream standardInput

执行命令的进程的标准输入流。进程完成后流将关闭。默认为空流。

默认值
一个空的 InputStream

OutputStream standardOutput

用于消费执行命令的进程的标准输出流。默认为 System.out

默认值
System.out

Map<String, Object> systemProperties

将用于进程的系统属性。

默认值
[:]

File workingDir

进程的工作目录。默认为项目目录。

默认值
project.projectDir

方法详情

JavaExecSpec args(Iterable<?> args)

为要执行的主类添加参数。

JavaExec args(Object... args)

为要执行的主类添加参数。

JavaExec bootstrapClasspath(Object... classpath)

将给定值添加到进程的 bootstrap classpath 末尾。

JavaExec classpath(Object... paths)

将元素添加到执行主类的 classpath 中。

JavaExec copyTo(JavaForkOptions options)

将这些选项复制到给定选项。

将这些选项复制到给定目标选项。

void debugOptions(Action<JavaDebugOptions> action)

配置进程的 Java Debug Wire Protocol 属性。如果启用了 JavaForkOptions.setDebug(boolean),则 -agentlib:jdwp=... 将附加到 JVM 参数中,并包含来自参数的配置。

为此进程的环境添加一个环境变量。

environment(Map<String, ?> environmentVariables)

为此进程的环境添加一些环境变量。

executable(Object executable)

设置要使用的可执行文件的名称。

jvmArgs(Iterable<?> arguments)

添加一些用于启动进程 JVM 的参数。

jvmArgs(Object... arguments)

添加一些用于启动进程 JVM 的参数。

systemProperties(Map<String, ?> properties)

添加一些用于进程的系统属性。

设置进程的工作目录。提供的参数按 Project.file(java.lang.Object) 进行评估。