从预定义任务向TaskInputs添加exclude

时间:2014-09-29 19:18:58

标签: gradle

在我转换为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') } 的内容并查看日志文件不是列表的一部分,但由于日志文件已更改,任务仍会触发。

0 个答案:

没有答案
相关问题