নির্ভরতা গাছ খুঁজতে গ্রেড ব্যবহার করা le


542

কিসের উপর নির্ভর করে তার একটি গাছ উত্পাদন করতে গ্রেড ব্যবহার করা সম্ভব?

আমার একটি প্রকল্প রয়েছে এবং আমি সমস্ত নির্ভরতা সন্ধান করতে চাই তাই আমি সামনের ঘোষণাপত্রের মাধ্যমে এটি আরও ছাঁটাই করতে সক্ষম হতে পারি ইত্যাদি etc.



@ অলিভারচারসওয়ার্থ দয়া করে উত্তরটিকে নকল হিসাবে চিহ্নিত করতে ক্লোজ বোতামটি ব্যবহার করুন
030

1
@ ব্যবহারকারী 3286701 সম্ভবত আপনি উত্তরগুলির একটি গ্রহণ করতে পারেন?
030

5
gradle dependenciesকাজ করা উচিত. সবাই এর gradlew app:dependenciesঅদ্ভুত কারণ সম্ভবত এন্ড্রয়েড।
প্রার্থনা করুন

2
এই টুইটটি উত্তর হওয়া উচিত প্রশ্ন গ্রেড সম্পর্কে। উচ্চ স্থান নির্ধারণ করা উত্তরগুলি পড়ার পরে আমি টার্মিনালটি খুললাম এবং গ্রেড ব্যবহার করে এমন একটি সাধারণ প্রকল্পের ডিরেক্টরিতে সিডি করেছি। আমি 'গ্রেড অ্যাপ্লিকেশন: নির্ভরতা' কার্যকর করেছি এবং 'বিল্ড ব্যর্থ' ত্রুটি পেয়েছি যদিও আমি কিছু নির্মাণের পরিকল্পনা করি নি। আমার প্রকল্পটি সূক্ষ্মভাবে তৈরি করে এবং আমি কেবল নির্ভরতাগুলি দেখতে চাই।
ka3ak

উত্তর:


604

অ্যান্ড্রয়েডের জন্য, এই লাইনটি ব্যবহার করুন

 gradle app:dependencies

অথবা আপনার যদি গ্রেডল র‍্যাপার থাকে:

./gradlew app:dependencies

appআপনার প্রকল্পের মডিউলটি কোথায় ।

অতিরিক্তভাবে, আপনি যদি কোনও compileবনাম testCompileবনাম androidTestCompileনির্ভরতা এবং সেই সাথে এটি কীভাবে টানছে তা পরীক্ষা করতে চান :

./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>

10
আহ, আমাকে সেখানে মডিউলটির নাম রাখতে হয়েছিল। এজন্যই ... ধন্যবাদ!
জেনিক্স

সবেমাত্র গ্রেড পড়াশুনা শুরু করেছেন, তাই একটু বিভ্রান্ত। আমি কি গ্রেডলুকে গ্রেডল হিসাবে বিবেচনা করতে পারি, আমি কি গ্রেডলের সাথে গ্রেডের মতো একই বিকল্পগুলি / কমান্ডগুলিকে ইনপুট দিতে পারি?
জেনিক্স

1
@Jenix হাঁ, যদি আপনি একটি মোড়কের ব্যবহার করছেন মাত্র ব্যবহার ./gradlewস্থানেgradle
চাদ মধ্যে Bingham

2
Project 'app' not found in root projectএই কমান্ডগুলি চালানোর সময় আমি ত্রুটি পেয়েছি । বেনজামিন সমাধান তবে কাজ করে।
ক্রোক

5
আসলে ./gradlew :dependenciesকাজ করবে। এটি আপনার সমস্ত প্রকল্পের নির্ভরতা তালিকাবদ্ধ করবে, তবে সঠিক একটিটি পাওয়া সহজ।
dirkjot

240

