使用Google protobuf-gradle插件,它可以根据多个原始文件输入生成潜在的多个文件。在运行任务时,只能查看所有已输出的文件,而不能事先确定输出的内容。从Gradle任务中跟踪(并删除)输出文件
当清理项目时,挑战就来了。看起来Gradle会跟踪输出文件,可从AbstractTask.getOutputs().getPreviousFiles()
访问。这是Gradle的内部,所以我怀疑你可以依靠这个。如果你想删除所有的输出文件,最好的方法是什么?
一种可能性是限制输出文件夹到构建目录,以便如果它被删除,所有生成的文件将会消失。
另一种方法是在输出目录中创建一个清单,该清单将跟踪所有创建的文件,然后知道要删除的内容。
这里有什么建议?
如何处理输出被删除时的情况?对于IncrementalTaskInputs,您可能可以计算差异。否则,您需要始终删除整个输出目录,然后重新填充整个目录。有没有可能做得更好? – brunobowden
@brunobowden如果我能很好地理解它,那么默认情况下它会被照顾。如果您注释任务输出,gradle会在失踪时始终准备它们。 – Opal
你是正确的@opal。我没有解释得很好。我正在考虑ATinput变化导致AToutput变化的时间。由于protobuf插件的限制,它不知道何时编辑ATinput可能导致AToutput消失。在这种情况下,它必须清除所有输出,然后重新创建所有内容。 – brunobowden