簡単なタスクを使用して、質問を説明します。(私の実際のタスクは、xml ファイルと画像ファイルの入力セットに基づいて画像を生成する python スクリプトです。そのタスクの出力は、さまざまな xml ファイルと画像を含むディレクトリです。)
とにかく、このタスクを検討してください:
task t {
inputs.dir 'src'
outputs.dir 'dst'
doLast {
copy {
from 'src'
into 'dst'
}
}
}
にファイルfoo.txt
を配置しますsrc/
。今実行しますgradle t
。結果: に新しいファイルfoo.txt
がありますdst/
。
もう一度実行gradle t
すると、UP-TO-DATE で実行されていないと表示されます。良い。ここで、を削除dst/foo.txt
すると実行され、宛先が変更されたことを正しく検出します。
また、 の内容を編集するとdst/foo.txt
、変更が認識されます。良い!
dst
ただし、たとえばの中に追加のファイルを配置するとdst/badfile.txt
、これは「ダーティ」な出力ディレクトリとして認識されません。
出力ディレクトリを一連の出力ファイルではなくディレクトリとして定義したため、ディレクトリの状態全体を調べることが期待されます。追加のファイルが違いと見なされないのはなぜですか? それとも、ここで何か不足していますか?