গ্রেডল - নির্ভরতার সর্বশেষতম সংস্করণ পাচ্ছে getting


94

Gradleনিম্নলিখিতটি বলার সবচেয়ে সহজ উপায় কী হবে :

'জুনিট' নির্ভরতা পুনরুদ্ধার করুন এবং এর সর্বশেষ 'রিলিজ' সংস্করণ নিন।

মাভেন এবং আইভির সংগ্রহশালা পরিচালনা করা আমার কাছে একরকম নতুন বিষয়। আমি নিম্নলিখিত পদক্ষেপগুলি চেষ্টা করেছিলাম এবং সেগুলির ফলশ্রুতিতে Could not resolve dependency ...:

  • compile "junit:junit:latest.release"কেবলমাত্র সেট করা ভান্ডারগুলি দিয়ে লিখুন mavenCentral() (তবে, আমি যদি "জুনিট: জুনিট: 4.10" বলি তবে এটি কাজ করে)।

  • compile "junit:junit:latest.release"সংগ্রহস্থল সহ লিখুন নিম্নলিখিত পদ্ধতিতে সেট করুন:

    ivy {
        // I also tried 'http://maven.org' and other possible variants.           
        url "http://repo1.maven.org" 
        layout "maven"
    }
    
  • স্প্রিং সোর্স আইভী সংগ্রহস্থল ব্যবহার করার চেষ্টা করা:

    ivy {
        artifactPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
        ivyPattern "http://repository.springsource.com/ivy/libraries/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
    }
    

আমি কিছু ভুল বুঝতে পারি। নির্ভরতার সর্বশেষতম সংস্করণ পাওয়া কেন এমন কঠিন কাজ হবে?


গতিশীল সংস্করণ উপলব্ধ সর্বশেষতম সংস্করণের জন্য স্থানধারক হতে পারে latest.integrationগতিশীল সংস্করণের জন্য গ্রেড ডকুমেন্টেশন
भावিক

উত্তর:


49

গ্রেডেল বর্তমানে মাভেনের সমর্থন করে না RELEASE(যা খুব কম ব্যবহৃত হয় এবং হ্রাস করা হয়) তবে এটি আইভির সমর্থন করে latest.release। যাইহোক, সাধারণ সুপারিশ হুবহু সংস্করণগুলির বিরুদ্ধে তৈরি করা। অন্যথায়, বিল্ডটি লটারিতে পরিণত হতে পারে।


ম্যাভেনও রিলিজ সমর্থন করে না। কেবল স্থির সংস্করণ নম্বর।
খামারবায়েস

10
আমি ডাবল চেক করেছি। মাভেন RELEASE2 এবং 3 সংস্করণ উভয়ই সমর্থন করে
পিটার নিডারউইজার

তুমি ঠিক. আমি ভুল করে ফেলেছি যে প্লাগইন সংস্করণগুলির সাহায্যে ম্যাভেন 3 এর কারণ হ'ল এটি আর রিলিজ / লেটেস্টের অনুমতি দেয় না। তবে অবশ্যই এই ধরণের সংস্করণ শনাক্তকারীদের ব্যবহার করা খারাপ অভ্যাস।
খামারবায়েস

ম্যাভেন রিলিজের সংগ্রহশালায় একটি শিল্পকর্ম হ'ল যা সম্ভব সমস্ত স্বয়ংক্রিয় (এবং সম্ভবত ম্যানুয়াল) পরীক্ষা সম্পন্ন করেছে। এই প্রক্রিয়াটির মধ্যে API এর সামঞ্জস্যতা পরীক্ষাগুলি, রিগ্রেশন টেস্টিং এবং আরও কিছু থাকা উচিত। তাহলে কেন বিল্ডটি লটারিতে পরিণত হতে পারে? কেবলমাত্র যদি আপনি "প্রকাশিত" শৈল্পিকাগুলি পর্যাপ্তরূপে পরীক্ষা করা হয় নি।
সি ক্রস

4
গ্রেড 'সর্বশেষ.প্রযুক্তি' সমর্থন করে (তবে 'রিলিজ' নয়)। আপনার নিজস্ব অভ্যন্তরীণ লাইব্রেরিগুলি অতি সাম্প্রতিক, প্রমাণিত সংস্করণে রয়েছে তা নিশ্চিত করার জন্য এটি অত্যন্ত কার্যকর - আমি পিটারের উপরে উল্লিখিত একই কারণে আমি অবশ্যই কখনও বাহ্যিক / তৃতীয় পক্ষের লাইব্রেরিগুলির জন্য এর ব্যবহারের পক্ষে করব না।
আরক্রস

259

সর্বশেষতম প্রকাশ পেতে কখনও কখনও এটি বেশ কার্যকর হতে পারে - উদাহরণস্বরূপ যদি আপনি প্রায়শই আপনার নিজস্ব নির্ভরতা প্রকাশ করেন।

আপনি সর্বশেষতম সংস্করণ পেতে পারেন

compile "junit:junit:+"

বা আরও ভাল কমপক্ষে প্রধান সংস্করণ উল্লেখ করুন

compile "junit:junit:4.+"

