【发布时间】:2021-08-22 22:30:37
【问题描述】:
我们有一个多子项目 Kotlin 构建 - 我们正在尝试将它从 maven 迁移到 gradle。它的 maven 版本构建良好,并且可以运行所有测试。
在我们的 Jenkins 服务器上运行测试时,Gradle 总是内存不足,尤其是涉及 scrypt 函数的集成测试。同样,这些测试在 maven 下运行时运行良好。
gradle.properties:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx16g -Xms2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+CMSClassUnloadingEnabled
org.gradle.workers.max=1
毕业典礼:
DEFAULT_JVM_OPTS='"-Xmx16g" "-Xms4g"'
build.gradle.kts: (根)
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
compileKotlin.kotlinOptions.freeCompilerArgs = listOf("-Xjsr305=strict", "-XXLanguage:-NewInference")
buildSrc/Helpers.kt:
create<Test>("unit-tests") {
useJUnit()
useJUnitPlatform()
maxParallelForks = 4
maxHeapSize = "4G"
reports.junitXml.isEnabled = true
filter {
setExcludePatterns(*TestPatterns.daoTests)
isFailOnNoMatchingTests = false
}
// prevents unit tests from subprojects from running in parallel (when gradle is run in parallel mode). we're
// already using junit parallelism.
// https://discuss.gradle.org/t/disabling-parallel-for-certain-tasks-only/10151
outputs.files("/tmp/unit_test_lock")
}
create<Test>("int-tests") {
useJUnit()
useJUnitPlatform()
maxParallelForks = 1
setForkEvery(1)
maxHeapSize = "16G"
reports.junitXml.isEnabled = true
filter {
setIncludePatterns(*TestPatterns.daoTests)
isFailOnNoMatchingTests = false
}
// prevents int tests from subprojects from running in parallel (when gradle is run in parallel mode)
// https://discuss.gradle.org/t/disabling-parallel-for-certain-tasks-only/10151
outputs.files("/tmp/int_test_lock")
}
我可以做些什么来让构建通过?
【问题讨论】:
标签: kotlin gradle gradle-kotlin-dsl