2017-07-09 38 views
0

从项目属性或可以更改的变量中获取值是一个好主意。例如,Gradle:具有可变输入的任务

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检查如何工作?

+0

至于任何其他任务:通过检查自上次执行以来输入(即两个属性文件的内容)和输出(即outputFile的内容)是否发生了变化。 –

回答

1

答案很简单:没有

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

此外,doLast(和doFirst)倒闭是次要的准备和清理工作,主要任务行动应该由@TaskActioncustom task type定义来定义:

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

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

现在,特殊情况下(我可以现在不想象)可以使用项目属性来定义输入和输出文件。