Adakah cara agar saya dapat memaksa tugas gradle untuk dijalankan lagi, atau mengatur ulang semua tugas kembali ke status bukan UP-TO-DATE?
Adakah cara agar saya dapat memaksa tugas gradle untuk dijalankan lagi, atau mengatur ulang semua tugas kembali ke status bukan UP-TO-DATE?
Jawaban:
Coba jalankan build Anda yang akan membangun -C rebuildkembali cache Gradle.
Di versi Gradle yang lebih baru, gunakan --rerun-tasks
Jika Anda hanya ingin satu tugas untuk selalu dijalankan, Anda dapat menyetel outputsproperti di dalam tugas.
outputs.upToDateWhen { false }
Perlu diketahui bahwa jika tugas Anda tidak memiliki input file yang ditentukan, Gradle dapat melewati tugas tersebut, bahkan saat menggunakan kode di atas. Misalnya, dalam tugas Zip atau Salin harus ada setidaknya satu file yang disediakan dalam fase konfigurasi definisi tugas.
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Kamu bisa memakai cleanTaskname
Katakanlah Anda punya
:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE
Dan Anda ingin memaksa katakanlah sesuatu harus berjalan lagi, Anda bisa
someproject:cleanSometask2
sebelum Anda menjalankan tugas yang menjalankan semuanya.
Ternyata di gradle, setiap tugas yang paham UP-TO-DATE juga paham cara membersihkan dirinya.
Saya mengalami kasus sulit di mana pengaturan outputs.upToDateWhen { false }di dalam tugas atau menambahkan bendera --rerun-taskstidak membantu karena tugas setOnlyIfterus diatur ke falsesetiap kali saya menjalankannya.
Menambahkan berikut ini untuk build.gradlememaksa eksekusi myTask:
gradle.taskGraph.whenReady { taskGraph ->
def tasks = taskGraph.getAllTasks()
tasks.each {
def taskName = it.getName()
if(taskName == 'myTask') {
println("Found $taskName")
it.setOnlyIf { true }
it.outputs.upToDateWhen { false }
}
}
}