28
কেবল রেকর্ডের জন্য: এটি অবশ্যই ডাবল-কোট হওয়া উচিত! আমি আমার বেশিরভাগ নির্ভরতা ঘোষণার জন্য একক-কোট ব্যবহার করেছি এবং খুঁজে পেয়েছি এটি কার্যকর code 'junit:junit:4.+'হয় না
আজোনলি

4
@azonli কমপক্ষে স্থানীয় নির্ভরতার জন্য একক উদ্ধৃতি দিয়ে আমার জন্য কাজ করছে বলে মনে হচ্ছে। আপনি কি ত্রুটি পেতে পারি?
ডেভিড মোল

4
এটি "সংকলন" পরিবর্তে "টেস্টকম্পাইল" হওয়া উচিত নয়? কারণ
নিখরচায় নিদর্শনটির

6
আপনার সবসময় পুনরুত্পাদনযোগ্য বিল্ডের প্রয়োজন হয় না।
লাকাতোস গিউলা

4
@ সিমনফোরসবার্গ ... সত্য, তবে আপনি যখন নিম্ন-বিকাশ করছেন আপনি (ক) রক্তপাতের প্রবণতা অনুসরণ করতে পারেন বা (খ) 4.+আপনার প্রকল্পের জন্য v এর জন্য বাগ-ফিক্সগুলি আপ টু ডেট রাখার বিষয়টি নিশ্চিত করতে পারেন। আপনি যখন আলফা, বিটা, -আরসি বা -আরলেস পর্যায়ে পৌঁছান; আমি সম্পূর্ণরূপে সম্মত হই যে আপনার একটি খুঁটিতে সেই সংস্করণগুলি ' পেরেক ' লাগানো দরকার। আমি একটি properties' file to set version specifiers: সংকলন "জুনিট: জুনিট: $ { জুনিটভিয়ার }" `ব্যবহার করি`
হবে

25

গ্রেডেল-সংস্করণ-প্লাগইন দেখুন। এটি আপনি যা চান ঠিক তা করে তোলে: https://github.com/ben-manes/gradle-versions-plugin

ইনস্টলেশনের জন্য, গিথুব পৃষ্ঠাটি দেখুন। মূলত আপনাকে আপনার বিল্ড.gradle - প্রকল্প ফাইলটিতে এই দুটি লাইন যুক্ত করতে হবে:

apply plugin: 'com.github.ben-manes.versions'

buildscript {
    [...]
    dependencies {
        classpath 'com.github.ben-manes:gradle-versions-plugin:0.8'
        [...]
    }
}
[...]

তারপরে আপনি আপনার প্রকল্প দির টার্মিনালে এই কমান্ডটি চালিয়ে প্লাগইনটি ব্যবহার করতে পারেন:

./gradlew dependencyUpdates -Drevision=release

এবং এটি আপনাকে দেখাবে যে কোন নির্ভরতা পুরানো d


আপনি যদি প্রতিটি প্রকল্পে প্লাগইন অন্তর্ভুক্ত না করতে চান তবে আপনি এটি একটি ইনস্ক্রিপ্টে যুক্ত করতে পারেন। বিশদ জানতে অন্য প্রশ্নের এই উত্তরটি দেখুন ।
লরেন্স গনসাল্ভেস

যদি নির্ভরতাগুলি একই রেপোতে থাকে এবং আপনি সর্বদা সর্বশেষতম সংস্করণটি চান?
ব্যারি কেলি

8

সর্বশেষ গ্রেডল ব্যবহারকারী গাইড প্লাস সাইন ইন সংস্করণগুলির উল্লেখ ও ব্যাখ্যা করেছে:

7.2 থেকে আপনার নির্ভরতা ঘোষণা :

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

... বিল্ড স্ক্রিপ্ট আরও জানিয়েছে যে প্রকল্পের পরীক্ষাগুলি সংকলনের জন্য যে কোনও জুনিট> = 4.0 প্রয়োজন।

23.7 থেকে নির্ভরতা সমাধান কীভাবে কাজ করে :

যদি নির্ভরতাটিকে ডায়নামিক সংস্করণ হিসাবে ঘোষণা করা হয় (যেমন ১ ++), গ্রেডেল এটি সংগ্রহস্থলের নতুন উপলব্ধ স্ট্যাটিক সংস্করণে (১.২ এর মতো) সমাধান করবে। মাভেন সংগ্রহস্থলের জন্য, এটি ম্যাভেন-মেটাডেটা.এক্সএমএল ফাইল ব্যবহার করে করা হয়, আইভী সংগ্রহস্থলের জন্য এটি ডিরেক্টরি তালিকা তৈরি করে।


4
গুরুত্বপূর্ণ ইঙ্গিত: অগত্যা সর্বশেষতম সংস্করণ গ্রহণ করে না। আমার মন্তব্য উপরে দেখুন।
হ্যারি জি

3

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

আপনি যদি +সংস্করণটির জন্য ব্যবহার করছেন এবং কোন সংস্করণটি আসলে ব্যবহৃত হচ্ছে তা জানতে Projectচাইলে সাইডবারে নির্বাচন করুন এবং তারপরে External Librariesআপনি নীচে ব্যবহারের আসল সংস্করণ নম্বরটি দেখতে পাবেন।


আপনি একটি নির্দিষ্ট আইডিই উল্লেখ করছেন? :-)
ইনিগো

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