আপনি কমান্ড সহ নির্ভরতা গাছ রেন্ডার করতে পারেন gradle dependencies। আরও তথ্যের জন্য বিভাগটি দেখুন 11.6.4 অনলাইন ব্যবহারকারী নির্দেশিকায় প্রকল্প নির্ভরতা তালিকাভুক্ত করা


2
আমি যখন আমার অ্যান্ড্রয়েড প্রকল্পের সাথে এটি করি, তখন আমি যা পাই তা এই আউটপুটটি: পেস্টবিন.com / fএইচএফএফইউইউ পরামর্শ?
নীলজোর

3
@ নীলজার আপনি সম্ভবত ভুল ডিরেক্টরিতে কমান্ডটি প্রয়োগ করছেন (এতে build.gradleফাইলটি নেই) বা আপনার বিল্ড ফাইল কোনও প্লাগইন প্রয়োগ করে না।
বেনিয়ামিন মুশকো

6
আপনি নির্দিষ্ট প্রকল্পের জন্য গ্রেড: প্রকল্প: নির্ভরতা
মেবোনিন


3
আপনি যদি মোড়ক ব্যবহার করেন:./gradlew dependencies
স্ক্র্যাপিদেভ

152

কনসোল আউটপুট নেভিগেট gradle dependenciesকরতে আপনার যদি অসুবিধা হয় তবে আপনি প্রকল্পের রিপোর্ট প্লাগইন যুক্ত করতে পারেন :

apply plugin: 'project-report'

এবং এটি ব্যবহার করে একটি HTML প্রতিবেদন তৈরি করুন:

$ ./gradlew htmlDependencyReport

রিপোর্ট সাধারণত পাওয়া যাবে build/reports/project/dependencies/index.html

দেখে মনে হচ্ছে: এখানে চিত্র বর্ণনা লিখুন


2
আমার জন্য এটি ছিল ঠিকgradle htmlDependencyReport
রিচার্ড টিঙ্গল

2
এটি মাল্টিমিডুল প্রকল্পগুলির জন্য কাজ করে না। আমি কেবল দেখতে এবং খালি তালিকা।
অ্যাডাম আর্বল্ড

1
দুর্দান্ত খুঁজে। আসলে প্লাগইন পথ আরো নেই docs.gradle.org/current/userguide/project_report_plugin.html
ruX

78

অ্যান্ড্রয়েড স্টুডিওতে (কমপক্ষে v2.3.3 থেকে) আপনি ইউআই থেকে সরাসরি কমান্ডটি চালাতে পারেন:

ক্লিক করুন গ্রেডল ট্যাবে এবং তারপরে ডাবল ক্লিক করুন : আপনার মডেল -> টাস্ক -> অ্যান্ড্রয়েড -> অ্যান্ড্রয়েড নির্ভরতা

গাছটি গ্রেডল কনসোল ট্যাবে প্রদর্শিত হবে

একটি চিত্র হাজার শব্দের মূল্যবান


1
আমি কীভাবে "গ্রেডেল প্রকল্পগুলি" দেখুন?
ব্যবহারকারী 3526

1
@ ব্যবহারকারী 3526 আপনার পর্দার ডানদিকে পাওয়া "গ্রেডেল" ট্যাগটিতে ক্লিক করুন। রেফারেন্সের জন্য সংযুক্ত চিত্রটি দেখুন
নিকোলস ক্যারাসকো

2
আমি দেখতে পেলাম যে এটি গাছের পরিবর্তে এএসপি 3.2.0 এ ফ্ল্যাট তালিকা তৈরি করে। কমান্ড লাইন রূপটি একটি গাছ তৈরি করে।
টম

5
@ টম চালান 'ডিপ্রেসেস' টাস্ক 'এন্ড্রয়েড' নয় 'সহায়তা' বিভাগের অধীনে। এটি গাছ হিসাবে দেখায়
ম্যাক্সিম বেরেজভস্কি

27

প্রায়শই সম্পূর্ণ test, compileএবং androidTestCompileনির্ভরতা গ্রাফ একসাথে পরীক্ষা করার জন্য খুব বেশি। আপনি যদি কেবল compileনির্ভরতা গ্রাফটি চান তবে আপনি এটি ব্যবহার করতে পারেন:

