Thanks for the insights! Etienne
On 23.11.2010, at 21:26, Adam Murdoch wrote: > > On 24/11/2010, at 2:45 AM, Etienne Studer wrote: > >> Hi Adam >> >> If I have a task type that annotates its fields with @Input / >> @InputDirectory, etc. but with no fields that have @OutputDirectory / >> @OutputFile annotations, the task is always executed and never considered >> uptodate. Is that by design? > > It is. A task needs to have at least one of: > > - A property marked with @OutputDirectory > > - A property marked with @OutputFile > > - Some output files or directories declared using outputs.dir(), file() or > files() > > - An 'up-to-date' rule, by supplying a predicate to outputs.upToDateWhen() > > The theory here is that a task always does some useful work of some kind - > that it, it has one or more outputs. If you don't give Gradle any way to > check if the outputs are up to date, then it has to assume that the outputs > are not persistent in any way, and so must execute the task every time. > > At the moment, the only types of outputs that Gradle understands are local > files and directories. I imagine over time we'll add extra types of outputs. > For example, Gradle might understand that a deployed web app is a kind of > output, and can skip deployment if the war hasn't changed since the web app > was deployed and the web app is still deployed. > > > -- > Adam Murdoch > Gradle Developer > http://www.gradle.org > CTO, Gradle Inc. - Gradle Training, Support, Consulting > http://www.gradle.biz > Etienne Studer Senior Software Developer Canoo Engineering AG Kirschgartenstrasse 5 CH-4051 Basel T +41 61 228 94 44 F +41 61 228 94 49 [email protected] www.canoo.com
