গ্রেডলে টাস্ক নির্ভরতা তালিকাভুক্ত করার কোনও উপায় আছে?


139

./gradle tasksকাজের কিছু "তালিকা"। Http://gradle.org/docs/current/userguide/java_plugin.html এ দেখানো আছে এমন কোনও গোপন বিষয় তালিকাভুক্ত নেই। এছাড়াও, অন্যান্য প্লাগইনগুলিতে কাজের মধ্যে নির্ভরতার এত সুন্দর সুন্দর গ্রাফ থাকবে না।

কোন উপায় আছে?

  1. গ্রেড সহ সমস্ত প্লাগইনগুলিতে সমস্ত কার্য তালিকাবদ্ধ করুন
  2. কাজগুলি এবং কোন কাজের উপর নির্ভর করে সেগুলি তালিকাভুক্ত করুন (কাজের জন্য সাজানো যেমন সাজানো যেমন dependency:tree)

উত্তর:


99

উপলভ্য কার্য এবং কার্য নির্ভরতার আরও বিশদ তালিকা পেতে আপনি - সমস্ত পতাকাটি ব্যবহার করতে পারেন

gradle tasks --all

সম্পাদনা: মন্তব্যে রাদিম দ্বারা উল্লিখিত হিসাবে, এই কমান্ডটি নির্ভরশীলতাগুলি গ্রেড 3.3 এবং নতুনের জন্য নয় ( https://docs.gradle.org/3.3/release-notes.html#improved-performance-of-tasks- রিপোর্ট )।


এটি ওয়েব থেকে কোথাও নির্ভরতা ডাউনলোড করার জন্য কোনও কাজের তালিকাবদ্ধ বলে মনে হচ্ছে না ??? টাস্কগ্রহণের কাজটি চলমান স্পষ্টভাবে স্টাফ ডাউনলোড করে তবে নিশ্চিত না যে নির্ভরতাটি কোথায় ... ওভারলোড করার কোনও উপায় নেই?
ডিন হিলার

2
সংস্থানগুলি ডাউনলোড করার ক্রিয়া কোনও উত্সর্গীকৃত কাজের সাথে আবদ্ধ নয়। গ্রেডের নির্ভরতাগুলি কনফিগারেশনে যুক্ত করা হয়। এই কনফিগারেশনের ফাইলগুলি যেমন আপনি (আপনার নিজের কার্য বাস্তবায়নে) বা গ্রেডেল (তার নিজস্ব সরবরাহিত কার্যগুলিতে) উল্লেখ করেছেন তখনই সমাধানের প্রক্রিয়াটি ট্রিগার হয়ে যায়।
রিনি গ্রোশকে

54
এটি নির্ভরতাগুলির তালিকা করে না, কমপক্ষে গ্রেডল 1.5 বা 1.7 সহ। এটি কি একবার এটি করেছিল বা এটি একটি অসম্পূর্ণ উত্তর?
টম অ্যান্ডারসন

10
কেবল ৩.৩ এর চেয়ে বেশি পুরানো গ্রেডের জন্য কাজ করে। টাস্ক রিপোর্টিংয়ে একটি পরিবর্তন হয়েছিল যা এই আউটপুটটিকে সরিয়ে ফেলে।
রদিম

135

কাজগুলি এবং কী কাজের উপর তারা নির্ভর করে তার তালিকা দিন (ম্যভেনের ডিপেনসির মতো সাজান: গাছ তবে কাজের জন্য)

এর জন্য আপনি --dry-run(বা -m) বিকল্পটি ব্যবহার করতে পারেন যা নির্দিষ্ট কমান্ডের জন্য সম্পাদিত কার্যগুলি তালিকাভুক্ত করে তবে কমান্ডটি কার্যকর করে না, যেমন

gradle assemble --dry-run

আপনি এখানে আরও জানতে পারেন


2
এটি কোনও টাস্ক ট্রি বা টাস্ক নির্ভরতা তালিকাভুক্ত করে না, এটি কেবল কোন কার্য সম্পাদন করা হত তা তালিকাভুক্ত করে।
বিস্যাম্পোলো

@ বি ক্যাম্পোলো কি পার্থক্য?
কিলটেক

39

আপনি সাধারণ ব্যবহারের সাথে com.dorongold.task-ট্রি প্লাগইন চেষ্টা করতে পারেন :

gradle <task 1>...<task N> taskTree

রিডমে থেকে উদাহরণ ফলাফল :

gradle build taskTree

:build
+--- :assemble
|    \--- :jar
|         \--- :classes
|              +--- :compileJava
|              \--- :processResources
\--- :check
     \--- :test
          +--- :classes
          |    +--- :compileJava
          |    \--- :processResources
          \--- :testClasses
               +--- :compileTestJava
               |    \--- :classes
               |         +--- :compileJava
               |         \--- :processResources
               \--- :processTestResources

5
একটি ক্লিনার আউটপুট জন্য, ব্যবহার করুন --no-repeat। সূত্র: github.com/dorongold/gradle-task-tree
অ্যালিকেলজিন-কিলাকা

30

আপনি এটিকে আটকে রাখতে পারেন build.gradle:

gradle.taskGraph.whenReady {taskGraph ->
    println "Found task graph: " + taskGraph
    println "Found " + taskGraph.allTasks.size() + " tasks."
    taskGraph.allTasks.forEach { task ->
        println task
        task.dependsOn.forEach { dep ->
            println "  - " + dep
        }
    }
}

বা এটি আপনার মধ্যে build.gradle.kts:

gradle.taskGraph.whenReady(closureOf<TaskExecutionGraph> {
    println("Found task graph: $this")
    println("Found " + allTasks.size + " tasks.")
    allTasks.forEach { task ->
        println(task)
        task.dependsOn.forEach { dep ->
            println("  - $dep")
        }
    }
})

তারপরে গ্রেড দিয়ে আপনার কাজটি চালাও:

./gradlew build

এবং আপনার এটি দেখতে হবে:

Found task graph: org.gradle.execution.taskgraph.DefaultTaskGraphExecuter@36eb780c
Found 19 tasks.
task ':compileJava'
  - task 'compileJava' input files
task ':compileScala'
  - task 'compileScala' input files
  - compileJava
task ':processResources'
  - task 'processResources' input files
task ':classes'
  - org.gradle.api.internal.tasks.DefaultTaskDependency@287a7782
  - task 'classes' input files
  - compileJava
  - dirs
  - compileScala
  - processResources
task ':jar'
  - task 'jar' input files
task ':assemble'
  - task 'assemble' input files
  - org.gradle.api.internal.artifacts.DefaultPublishArtifactSet$ArtifactsTaskDependency@5bad9616
task ':compileTestJava'
    - task 'compileTestJava' input files
task ':compileTestScala'
  - task 'compileTestScala' input files
  - compileTestJava
task ':processTestResources'
  - task 'processTestResources' input files
task ':testClasses'
  - processTestResources
  - task 'testClasses' input files
  - compileTestScala
  - org.gradle.api.internal.tasks.DefaultTaskDependency@42c1fa08
  - compileTestJava
  - dirs
task ':compileIntegrationTestJava'
  - task 'compileIntegrationTestJava' input files
task ':compileIntegrationTestScala'
  - task 'compileIntegrationTestScala' input files
  - compileIntegrationTestJava
task ':processIntegrationTestResources'
  - task 'processIntegrationTestResources' input files
task ':integrationTestClasses'
  - processIntegrationTestResources
  - compileIntegrationTestJava
  - org.gradle.api.internal.tasks.DefaultTaskDependency@7c8aa0fe
  - compileIntegrationTestScala
  - dirs
  - task 'integrationTestClasses' input files
task ':composeUp'
  - task 'composeUp' input files
task ':integrationTest'
  - task ':composeUp'
  - task 'integrationTest' input files
task ':test'
  - task 'test' input files
task ':check'
  - task 'check' input files
  - task ':test'
  - task ':integrationTest'
task ':build'
  - task 'build' input files
  - check
  - assemble

এটিকে কিছুটা গ্রাফের মতো দেখাচ্ছে তবে প্রতিটি টাস্কের উপর নির্ভর করে এটি ঠিক। এটি প্রতিটি নোডের পিতামাতার সাথে নোডের একটি তালিকা। সুতরাং আপনার গ্রাফটি যদি দেখতে লাগে তবে A <- B <- (C and D)এটি আপনাকে প্রদর্শন করবে B-A, C-B, D-B। এটি এখনও কিছু সাহায্য!
নুমেনন

1
এটি একটি গ্রাফ হওয়া উচিত, তবে গ্রাফটি সরবরাহ করা নগণ্য নয়। উপরের কোডটির আউটপুট কেবল কোনও কার্যের তাত্ক্ষণিক নির্ভরতা তালিকাভুক্ত করে।
cstroe

15

গ্রেড টাস্ক ট্রি নিম্নলিখিত প্লাগইনগুলি দ্বারা ভিজ্যুয়ালাইজড gradle tasks --all বা চেষ্টা করতে পারেন :

গ্রাফগুলি গ্রেডল এবং তালাইওট: এটিকে দেখুন: https://proandroiddev.com/ رافs-gradle-and-talaiot-b0c02c50d2b1 ব্লগটি গ্রাফিকভাবে দেখার কাজ এবং নির্ভরতাগুলি তালিকাভুক্ত করে। এই ব্যবহার বিনামূল্যে খোলা Graphviz টুল Gephi ( https://gephi.org/features/ )

গ্রেড-টাস্ক-ট্রি : https://github.com/dorongold/gradle-task-tree এবং

গ্রেড-ভিজিটগ : https://github.com/mmalohlava/gradle-visteg

  1. গ্রেড-ভিস্টেগ প্লাগইন: উত্পন্ন ফাইলটি গ্রাফভিজ dot ইউটিলিটির মাধ্যমে পোস্ট-প্রসেস করা যেতে পারে ।

  2. উদাহরণস্বরূপ , পিএনজি চিত্রটি নীচে তৈরি করা হয়েছে:

    cd build/reports/; dot -Tpng ./visteg.dot -o ./visteg.dot.png

আরও তথ্যের জন্য, দয়া করে গ্রাফভিজ হোম পৃষ্ঠা দেখুন।

টাস্কটি চালানোর জন্য যে কাজগুলি আসলেই ব্যবহৃত হয় (উদাহরণস্বরূপ build) --profileঅপশনটি ব্যবহার করে সুন্দর HTML পৃষ্ঠায় দেখা যায়

গ্রেড - প্রোফাইলে ক্লিন বিল্ড

এটি সম্পূর্ণ হয়ে যাওয়ার পরে, বিল্ড / রিপোর্ট / প্রোফাইল ফোল্ডারটিতে যান এবং .html ফাইলটি ব্রাউজ করুন। একটি সুন্দর এইচটিএমএল পৃষ্ঠায় সময় নেওয়ার সাথে আপনি নির্ভরতাগুলির সমাধান এবং অন্যান্য তথ্য দেখতে পাবেন see


11
প্রতিবেদনে কাজের মধ্যে নির্ভরতা সম্পর্কে কোনও তথ্য নেই। এটি কেবল নির্মানের সময় কার্যকর করা সমস্ত কার্য ক্রমিকভাবে তালিকাবদ্ধ করে।
rwitzel

7

Gradle.getTaskGraph () ব্যবহার করে বিল্ড স্ক্রিপ্টের মধ্যে এটি পরীক্ষা করতে আপনি কার্যক্রমে টাস্ক গ্রাফ অ্যাক্সেস করতে পারেন)


