JavaExec

API 文档JavaExec

在子进程中执行 Java 应用程序。

类似于 Exec,但使用给定的类路径和应用程序类启动 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` 开关,可以以 ad-hoc 方式在调试模式下启动进程(参见 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 的完整参数集。这包括用于定义系统属性、最小/最大堆大小和引导类路径的参数。

args

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

argumentProviders

应用程序的参数提供者。

bootstrapClasspath

用于进程的引导类路径。当此路径为空时,将使用 JVM 的默认引导类路径。

classpath

用于执行主类的类路径。

commandLine

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

debug

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

debugOptions

进程的 Java 调试线协议属性。 如果启用,则 -agentlib:jdwp=... 将附加到 JVM 参数,并使用来自参数的配置。

enableAssertions

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

environment

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

errorOutput

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

executable

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

executionResult

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

ignoreExitValue

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

javaLauncher

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

jvmArgs

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

jvmArgumentProviders

要 fork 的 java 进程的命令行参数提供程序。

jvmArguments

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

mainClass

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

mainModule

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

maxHeapSize

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

modularity

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

standardInput

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

standardOutput

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

systemProperties

将用于进程的系统属性。

workingDir

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

方法

方法描述
args(args)

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

args(args)

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

bootstrapClasspath(classpath)

将给定值添加到进程的引导类路径的末尾。

classpath(paths)

将元素添加到用于执行主类的类路径。

copyTo(options)

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

copyTo(target)

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

debugOptions(action)

配置进程的 Java 调试线协议属性。 如果启用 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 的完整参数集。这包括用于定义系统属性、最小/最大堆大小和引导类路径的参数。

List<String> args

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

默认值
[]

List<CommandLineArgumentProvider> argumentProviders (只读)

应用程序的参数提供者。

默认值
[]

FileCollection bootstrapClasspath

用于进程的引导类路径。当此路径为空时,将使用 JVM 的默认引导类路径。

默认值
[]

FileCollection classpath

用于执行主类的类路径。

默认值

List<String> commandLine (只读)

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

boolean debug

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

从 Gradle 5.6 开始,您可以通过 JavaForkOptions.debugOptions(org.gradle.api.Action) 配置端口和其他 Java 调试属性。

默认值
false

JavaDebugOptions debugOptions (只读)

进程的 Java 调试线协议属性。 如果启用,则 -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 (只读)

要 fork 的 java 进程的命令行参数提供程序。

默认值
[]

ListProperty<String> jvmArguments

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

默认值

Property<String> mainClass

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

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

默认值

Property<String> mainModule

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

默认值

String maxHeapSize

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

默认值

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)

将给定值添加到进程的引导类路径的末尾。

JavaExec classpath(Object... paths)

将元素添加到用于执行主类的类路径。

JavaExec copyTo(JavaForkOptions options)

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

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

void debugOptions(Action<JavaDebugOptions> action)

配置进程的 Java 调试线协议属性。 如果启用 JavaForkOptions.setDebug(boolean),则 -agentlib:jdwp=... 将附加到 JVM 参数,并使用来自参数的配置。

JavaExec environment(String name, Object value)

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

JavaExec environment(Map<String, ?> environmentVariables)

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

JavaExec executable(Object executable)

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

JavaExec jvmArgs(Iterable<?> arguments)

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

JavaExec jvmArgs(Object... arguments)

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

JavaExec systemProperties(Map<String, ?> properties)

为进程添加一些系统属性。

JavaExec workingDir(Object dir)

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