build - How to make up-to-date check notice non-file arguments in a Gradle Task? -
suppose have task class mytask reads input file, conversion on , writes output file (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 output based on conversion" input = file('input.txt') output = file('output.txt') conversion = "upper" } now works fine, when change input.txt or remove output.txt in file system executes again. problem it doesn't execute if change "upper" "lower", wrong.
i can't (don't want to) put build.gradle in inputs list because hack, wouldn't work if, say, command line argument changes gets mytask.conversion field. 1 thought of write value file in setconversion() method , put on inputs list, again, that's hack.
how can make gradle notice change official way? if know can read more this, don't hold on links ;)
i read more tasks , writing custom plugins, gave me no clue.
not sure if it's helpful i'd try:
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 } void setconversion(string conversion) { this.inputs.property('conversion', conversion) this.conversion = conversion } } could please check it?
Comments
Post a Comment