如何在Gradle任务中进行最新检查通知非文件参数?

时间:2015-06-25 14:24:07

标签: gradle build build-process

假设我有一个任务类MyTask,它读取输入文件,对其进行一些转换并写入输出文件(build.gradle):

class MyTask extends DefaultTask {
    @InputFile File input
    @OutputFile File output
    String conversion

    @TaskAction void generate() {
        def content = input.text
        switch (conversion) {
            case "lower":
                content = content.toLowerCase()
                break;
            case "upper":
                content = content.toUpperCase()
                break;
        }
        output.write content
    }
}

project.task(type: MyTask, "myTask") {
    description = "Convert input to output based on conversion"
    input = file('input.txt')
    output = file('output.txt')
    conversion = "upper"
}

现在一切正常,当我在文件系统中更改input.txt或删除output.txt时,它再次执行。 问题是如果我将"upper"更改为"lower"就无法执行,这是错误的。

我不能(不想)将build.gradle放在输入列表中,因为这会是一个hack,如果命令行参数改变了进入{的内容,也行不通{1}}字段。我想到的另一个是用myTask.conversion方法将值写入文件并将其放在setConversion()列表中,但同样,这是一个黑客攻击。

如何让gradle注意到官方方式的更改?如果您知道我在哪里可以阅读更多相关内容,请不要停留链接;)

我看了More about TasksWriting Custom Plugins,但它没有给我任何线索。

2 个答案:

答案 0 :(得分:1)

有一个方便的@Input annotation,与Opal's answer相同(查看其source code),但更简洁一点:

Uri.parse("tel:" + stringtelefon)

这是关于此的Gradle goodness article

答案 1 :(得分:0)

不确定它是否有用,但我会尝试:

alert($(".test option:selected").val());

请你检查一下吗?