6
গ্রেডলেগেটটাস্কগ্রাফ () কেবলমাত্র আপনার বর্তমান গ্রেড বিল্ডে কার্যকর করা হবে এবং এই টাস্কগ্রাফটি কেবলমাত্র কার্যকরকরণের পর্যায়ে উপলব্ধ execution
রিনি গ্রোস্কে

3

আপনার মাল্টিপ্রজেক্টটি বাড়ার সাথে সাথে আমি যে সমাধানটিকে সঠিক হিসাবে চিহ্নিত করেছি সেগুলি কিছুটা অস্বস্তিকর এবং পড়া শক্ত hard

gradle tasks --all

পরিবর্তে, আমি এটিকে আরও সহজ করে তুলতে একটি নির্দিষ্ট প্রকল্পের দিকে এগিয়ে চলেছি

gradlew :full-httpproxy:tasks --all

যেখানে 'পূর্ণ-httpproxy' হ'ল আমার প্রকল্পের নাম (এবং ডিরেক্টরিটি সাধারণত আদর্শ)।

আমি অবশ্য কৌতূহলী যে কীভাবে মাস্টার / রুট প্রকল্পের কাজগুলি তালিকাভুক্ত করতে পারি এবং এখানেও একটি অসামান্য প্রশ্ন রয়েছে

