1

任务从项目属性或可以更改的变量中获取值是一个好主意吗?例如,

task mergeProperties {

    def propertiesFile = new File(project.ext.file1)
    def propertiesFile2 = new File(project.ext.file2)
    def outputFile = new File(project.ext.file3)

    inputs.files propertiesFile, propertiesFile2
    outputs.file outputFile

    doLast {
            // merge properties
    }
}

此方法可用于合并任意两个文件并通过更改 property.ext 属性写入任何文件。这是一个好主意吗?在这种情况下,UP_TO_DATE 检查如何工作?

4

1 回答 1

2

简单的回答:没有

只要您不提供需要上述行为的示例用例或场景,我认为让属性文件或命令行值决定执行逻辑是个坏主意。这就是(在你的build.gradle)中的代码应该是什么。

此外,doLast(和doFirst)闭包用于次要的准备和清理作业,主要任务操作应由自定义任务类型@TaskAction定义中的 a定义:

class Merge extends DefaultTask {
    @TaskAction
    def merge() {
        // merge properties
    }
}

task mergeProperties(type: Merge) {
    inputs.files 'myInputFile1', 'myInputFile2'
    outputs.file 'myOutputFile'
}

现在,一个特殊的场景(我现在无法想象)可以使用项目属性来定义输入和输出文件。

于 2017-07-09T19:35:47.903 回答