Bir derecelendirme görevini tekrar çalışmaya zorlamanın veya tüm görevleri GÜNCEL OLMAYAN durumuna sıfırlamanın bir yolu var mı ?
Bir derecelendirme görevini tekrar çalışmaya zorlamanın veya tüm görevleri GÜNCEL OLMAYAN durumuna sıfırlamanın bir yolu var mı ?
Yanıtlar:
-C rebuild
Derlemenizi Gradle'ın önbelleğini yeniden oluşturan bir şekilde çalıştırmayı deneyin .
Gradle'ın daha yeni sürümlerinde, --rerun-tasks
Yalnızca tek bir görevin her zaman çalışmasını istiyorsanız, outputs
özelliği görevin içinde ayarlayabilirsiniz .
outputs.upToDateWhen { false }
Görevinizde tanımlanmış herhangi bir dosya girişi yoksa, Gradle'ın yukarıdaki kodu kullanırken bile görevi atlayabileceğini lütfen unutmayın. Örneğin, bir Zip veya Copy görevinde , görev tanımının yapılandırma aşamasında sağlanan en az bir dosya olması gerekir .
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Kullanabilirsiniz cleanTaskname
Sahip olduğunu varsayalım
:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE
Ve şunu söyleyelim sometask2'yi tekrar çalıştırmaya zorlamak istiyorsanız,
someproject:cleanSometask2
hepsini çalıştıran görevi çalıştırmadan önce.
Görünüşe göre kademeli olarak, GÜNCELLEMEYİ anlayan her görev aynı zamanda kendini nasıl temizleyeceğini de anlıyor.
Ben ayarı zor bir durum vardı outputs.upToDateWhen { false }
görevi içinde veya bayrak ekleme --rerun-tasks
görevin beri yardım etmedi setOnlyIf
tutulması olmanın sette false
ben koştum her zaman.
Yürütmeyi build.gradle
zorlamak için aşağıdakileri eklemek 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 }
}
}
}