配置 JVM 記憶體

org.gradle.jvmargs Gradle 屬性控制執行建置的 VM。它預設為 -Xmx512m "-XX:MaxMetaspaceSize=384m"

您可以透過以下方式調整 Gradle 的 JVM 選項。

選項 1: 變更建置 VM 的 JVM 設定

org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

JAVA_OPTS 環境變數控制命令列用戶端,該用戶端僅用於顯示控制台輸出。它預設為 -Xmx64m

選項 2: 變更用戶端 VM 的 JVM 設定

JAVA_OPTS="-Xmx64m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"

在以下情況下,用戶端 VM 也可以充當建置 VM

如果您停用 Gradle Daemon 且用戶端 VM 的設定與建置 VM 所需的設定相同,則用戶端 VM 將直接執行建置。

否則,用戶端 VM 將 fork 一個新的 VM 以執行實際建置,以符合不同的設定。

某些任務(例如 test 任務)也會 fork 其他 JVM 程序。您可以透過任務本身配置這些程序。它們預設使用 -Xmx512m

範例 1: 設定 Java 編譯任務的編譯選項

build.gradle.kts
plugins {
    java
}

tasks.withType<JavaCompile>().configureEach {
    options.compilerArgs = listOf("-Xdoclint:none", "-Xlint:none", "-nowarn")
}
build.gradle
plugins {
    id 'java'
}

tasks.withType(JavaCompile).configureEach {
    options.compilerArgs += ['-Xdoclint:none', '-Xlint:none', '-nowarn']
}

請參閱 Test API 文件和 Java 外掛參考中的測試執行 中的其他範例。

建置掃描 將在您使用 --scan 選項時告知您有關執行建置的 JVM 的資訊

Build Environment in Build Scan

使用專案屬性配置任務

可以根據調用時指定的專案屬性來變更任務的行為。

假設您想要確保僅由 CI 觸發發行版本建置。一種簡單的方法是使用 isCI 專案屬性。

範例 1: 防止在 CI 之外發行

build.gradle.kts
tasks.register("performRelease") {
    val isCI = providers.gradleProperty("isCI")
    doLast {
        if (isCI.isPresent) {
            println("Performing release actions")
        } else {
            throw InvalidUserDataException("Cannot perform release outside of CI")
        }
    }
}
build.gradle
tasks.register('performRelease') {
    def isCI = providers.gradleProperty("isCI")
    doLast {
        if (isCI.present) {
            println("Performing release actions")
        } else {
            throw new InvalidUserDataException("Cannot perform release outside of CI")
        }
    }
}
$ gradle performRelease -PisCI=true --quiet
Performing release actions