在我转换为Gradle的项目中,我们在resources/test
目录中运行测试。某些测试会生成输出到该目录的日志文件。在执行此操作的项目中,每次运行gradle build
时,test
任务的最新检查都会失败,因为日志文件的内容与上次运行任务的内容不同。 / p>
我想从TaskInputs
插件中仅删除为自动生成的test
任务定义的java
对象中的日志文件。
我设法在TaskInputs中找到了定义resources/test
的位置,并想出了如何构建排除日志文件的替换项,但事实证明我无法修改{{1属性。
sourceCollections
有没有办法可以强制从TaskInputs中排除日志文件?
编辑 :我尝试了另一种过滤文件属性的方法,但似乎没有效果。
test {
def modified = inputs.files.sourceCollections.collect {
if (it.displayName.contains("resources${File.separator}test"))
{
p.fileTree(dir: it.asPath, exclude: '*.log')
}
else
{
it
}
}
// this produces an error as this is a read-only property
inputs.files.sourceCollections = modified
}
Edit2 :我尝试了另一种方法,似乎正在某处:
test {
inputs.files.filter {
exclude '*.log'
}
inputs.sourceFiles.filter {
exclude '*.log'
}
}
当我这样做时,我可以打印 test {
inputs.sourceFiles.filter {
!it.name.endsWith("resources${File.separator}test")
}
inputs.sourceDir p.fileTree(dir: p.sourceSets.test.output.resourcesDir, exclude: '*.log')
}
的内容并查看日志文件不是列表的一部分,但由于日志文件已更改,任务仍会触发。