আমি কোনও গ্রেড টাস্ককে আবার চালাতে বাধ্য করতে পারি, বা সমস্ত টাস্ককে ইউপি-টু- তারিখের স্থিতিতে পুনরায় সেট করতে পারি?
আমি কোনও গ্রেড টাস্ককে আবার চালাতে বাধ্য করতে পারি, বা সমস্ত টাস্ককে ইউপি-টু- তারিখের স্থিতিতে পুনরায় সেট করতে পারি?
উত্তর:
-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 }
}
}
}