./gradlew app:dependencies --configuration compile

উত্স: গ্রেডল ডক্স বিভাগ 4.7.6

দ্রষ্টব্য: compileগ্রেডলের আরও সাম্প্রতিক সংস্করণগুলিতে অবহিত করা হয়েছে এবং আরও সাম্প্রতিক সংস্করণগুলিতে আপনাকে আপনার সমস্ত compileনির্ভরতা এতে স্থানান্তর করার পরামর্শ দেওয়া হচ্ছে implementation। দয়া করে এই উত্তরটি এখানে দেখুন


4
কেবল একটি নোট: সংকলন অবচিত করা হয়েছে, লোকেরা এখন বাস্তবায়নের দিকে এগিয়ে যেতে হবে
রেনাল্ডোমোরির

25

আপনি যদি কোনও গ্রাফে আপনার নির্ভরতাগুলি কল্পনা করতে চান তবে আপনি গ্রেড-নির্ভরতা-গ্রাফ-জেনারেটর প্লাগইন ব্যবহার করতে পারেন ।

সাধারণত এই প্লাগইনটির আউটপুট বিল্ড / রিপোর্ট / নির্ভরতা-গ্রাফ ডিরেক্টরিতে পাওয়া যায় এবং এতে আপনি ০.০.০ ব্যবহার করছেন তবে এতে তিনটি ফাইল (.ডট | .পিএনজি |। এসভিজি) রয়েছে contains প্লাগইনটির সংস্করণ ।

একটি বাস্তব অ্যাপ্লিকেশন ( দাবা ঘড়ি ) এর উপর নির্ভরতা গ্রাফের উদাহরণ :

চিত্রলেখ


ওহে ডেভিড, আমি প্লাগইন নির্দেশিকায় যেমন বলেছিলাম তেমনই করেছি। আমি প্রকল্প গ্রেডে প্লাগইন প্রয়োগ করেছি তবে বিল্ড ডিরেক্টরিতে কোনও প্রতিবেদন ফোল্ডার দেখছি না। প্রকল্পটি নির্মাণ ও পরিচালনা ব্যতীত আমাদের আরও কিছু করার দরকার আছে কি?
রশি এম ঠাক্কার

এই প্লাগইন নির্ভরতা সংস্করণ এবং বিরোধগুলি দেখায় না। মাভেনের জন্য এই মত; github.com/janssk1/maven-ographic-plugin/wiki/Manual এটি এটিকে অকেজো করে
তোলে

18

অ্যান্ড্রয়েডের জন্য, এটি টার্মিনালে টাইপ করুন

gradlew app:dependencies

এটি আপনার মতো আপগ্রেড করার জন্য সমস্ত নির্ভরতা এবং নতুন সংস্করণগুলির সাথে তালিকাবদ্ধ করবে

com.android.support:customtabs:26.1.0 -> 27.1.1 (*)

15

জিনিসগুলি গ্রেডলে এগিয়ে গেছে তাই আমি বিশ্বাস করি যে এই প্রশ্নটির আরও একটি উত্তর যোগ্য।
গ্রেডেল ৪.৩ থেকে, " বিল্ড স্ক্যানগুলি " চালু হয়েছিল। সমস্ত প্রাসঙ্গিক তথ্য গ্রেডল ডক্সে উপলব্ধ ( 1 , 2) )। আমার কাছে মনে হয় এটি এখন আপনার নির্ভরতা (এবং সাধারণত আপনার বিল্ড) পরিষ্কার, সুসংহত ভাবে যাচাই করার সহজতম উপায়।

এগুলি তৈরি করা খুব সহজ, কেবল চালানো:

gradle build --scan  

(বা ./gradlew build --scanআপনি যদি একটি আবরণ ব্যবহার করেন)

