配置 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 的資訊
使用專案屬性配置任務
可以根據調用時指定的專案屬性來變更任務的行為。
假設您想要確保僅由 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