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` 開關,以特設方式在偵錯模式下啟動程序(請參閱 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

用於分叉 java 程序的命令列參數提供者。

jvmArguments

用於啟動程序 JVM 的額外 JVM 參數。必須用於設定 JVM 參數的慣例。

mainClass

要執行的 Main 類別的完整限定名稱。

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

用於執行主類別的類別路徑。

預設
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 偵錯線路協定屬性。如果啟用,則 -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 類別的完整限定名稱。

如果使用具有 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)

將給定的值新增至程序的啟動類別路徑結尾。

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) 進行評估。