এটি এলোমেলোভাবে উত্পাদিত লিঙ্ক তৈরি করে যেখানে আপনি নিজের স্ক্যানটি দেখতে পারেন। এই লিঙ্কটি খোলার সময়, আপনি আপনার ইমেল প্রবেশ করুন এবং লিঙ্কটির সম্পূর্ণ নিয়ন্ত্রণ অর্জন করুন: যেমন। এটি ভাগ করুন বা এটি মুছুন। এটা পেয়েছে কেবল নির্ভরতা নয়, আপনার বিল্ড সম্পর্কে প্রচুর তথ্য । আপনি আপনার নির্ভরতা, তাদের শ্রেণিবিন্যাস, সংগ্রহস্থলগুলি সেগুলি পেতে ব্যবহার করতে পারেন তবে আপনার বিল্ড সম্পর্কে প্রচুর পরিমাণে অন্যান্য জিনিসও দেখতে পাবেন, যেমন এর কার্য সম্পাদন (যা বড় জটিল বিল্ডগুলির পক্ষে আগ্রহী), আপনার পরীক্ষাগুলি, এমনকি আপনার কনসোল আউটপুট এবং আপনার সিস্টেম কনফিগারেশন, যা জেডিকে এবং জেভিএম ব্যবহৃত হয়েছিল, সর্বোচ্চ হিপ আকার ইত্যাদি

এটি একটি মোক প্রকল্পের একটি প্রিন্টস্ক্রিন:

স্ক্যান উদাহরণ তৈরি করুন

একটি বিল্ড স্ক্যান একটি বিল্ডের একটি ভাগযোগ্য রেকর্ড যা ঘটেছে এবং কেন হয়েছে তার অন্তর্দৃষ্টি সরবরাহ করে। আপনি স্ক্যান.gradle.com এ বিনামূল্যে একটি বিল্ড স্ক্যান তৈরি করতে পারেন।

তবে নোট করুন, আপনার বিল্ড প্রক্রিয়াটির জন্য সেই তথ্য প্রেরণ করা হবে গ্রেডল সার্ভারগুলিতে করা । আপনি যখন পরিদর্শন শেষ করবেন এটি মুছতে আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে।

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

সম্পাদনা করুন :
কিছু অতিরিক্ত নোট মন্তব্য থেকে কিছু প্রতিক্রিয়া অন্তর্ভুক্ত:
1) ভুল করে বা বুঝতে না পেরে এটি করা খুব কঠিন যে আপনার বিল্ডের জন্য কিছু তথ্য অনলাইনে থাকবে (এটি মুছার ক্ষমতা সহ আপনার কাছে ব্যক্তিগত, তবে এখনও অনলাইনে) )।

কার্যকর করার gradle build --scanসময় নিম্নলিখিত বার্তা উপস্থিত হয়:

Publishing a build scan to scans.gradle.com requires accepting the Gradle
Terms of Service defined at https://gradle.com/terms-of-service. Do you
accept these terms? [yes, no]

আপনাকে স্পষ্টভাবে লিখতে হবে yesএবং তারপরে বার্তাটি চালিয়ে যেতে হবে:

Publishing build scan...  
https://gradle.com/s/a12en0dasdu

2) গ্রেডেল এন্টারপ্রাইজে আপনি নিজের সার্ভারে গ্রেড বিল্ড স্ক্যানগুলি হোস্ট করতে পারেন। তবে এতে আমার কোনও অভিজ্ঞতা নেই এবং আমার প্রস্তাবিত পদ্ধতিটি আপনার বিল্ড স্ক্যানগুলির জন্য গ্রেডলের সার্ভারগুলি ব্যবহার করে স্ট্যান্ডার্ড গ্রেডল বিতরণ সম্পর্কে ছিল।

3) গ্রেডল নিজেই আপনার বেশিরভাগ বিল্ড সমস্যার মোকাবিলা করার উপায় হিসাবে বিল্ড স্ক্যানগুলি প্রচার করে।


