জনপ্রিয় পদ্ধতির সমস্যা
ইন্টারনেটে আপনি যে উত্তরগুলি সন্ধান করতে পারবেন তার সর্বাধিক উত্তরগুলি আপনাকে স্থানীয় স্থানীয় সংগ্রহস্থলের উপর নির্ভরতা ইনস্টল করতে বা "সিস্টেম" স্কোপ নির্দিষ্ট করে pom
এবং আপনার প্রকল্পের উত্সের সাথে নির্ভরতা বন্টন করার পরামর্শ দেয়। তবে এই উভয় সমাধানই ত্রুটিযুক্ত।
আপনার কেন "স্থানীয় রেপো ইনস্টল করুন" পদ্ধতির প্রয়োগ করা উচিত নয়
আপনি যখন আপনার স্থানীয় সংগ্রহস্থলের উপর নির্ভরতা ইনস্টল করেন এটি সেখানে থেকে যায়। আপনার ডিস্ট্রিবিউশন আর্টিক্ট্যাক্ট যতক্ষণ না এই সংগ্রহস্থলটিতে অ্যাক্সেস থাকবে ততক্ষণ ঠিক করবে। সমস্যাটি বেশিরভাগ ক্ষেত্রেই এই সংগ্রহস্থলটি আপনার স্থানীয় মেশিনে থাকবে, সুতরাং অন্য কোনও মেশিনের উপর এই নির্ভরতা সমাধানের কোনও উপায় থাকবে না। স্পষ্টভাবে আপনার নিদর্শনটি নির্দিষ্ট কোনও মেশিনের উপর নির্ভরশীল করা জিনিসগুলি হ্যান্ডেল করার উপায় নয়। অন্যথায় এই নির্ভরতা ally প্রকল্পের সাথে কাজ করা প্রতিটি মেশিনে স্থানীয়ভাবে ইনস্টল করতে হবে যা এর চেয়ে ভাল আর নয়।
আপনার "সিস্টেম স্কোপ" পদ্ধতির প্রয়োগ করা উচিত নয় কেন
"সিস্টেম স্কোপ" পদ্ধতির সাথে আপনি যে জারগুলি নির্ভর করেন সেগুলি কোনও সংগ্রহস্থলে ইনস্টল হয় না বা আপনার লক্ষ্য প্যাকেজগুলির সাথে সংযুক্ত থাকে। এজন্য আপনার বিতরণ প্যাকেজের ব্যবহারের সময় সেই নির্ভরতা সমাধানের কোনও উপায় থাকবে না। আমি বিশ্বাস করি যে সিস্টেম স্কোপ ব্যবহার এমনকি অবমূল্যায়নের কারণও ছিল। যাইহোক আপনি হ্রাস করা বৈশিষ্ট্যের উপর নির্ভর করতে চান না।
স্ট্যাটিক ইন-প্রজেক্ট রিপোজিটরি সমাধান
এটি আপনার পরে রাখার পরে pom
:
<repository>
<id>repo</id>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://${project.basedir}/repo</url>
</repository>
x.y.z
মাভেনের ফর্মের একটি গ্রুপ আইডি সহ প্রতিটি শিল্পকর্মের জন্য শিল্পকর্মগুলির সন্ধানে আপনার প্রকল্প দিরের নীচের অবস্থানটি অন্তর্ভুক্ত করবে:
repo/
| - x/
| | - y/
| | | - z/
| | | | - ${artifactId}/
| | | | | - ${version}/
| | | | | | - ${artifactId}-${version}.jar
এ সম্পর্কে আরও বিস্তারিত জানাতে আপনি এই ব্লগ পোস্টটি পড়তে পারেন ।
প্রকল্প রেপো ইনস্টল করতে মাভেন ব্যবহার করুন
হাত দিয়ে এই কাঠামোটি তৈরি করার পরিবর্তে আমি আপনার জারগুলিকে শিল্পী হিসাবে ইনস্টল করতে একটি মাভেন প্লাগইন ব্যবহার করার পরামর্শ দিচ্ছি। সুতরাং, repo
ফোল্ডার নির্বাহের অধীনে ইন-প্রজেক্ট রিপোজিটরিতে একটি শৈল্পিক ইনস্টল করতে :
mvn install:install-file -DlocalRepositoryPath=repo -DcreateChecksum=true -Dpackaging=jar -Dfile=[your-jar] -DgroupId=[...] -DartifactId=[...] -Dversion=[...]
আপনি যদি এই পদ্ধতির চয়ন করেন তবে আপনি এখানে রেপোজিটরি ঘোষণাকে সহজ করতে পারবেন pom
:
<repository>
<id>repo</id>
<url>file://${project.basedir}/repo</url>
</repository>
একটি সহায়ক স্ক্রিপ্ট
যেহেতু প্রতিটি লাইবের জন্য ইনস্টলেশন কমান্ড কার্যকর করা বিরক্তিকর এবং স্পষ্টতই ত্রুটিযুক্ত প্রবণ, তাই আমি একটি ইউটিলিটি স্ক্রিপ্ট তৈরি করেছি যা স্বয়ংক্রিয়ভাবে সমস্ত lib
ফটোগুলি থেকে একটি প্রকল্পের সংগ্রহস্থলে ইনস্টল করে দেয় , এবং স্বয়ংক্রিয়ভাবে সমস্ত মেটাডেটা (গ্রুপআইডি, আর্টিফ্যাক্টআইডি এবং ইত্যাদি) সমাধান করে from ফাইলের নাম। স্ক্রিপ্টটি আপনার অনুলিপিটি কপির পেস্ট করার জন্য নির্ভরতা এক্সএমএল প্রিন্ট করে pom
।
আপনার লক্ষ্য প্যাকেজে নির্ভরতা অন্তর্ভুক্ত করুন
আপনি যখন আপনার ইন-প্রজেক্ট রিপোজিটরি তৈরি করবেন তখন আপনি প্রকল্পের নির্ভরতাগুলি তার উত্স দিয়ে বিতরণ করার একটি সমস্যা সমাধান করেছেন, তবে তখন থেকে আপনার প্রকল্পের লক্ষ্য নিদর্শনটি প্রকাশিত জারগুলির উপর নির্ভর করবে, সুতরাং যখন আপনি ইনস্টল করবেন এটি কোনও সংগ্রহস্থলের কাছে এটির অদৃশ্যযোগ্য নির্ভরতা থাকবে।
এই সমস্যাটিকে হারাতে আমি আপনার লক্ষ্য প্যাকেজে এই নির্ভরশীলতাগুলি অন্তর্ভুক্ত করার পরামর্শ দিচ্ছি। এটি আপনি এসেম্বলি প্লাগইন বা ওয়ানজার প্লাগইন দিয়ে আরও ভাল করতে পারেন । ওয়ানজারে সরকারী দস্তাবেজগুলি উপলব্ধি করা সহজ।