নির্ভরতা সংস্করণ দ্বন্দ্ব এড়ান?


10

যে কোনও জাভা প্রকল্প যা আমার জার ব্যবহার করে, প্রায় অবশ্যই একটি অন্য জারের উপরে অতিরিক্ত নির্ভরতা রাখে, যা আমার জারেও নির্ভরতা হিসাবে থাকে।

সমস্যাটি হ'ল, অন্যান্য জারে একাধিক সংস্করণ রয়েছে।

উত্থিত হতে পারে এমন যে কোনও সমস্যা আমি কীভাবে এড়াতে পারি, সম্ভবত আপনার ২ য় বয়ামের প্রকল্পের সংস্করণটি আমার জারের সংস্করণ ২ য় জারের সংস্করণ থেকে আলাদা?

আমি চাই না যে আমার ব্যবহারকারীদের আমার জারটি যুক্ত করার জন্য কিছু অভিনব ক্লাসলোডিং ট্রিক করার অতিরিক্ত ঝামেলা হোক।

সেই সাধারণ নির্ভরতার প্রতিটি সম্ভাব্য সংস্করণের জন্য, আমি কি আমার জারের বিভিন্ন সংস্করণে কেবল একটি গুচ্ছ তৈরি করব? এবং তারপরে আপনি কেবল আমার জারের সংস্করণটি বেছে নিন যা আপনি ইতিমধ্যে যে 2 য় বয়সের সংস্করণ ব্যবহার করেন একইরকম ব্যবহার করে?

এটি পরিচালনা করার জন্য কি স্মার্ট উপায় আছে এবং সংঘাত ছাড়াই লোকেদের আমার জারটি ব্যবহার করা সহজ করে তোলে?

উত্তর:


10

এটা আপনার সমস্যা নয়। এটি সমাধান করা আপনার শেষ ব্যবহারকারীর উপর নির্ভর করে। এটি কেবল তৃতীয় পক্ষের নির্ভরতা ব্যবহারের অঞ্চল নিয়ে আসে এবং আমাকে নির্ভরতার দ্বন্দ্বগুলি আমার গণনার চেয়ে আরও বহুবার সমাধান করতে হয়েছিল। আপনি প্রতিটি প্রকল্পের নির্দিষ্ট নির্ভরতা দ্বন্দ্ব মিটানোর আশা করতে পারবেন না।

আপনার সফ্টওয়্যারটি আপনার নির্ভরতার সর্বশেষতম সংস্করণগুলির সাথে সঠিকভাবে পরিচালনা করা উচিত। নির্ভরতা যদি প্রতিটি রিলিজের ক্ষেত্রে তাদের ইন্টারফেস পরিবর্তন না করে, আপনার সামঞ্জস্যের একটি ব্যাপ্তি থাকা উচিত (যেমন আপনার সফ্টওয়্যারটি ডেপিতে সমস্ত সংস্করণের জন্য কাজ করে [2.0.0, 3.0.0))। যতক্ষণ আপনি সফ্টওয়্যারটি বজায় রাখছেন, আপনার এটিকে আপনার সমস্ত নির্ভরতার সর্বশেষতম সংস্করণের সাথে সামঞ্জস্য করার চেষ্টা করা উচিত।

এটি বলেছিল, এখানে এমন কিছু জিনিস যা আমি আপনার নির্ভরতার বিভিন্ন সংস্করণ সহ আপনার সফ্টওয়্যারটি ব্যবহার করে বিকাশকারী হিসাবে দরকারী মনে করি।

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

জাভাতে কি .NET- র ক্ষেত্রে অ্যাসেমব্লিকে বাইন্ডেরিং রিডাইরেক্ট App.config সেটিংয়ের মতো কিছু রয়েছে যেখানে আপনি "Foo v3.0.2 লাইব্রেরিগুলিকে Foo v3.0.5 ব্যবহার করতে হবে এবং v3.0.2 এর মতো ভান করতে হবে" তা নির্দিষ্ট করতে পারেন? আমি এখন ১১ বছরেরও বেশি সময় ধরে জাভা করিনি, সুতরাং এটি কীভাবে পরিচালনা করে তা আমার স্মৃতিটি এখন কেবল যায়।
জন জাবরোস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.