গ্রেড কার্যগুলির ইউপি-টু-ডেট সম্পত্তি পুনরায় সেট করা হচ্ছে?


106

আমি কোনও গ্রেড টাস্ককে আবার চালাতে বাধ্য করতে পারি, বা সমস্ত টাস্ককে ইউপি-টু- তারিখের স্থিতিতে পুনরায় সেট করতে পারি?

উত্তর:


132

-C rebuildগ্রেডলের ক্যাশে পুনর্নির্মাণ করে আপনার বিল্ডটি চালানোর চেষ্টা করুন ।

গ্রেডলের নতুন সংস্করণগুলিতে, ব্যবহার করুন --rerun-tasks


89

আপনি যদি চান যে কোনও কাজটি সর্বদা চালিত হয় তবে আপনি outputsসম্পত্তিটির অভ্যন্তরে কাজটি সেট করতে পারেন ।

outputs.upToDateWhen { false }

দয়া করে সচেতন হন যে যদি আপনার কার্যটিতে কোনও সংজ্ঞায়িত ফাইল ইনপুট না থাকে তবে উপরের কোডটি ব্যবহার করার পরেও গ্রেডল টাস্কটি এড়িয়ে যেতে পারে। উদাহরণস্বরূপ, একটি জিপ বা অনুলিপি টাস্কে কার্য সংজ্ঞাটির কনফিগারেশন পর্যায়ে কমপক্ষে একটি ফাইল সরবরাহ করা প্রয়োজন ।


14
এটি আমার পক্ষে কিছুই করে না। আমি এটিকে কোনও কাজে যুক্ত করেছি এবং "ইউপি-টু-তারিখ" পেয়েছি। মজার বিষয় হ'ল এটি একটি জিপটাস্ক এবং আমি গন্তব্য সংরক্ষণাগারটি মুছে ফেলেছি।
মার্টিনাস

5
এটি এর মতো ব্যবহারের জন্য অবিশ্বাস্য:tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
মার্টিন এল।

যখন টাস্কটি চলবে না তখন মামলার আপডেট হওয়া উত্তর।
সেমিসিগিন্টি

সাবধান থাকুন যে আজকাল গ্রেডল নির্মিত ক্যাশে সক্ষম হয়ে গেলে এটি আবার কাজটি চালিত করতে পারে না, তবে এর আউটপুট কেবল ক্যাশে থেকে পুনরুদ্ধার করা হবে।
স্টিফেন ফ্রেডরিখ

25

তুমি ব্যবহার করতে পার cleanTaskname

বলুন আপনার আছে

:someproject:sometask1 UP-TO-DATE
:someproject:sometask2 UP-TO-DATE
:someproject:sometask3 UP-TO-DATE

এবং আপনি জোর করতে চান যাক আবার চালাতে সামটাস্ক 2 বলুন can

someproject:cleanSometask2

আপনি যে সমস্ত কাজ চালায় তা চালানোর আগে।

দৃশ্যত গ্রেডে, প্রতিটি কাজ যা ইউপি-টু-ডেট বোঝে সেগুলি কীভাবে নিজেকে পরিষ্কার করতে হয় তাও বোঝে।


1
'গ্রেডেল ক্লিন' আপনার প্রকল্পের সমস্ত কিছু পরিষ্কার করবে everything এটি আপনার মূল আউটপুট ফোল্ডারটি ডিফল্টরূপে '/ বিল্ড' মুছে দেয়। এটা কি যেটা তুমি খুজছো?
সি_মেকার

6
না। যদি কোনও নির্দিষ্ট কাজের জন্য কোনও আউটপুট ফাইল হিসাবে আপ-টু-ডেটকে ক্যাপচার করা না হয় তবে তা পুনরায় সেট আপ হবে না। এটি হ'ল, যদি আমার বিল্ড ব্রেকের কিছু অংশ থাকে তবে সামগ্রিকভাবে সফল হয় তবে ধরা পড়েছে রাষ্ট্রটি ভুল, এবং আমার এটি সাফ করা দরকার।
স্টিফান কেন্ডাল

1
সাধারণত 'ক্লিন' টাস্ক যা বিল্ডডিরের প্রত্যেকটি মোছা মুছে দেয় সেগুলি বিল্ড স্ক্রিপ্টগুলিতে পাওয়া যায় কারণ এটি বেস প্লাগইন দ্বারা প্রবর্তিত হয়েছিল।
রিনি গ্রোস্কে

5

আমার একটি কঠিন কেস হয়েছে যেখানে টাস্কটির 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 }
    }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.