作为gradle中的首发,我正在将项目从maven转换为gradle。在运行测试时,我得到一个OutOfMemoryError: Java heap space
。如果我加
tasks.withType(Test) {
jvmArgs = ['-Xmx2g']
}
到build.gradle
然后它工作。但是,如果仅在gradle.properties
中将其配置为org.gradle.jvmargs=-Xmx2g
,则不会。
编码也一样。如果设置了GRADLE_OPTS=-Dfile.encoding=UTF-8
,则只有一个测试只能成功运行。但如果我在systemProp.file.encoding=UTF-8
设置gradle.properties
它不会。
这是为什么?
答案在Qazxswpoi任务的Gradle DSL文档中进行了描述。
测试始终在(一个或多个)单独的JVM中运行。
无论您在Test中配置什么,环境变量仅适用于Gradle JVM进程。
最大堆大小的配置与您通过gradle.properties
或最好通过jvmArgs
进行配置相同。
关于文件编码和maxHeapSize,我没有明确的答案。我最好的猜测是它没有以这种方式实现。您可以基于每个项目为编译任务设置文件编码,如下所示:
GRADLE_OPTS
来自:tasks.withType(Compile) {
options.encoding = 'UTF-8'
}