11
উত্তরটি নিম্নোক্ত করার জন্য দুঃখিত, তবে আইএমও এটি প্রশ্নের উত্তর দিচ্ছে না এবং এটি পরিষ্কারভাবে সতর্ক করে দিচ্ছে না যে gradle build --scanআপনি নিজের বিল্ডের বিবরণ ইন্টারনেটে কোথাও প্রকাশ করেছেন - এবং এটি মোছার জন্য আপনাকে এটিকে কাজের ই-মেইল ঠিকানার সাথে যুক্ত করতে হবে।
মিশাল

1
আরে মিশাল, আপনি যদি এমনটি অনুভব করেন তবে ডাউন ডাউনকে স্বাগত জানাই। তবে আমাকে জিজ্ঞাসা করতে হবে, আপনি কি চেষ্টা করে দেখেছেন? যখন নির্বাহ gradle build --scanকরুন cmd, আপনি অনুরোধ জানানো হয়: Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service. Do you accept these terms? [yes, no]। আপনাকে ম্যানুয়ালি লিখতে হবে yes। ঠিক তার পরে, আপনি বার্তাটি পাবেন: Publishing build scan... https://gradle.com/s/a12en0dasdu(এলোমেলোভাবে একই ধরণের লিঙ্কটি রাখুন)। সুতরাং আমি বিশ্বাস করি এটি আগে আপনাকে যথাযথভাবে সতর্ক করে। (১/২)
ট্রেনম্যান

1
আপনি লিঙ্কটি দেখতে এবং স্ক্যানটি তাত্ক্ষণিকভাবে ইমেল বা কিছুই বাদ দিয়ে মুছতে পারেন। উত্তর হিসাবে, আমি বিশ্বাস করি এটি প্রশ্নের উত্তর দেয় । প্রকৃতপক্ষে, এটি অন্যান্য পদ্ধতির তুলনায় আপনার নির্ভরতা সম্পর্কে অতিরিক্ত তথ্য (এবং অতিরিক্ত মাইল চলেছে: পুরো বিল্ডের জন্য অতিরিক্ত তথ্যও) shows যদি আপনি এটি আপনার পছন্দ মতো পছন্দ করেন না তবে এটি সম্পূর্ণরূপে ঠিক আছে তবে কাজের জন্য এটি এখনই সর্বাধিক বিস্তৃত সরঞ্জাম, সুতরাং এটি মনে রাখা মূল্যবান। অবশেষে, এটি গ্রেডেল নিজেই প্রচার করেছেন, এটি আক্ষরিক অর্থে তাদের প্রথম গাইড (২/২)
ট্রাইম্যান

@ মিশল দুঃখিত, আপনাকে ট্যাগ করতে আগে ভুলে গেছি যাতে আপনি আমার মন্তব্যগুলি নাও দেখে থাকতে পারেন। (আমি আপনাকে যে মন্তব্য দিয়ে উত্তর দিয়েছি সেগুলি সংযুক্ত করতে পোস্টটি সম্পাদনা করেছি
ট্রাইম্যান

2
আমি এটি চেষ্টা করি নি - শর্তাদি স্বীকার করার বিষয়ে স্পষ্ট করার জন্য ধন্যবাদ। আমি আমার -1 সরিয়েছি।
মিশাল 21

9

অ্যান্ড্রয়েড স্টুডিওতে

1) টার্মিনালটি খুলুন এবং নিশ্চিত করুন যে আপনি প্রকল্পের মূল ফোল্ডারে রয়েছেন।

২) চালান ./gradlew app:dependencies (গ্রেডেল র‌্যাপার ব্যবহার না করা হলে চেষ্টা করুন gradle app:dependencies)

নোট করুন যে দৌড়াদৌড়ি ./gradle dependenciesআপনাকে কেবল প্রকল্পের মূল ফোল্ডারের নির্ভরশীলতা দেবে, সুতরাং উপরের পদ্ধতিতে অ্যাপটির উল্লেখ ./gradlew app:dependenciesকরা গুরুত্বপূর্ণ , যেমন গুরুত্বপূর্ণ।