কেবল গ্রেডে মাস্টার প্রকল্পের জন্য সমস্ত কাজ কীভাবে তালিকাভুক্ত করবেন?

এটি করা এখনই সম্ভব বলে মনে হচ্ছে না।



0

Cstroe দ্বারা উত্তর অনুসরণ করার পরে, নিম্নলিখিত প্রতিটি গ্রেডল টাস্কের ইনপুট এবং আউটপুট ফাইলগুলি মুদ্রণ করে। নির্ভরতা কখনও কখনও ইনপুট / আউটপুট সম্পর্কের দ্বারা সংজ্ঞায়িত হওয়ায় এটি কার্যকর। উদাহরণস্বরূপ, যদি টাস্ক বি টাস্ক এ এর ​​ফলাফল আউটপুট ব্যবহার করে তবে সিস্ট্রয়ের উত্তর আপনাকে নির্ভরতা দেখাবে না। নিম্নলিখিতটি খুব আদিম তবে প্রতিটি কাজের জন্য ইনপুট এবং আউটপুট ফাইলগুলির তালিকা প্রদর্শন করে:

gradle.taskGraph.whenReady {taskGraph ->
    println "Found task graph: " + taskGraph
    println "Found " + taskGraph.allTasks.size() + " tasks."
    taskGraph.allTasks.forEach { task ->
        println()
        println("----- " + task + " -----")
        println("depends on tasks: " + task.dependsOn)
        println("inputs: ")
        task.inputs.getFiles().getFiles().collect { f -> println(" - " + f)}
        println("outputs: ")
        task.outputs.getFiles().getFiles().collect { f -> println(" + " + f)}
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.