আমি কোনও গ্রেড টাস্ককে আবার চালাতে বাধ্য করতে পারি, বা সমস্ত টাস্ককে ইউপি-টু- তারিখের স্থিতিতে পুনরায় সেট করতে পারি?
আমি কোনও গ্রেড টাস্ককে আবার চালাতে বাধ্য করতে পারি, বা সমস্ত টাস্ককে ইউপি-টু- তারিখের স্থিতিতে পুনরায় সেট করতে পারি?
উত্তর:
-C rebuild
গ্রেডলের ক্যাশে পুনর্নির্মাণ করে আপনার বিল্ডটি চালানোর চেষ্টা করুন ।
গ্রেডলের নতুন সংস্করণগুলিতে, ব্যবহার করুন --rerun-tasks
আপনি যদি চান যে কোনও কাজটি সর্বদা চালিত হয় তবে আপনি outputs
সম্পত্তিটির অভ্যন্তরে কাজটি সেট করতে পারেন ।
outputs.upToDateWhen { false }
দয়া করে সচেতন হন যে যদি আপনার কার্যটিতে কোনও সংজ্ঞায়িত ফাইল ইনপুট না থাকে তবে উপরের কোডটি ব্যবহার করার পরেও গ্রেডল টাস্কটি এড়িয়ে যেতে পারে। উদাহরণস্বরূপ, একটি জিপ বা অনুলিপি টাস্কে কার্য সংজ্ঞাটির কনফিগারেশন পর্যায়ে কমপক্ষে একটি ফাইল সরবরাহ করা প্রয়োজন ।
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
তুমি ব্যবহার করতে পার cleanTaskname
বলুন আপনার আছে
:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE
এবং আপনি জোর করতে চান যাক আবার চালাতে সামটাস্ক 2 বলুন can
someproject:cleanSometask2
আপনি যে সমস্ত কাজ চালায় তা চালানোর আগে।
দৃশ্যত গ্রেডে, প্রতিটি কাজ যা ইউপি-টু-ডেট বোঝে সেগুলি কীভাবে নিজেকে পরিষ্কার করতে হয় তাও বোঝে।
আমার একটি কঠিন কেস হয়েছে যেখানে টাস্কটির outputs.upToDateWhen { false }
অভ্যন্তরে স্থাপন করা বা পতাকা যুক্ত করা কোনও উপকারে --rerun-tasks
আসেনি কারণ প্রতিবার এটি চালানোর সময় টাস্কটি setOnlyIf
সেট করে রাখা হয়েছে false
।
build.gradle
কার্যকর করার জন্য বাধ্যতামূলক করতে নিম্নলিখিতগুলি যুক্ত করা 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 }
}
}
}