Gradle 格拉德尔+;测试套件&x2B;JaCoco:文件锁定异常

Gradle 格拉德尔+;测试套件&x2B;JaCoco:文件锁定异常,gradle,Gradle,我正在尝试将Gradle TestKit与JaCoCo集成。我正在使用这个插件 这将创建渐变属性(在包括我的插件在内的测试项目中),例如: 主项目中的JaCoCO的设置方式如下: jacocoTestReport { sourceSets sourceSets.main executionData = rootProject.files("${buildDir}/jacoco/test.exec", "${buildDir}/jacoco/test-integration.ex

我正在尝试将Gradle TestKit与JaCoCo集成。我正在使用这个插件

这将创建渐变属性(在包括我的插件在内的测试项目中),例如:

主项目中的JaCoCO的设置方式如下:

jacocoTestReport {
    sourceSets sourceSets.main
    executionData = rootProject.files("${buildDir}/jacoco/test.exec", "${buildDir}/jacoco/test-integration.exec") 
}
但似乎有什么东西锁定了test-integration.exec文件。(如果我移除它,一切正常)

异常为(java.io.IOException:进程无法访问该文件,因为另一个进程已锁定该文件的一部分)

我有什么遗漏吗?
我在Windows、Java 10.2、Gradle 4.10.1上运行它,在查看
org.Gradle.jvmargs
时,它显示

destfile={someDirsHere}/build/jacoco/test-integration.exec
将请求独占访问以写入该文件;它锁着它

不传递参数和使用默认配置应该可以:

task generateJacocoIntegrationTestKitProperties(type: GenerateJaCoCoTestKitProperties) {
    destinationFile = file('integration.exec')
}
使用
jacoco.gradle
(很可能)相似的:

另请参见与子项目覆盖率测试聚合相关的内容:

subprojects.findAll { subproject ->
    subproject.pluginManager.hasPlugin('java') && subproject.pluginManager.hasPlugin('jacoco')
}.each { subproject ->
    executionData += subproject.tasks.jacocoTestReport.executionData
}

executionData = files(executionData.findAll {
    it.exists()
})
对于单个项目来说,这没有什么意义,但是当有子项目时,它就有了意义

task generateJacocoIntegrationTestKitProperties(type: GenerateJaCoCoTestKitProperties) {
    destinationFile = file('integration.exec')
}
jacocoTestReport {
    sourceSets sourceSets.main
    executionData = files()
}
subprojects.findAll { subproject ->
    subproject.pluginManager.hasPlugin('java') && subproject.pluginManager.hasPlugin('jacoco')
}.each { subproject ->
    executionData += subproject.tasks.jacocoTestReport.executionData
}

executionData = files(executionData.findAll {
    it.exists()
})