2
実行のGradle doLast、コピータスクでdoFirst行動
task hello (type: Copy) {
doLast {
println "print from within"
}
println "print from outside"
}
build.gradle
のGradle -qハロー
doLast {}クロージャーには触れません。 doLastまたはdoFirstなし
D:\>gradle -q hello print from outside
:doFirstにdoLastを変更、私は同じ結果を得る
task hello (type: Copy) { //doLast{ println "print from within" //} println "print from outside" }
をそれが正常に動作します:
D:\>gradle -q hello print from within print from outside
これは起こっているようですコピータイプのタスクを使用します。あなたは明確にするのを助けてくれますか?私はgradle 2.4を使用しています。
私は実際に別のユースケースを試しました:** doLast {} **クロージャ内で**を**から**へ:**を追加してください。ソースファイルの内容が変更された場合、タスクの目的は基本的に宛先を更新することです。どうすればこれを達成できますか?実際にdoLast {}は、何があってもコピータイプのタスクには触れません。 – Heinz
'doLast'は*実行時に実行されるため、' into'と 'from'が* configuration * phase - inで使用されるため、' doLast'の中に 'into'と' from'を入れるのは意味がありません'doLast'は何も設定するのが遅すぎます。タスクのボディ内で 'from'と' into'を使用すると、期待通りに動作します。また、あなたはgradleの基礎について読む必要があるようです。 [こちら](https://docs.gradle.org/current/userguide/build_lifecycle.html)の良い出発点 – Opal
私の元の投稿は、特に "コピー"タイプのタスクについて質問しています。私はまだ困惑している。これは** build.gradle **ファイルです: 'task mycopy(タイプ:コピー){c:\ temp \ me.txtから 'd:/'}へ
タスクhello(){doLast {println 'Hello 、私は '}} '。 ** grale build.gradle hello **を実行すると、設定フェーズで実行する必要がありますが、** mycopy {} **内のコードは実行されません。私が間違っていることは何ですか? – Heinz