1

簡単なタスクを使用して、質問を説明します。(私の実際のタスクは、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、これは「ダーティ」な出力ディレクトリとして認識されません。

出力ディレクトリを一連の出力ファイルではなくディレクトリとして定義したため、ディレクトリの状態全体を調べることが期待されます。追加のファイルが違いと見なされないのはなぜですか? それとも、ここで何か不足していますか?

4

1 に答える 1

1

なぜこの決定が下されたのか、はっきりとは言えません。おそらく、同じ出力ディレクトリを共有する複数のタスクをサポートする必要があったためです (たとえば、compileJavaとの場合がそうでしたprocessResources)。

于 2013-10-12T00:51:55.270 に答える