配置JVM内存

Gradle属性org.gradle.jvmargs控制运行构建的 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 插件参考中的测试执行

当您使用以下选项时,构建扫描将告诉您有关执行构建的 JVM 的信息--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