配置 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 守护进程 并且客户端 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']
}
请参阅 Test API 文档和 Java 插件参考中的测试执行 中的其他示例。
构建扫描 会在您使用 --scan
选项时告诉您有关执行构建的 JVM 的信息。
使用项目属性配置任务
可以根据在调用时指定的项目属性来更改任务的行为。
假设您希望确保发布构建仅由 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