gpt4 book ai didi

java - Gradle获取父目录的文件集合

转载 作者:行者123 更新时间:2023-12-01 22:19:25 26 4
gpt4 key购买 nike

我正在尝试配置一个任务,该任务将从二进制 junit 测试结果的集合中生成单个报告,但我无法创建包含所有结果所在路径的 FileCollection文件已定位。

我的任务是这样定义的

task aggregateTestREports(type: org.gradle.api.tasks.tests.TestSupport) {
destinationDir = reportDir
testResultsDirs = ???
}

在哪里???这是我无法开始工作的部分。

我可以使用以下代码来获取构建结构中的output.bin 文件列表,但我需要将其转换为文件所在目录的列表。

fileTree(dir: '.', includes: ['**/test-results/binary/test/output.bin'])

我尝试从基类创建一个自定义类,如下所示,并将该行的结果传递给 testOutputBinFiles 参数并动态计算文件

class AggregateTestReport extends TestReport {
@Input
def testOutputBinFiles

def getTestResultDirs() {
def parents = []
testOutputBinFiles.each {
File file -> parents << file.parentFile.absoluteFile
}
parents
}
}

但这给了我一个错误,即返回值与FileCollection

不兼容

FileCollection 的文档表明获取新集合的唯一方法是使用 files() 函数,但它在自定义中不可用类来获取新文件。

最佳答案

由于我的项目中的测试编写方式存在问题,采用了 dnault 的答案引入的依赖关系,导致我们的测试失败。最终,当我们解决项目中导致此问题的问题时,他的解决方案将会起作用,所以我接受了这个答案。为了完整起见,我的权宜之计最终是

def resultPaths(FileCollection testOutputBinFiles) {
def parents = []
testOutputBinFiles.each {
File file -> parents << file.parentFile.absoluteFile
}
parents
}

task aggregateTestReports(type: org.gradle.api.tasks.testing.TestReport) {
destinationDir = reportDir
reportOn resultPaths(fileTree(dir: '.', includes: ['**/test-results/binary/test/output.bin']))
}

关于java - Gradle获取父目录的文件集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30226242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com