設定 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 將分岔一個新的 VM 來執行實際建置,以遵循不同的設定。

某些工作,例如 test 工作,也會分岔其他 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']
}

測試 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