1
আমার জন্য এটি "./" ছাড়াই কাজ করেছে: গ্রেডলু অ্যাপ: নির্ভরতা।
গিলাদ লেভিনসন

7

এটি চালাতে আমিও দরকারী বলে মনে করেছি:

./gradlew dI --dependency <your library>

এটি দেখায় যে নির্ভরতাগুলি কীভাবে সমাধান করা হচ্ছে ( dependencyInsight) এবং আপনার যেখানে লাইব্রেরিগুলি জোর করে বা বাদ দিতে হবে সেখানে ডিবাগ করতে আপনাকে সহায়তা করবেbuild.gradle

দেখুন: https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html


আপনারা বলার মতো আমি এটি চেষ্টা করে দেখি তবে এটি কার্যকর হয়নি :( স্ট্যাকওভারফ্লো.com
লোকি

7

নোট করুন যে ./gradlew <module_directory>:<module_name>:dependenciesমডিউলের বিল্ডড্র্যাডলে পৌঁছানোর আগে অতিরিক্ত ডিরেক্টরি থাকলে আপনার এমন কিছু করার প্রয়োজন হতে পারে । সন্দেহ ./gradlew tasks --allহলে নামটি যাচাই করার জন্য করুন।


7

আমার জন্য, এটি কেবল একটি আদেশ ছিল

বিল্ড.gradle অ্যাড plugin

apply plugin: 'project-report'

এবং তারপরে cmd এ যান এবং নিম্নলিখিত কমান্ডটি চালান

./gradlew htmlDependencyReport

এটি আমাকে একটি HTML প্রতিবেদন দেয় WOW এইচটিএমএল প্রতিবেদন 💕 💕

সব আমার প্রভু।


এটি ইতিমধ্যে ডেভাস্টার জবাব দিয়েছেন।
ব্রুট_ফোর্স

হ্যাঁ, থানকিউ @ ব্রুট_ফোর্স তখন আমার কাছে দৃশ্যমান ছিল না। তুমি কী চাও, আমার উত্তর সরিয়ে দাও?
দুপিন্দর সিং

1

গ্রেডলের সাম্প্রতিক সংস্করণের জন্য (আমি 6.4.1 সংস্করণ দিয়ে পরীক্ষা করেছি):

gradle dependencies --configuration compileClasspath

বা যদি আপনি গ্রেডেল র‍্যাপার ব্যবহার করছেন:

gradlew dependencies --configuration compileClasspath

0

আপনি যদি দুটি পদক্ষেপের মধ্যে একক ফাইলে সমস্ত নির্ভরতা চান। আপনার এই যোগ build.gradle.ktsআপনার প্রকল্পের রুট মধ্যে:

project.rootProject.allprojects {
    apply(plugin="project-report")

    this.task("allDependencies", DependencyReportTask::class) {
        evaluationDependsOnChildren()
        this.setRenderer(AsciiDependencyReportRenderer())
    }

}

তারপরে আবেদন করুন:

./gradlew allDependencies | grep '\-\-\-' | grep -Po '\w+.*$' | awk -F ' ' '{ print $1 }' | sort | grep -v '\{' | grep -v '\[' | uniq | grep '.\+:.\+:.\+'

এটি আপনাকে আপনার প্রকল্পের সমস্ত নির্ভরতা এবং তৃতীয় পক্ষের সমস্ত নির্ভরতা সহ উপ-প্রকল্পগুলি দেবে।

যদি আপনি এটি একটি প্রোগ্রামেটিক উপায়ে সম্পন্ন করতে চান তবে আপনার নির্ভরতার কাস্টম রেন্ডারারের প্রয়োজন হবে - আপনি AsciiDependencyReportRendererডিফল্টরূপে নির্ভরতার একটি এসকিআই গ্রাফ প্রিন্ট করে প্রারম্ভিক করতে পারেন ।

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