এটা কি সম্ভব ?
হ্যাঁ, অবশ্যই. আমার অতীতের কাঠামোয় এর মতো কয়েকটি প্রকল্প রয়েছে, এখানে কিছু বিট আশা করি আপনি শুরু করবেন।
মাভেনের দুটি প্রধান বৈশিষ্ট্য রয়েছে যা আপনি একসাথে জিনিসগুলি বুনতে ব্যবহার করবেন:
ভাগ এবং বিজয়
আপনার একাধিক স্বতন্ত্র প্রকল্পে আপনার প্রকল্পগুলি বিভক্ত করতে হবে। এখানে স্বতন্ত্রভাবে আমি বলতে চাইছি যে প্রকল্পের বাইরের কোডের সমস্ত রেফারেন্সগুলি মাভেনের নির্ভরতার মাধ্যমে করা হয় এবং সরাসরি উত্স ট্রিটি মার্জ না করে।
আপনার উত্স গাছের অবস্থার উপর নির্ভর করে এটি অনেক কাজের প্রতিনিধিত্ব করতে পারে। এটি বলেছিল যে আপনি ম্যাভেনকে জুতা দেওয়ার জন্য এটি করছেন না বরং আপনার কোড বেসটি কাঠামোগত ও স্যানিটাইজ করার মাধ্যম হিসাবে করছেন। এটিকে আপনার সরঞ্জামযুক্ত হিসাবে ভাবেন, এখানে জিনিসগুলি পাওয়া খুব সহজ:
এখানে চেয়ে:
ম্যাভেন কনভেনশনের উপর অনেক বেশি নির্ভর করে তাই আপনার স্টাফগুলি যত বেশি সুসংহত করা যায় মাভেন আপনাকে তত বেশি সহায়তা করতে পারে। এটি বলেছিল, এটির নিজের কনভেনশনটি আরও ভালভাবে ফিট করার জন্য আপনাকে পুনরায় সংগঠিত করার প্রয়োজন হতে পারে এবং যদি আমাকে এখানে একটি টুকরো পরামর্শ দিতে হয় তবে মাভেনের কনভেনশনগুলিতে ফিট করার জন্য আপনার স্টাফটি পরিবর্তন করা ম্যাভেনের সাথে কনফিগার করার চেয়ে অনেক বেশি সহজ to আপনার সম্মেলন বুঝতে।
যদি এই প্রকল্পগুলি মূল প্রয়োগের বাইরে ব্যবহারযোগ্য হতে পারে তবে তারা সত্যিকারের স্বাধীন গ্রন্থাগার হিসাবে থাকতে পারে এবং মভেন নির্ভরতা থাকলেও অন্তর্ভুক্ত থাকতে পারে। তাদের নিজস্ব সংগ্রহস্থলে থাকতে হবে (অ্যাপ্লিকেশন উত্স ট্রিতে নয়) এবং মূল অ্যাপ্লিকেশনটির কোনও অংশের উপর নির্ভর করা উচিত নয়।
আপনার অ্যাপ্লিকেশনের মূল অংশগুলি, একবার প্রকল্পগুলিতে বিভক্ত হয়ে মডিউল হিসাবে একত্রে রাখা যেতে পারে। সাধারণত আপনি এগুলিকে আপনার অ্যাপ্লিকেশনের মূল উত্স ফোল্ডারের সাব-ফোল্ডার হিসাবে স্থাপন করবেন।
এছাড়াও আপনার অ্যাপ্লিকেশনের জন্য আপনার প্যারেন্ট পম-এ মডিউল ঘোষণা থাকবে। আপনি সেখানে আপনার অ্যাপের সমস্ত সাধারণ নির্ভরতা স্থাপনের পাশাপাশি বেশিরভাগ বিল্ড প্লাগইন এবং তাদের কনফিগারেশন ঘোষণা করতে পারবেন। এখানে আমি দৃly়রূপে প্রত্যাহার করছি আপনি অ্যাপ্লিকেশনটির সংস্করণ হিসাবে মডিউলগুলিতে পুনরায় ব্যবহার করতে পারেন এমন জিনিসের জন্য বৈশিষ্ট্যের একটি গ্রুপ রাখুন place যখন সমস্ত কিছুতে একই সংস্করণ থাকে এবং সংস্করণটি এক জায়গায় করা কেবল এটি কাজ করে তখন পরিচালনা করা অনেক সহজ।
সাধনী দ্বারা প্রয়োগকরণ
আপনি যদি 1 এর চেয়ে বড় একটি দল হন তবে আমি দৃ strongly়রূপে পুনরুদ্ধার করব যে আপনি আপনার মাভেন নির্ভরতার জন্য একটি সংগ্রহস্থল ইনস্টল করেছেন। এ Artifactory , নেক্সাস বা Archiva । আপনি সরাসরি এগুলিতে ইনস্টল করার জন্য পিওএম ফাইলটি কনফিগার করতে পারেন যাতে এটি চালানো একবার ওভারহেডের বেশি হওয়া উচিত নয় তবে সঠিকভাবে সঠিক জারের সাথে নির্ভরতাগুলি সমাধান করতে আপনার দলকে অনেক সময় সাশ্রয় করবে।
পরবর্তী যৌক্তিক পদক্ষেপটি টুল করার বিষয়ে এখানে একটি অবিচ্ছিন্ন ইন্টিগ্রেশন সিস্টেম ( জেনকিনস , আরও অনেকগুলি রয়েছে)। এটি পরীক্ষাগুলি চালিয়ে উত্স তৈরিতে এবং কারুকারীর দিকে ঠেলাঠেলি করবে, এই সব জায়গায় আপনার যা করতে হবে তা হল কোডের কাজ করা এবং বাকীটি কেবল কাজ করে।
যেহেতু আপনি আপনার অ্যাপ্লিকেশনটি যুদ্ধক্ষেত্র হিসাবে প্যাকেজিং করছেন যুদ্ধটি পরিচালনা করতে পারে এবং জার ফাইলগুলি বা অন্যান্য অনুরূপ কাজগুলিকে চারপাশে মার্জ না করে সমস্ত নির্ভরতা তাদের যথাযথ স্থানে স্থাপন করতে পারে, সুতরাং সেখানে কোনও উদ্বেগ নেই।
উদাহরণ
আমি এখানে অনেক দীর্ঘ যেতে পারি তবে কিছুই ভাল উদাহরণ দেয় না। অনুরূপ প্রস্থের প্রকল্পগুলির জন্য গিথুব দেখুন এবং দেখুন তারা কীভাবে তাদের পম ফাইল এবং ফোল্ডার স্তরক্রম তৈরি করেছে। একের বেশি দেখুন, কিছু আপনার সেটআপ অন্যের চেয়ে ভাল ফিট করবে, সত্যিকার অর্থে কেউই সত্যের অবতারণা করতে পারে না তবে কীভাবে আপনার চিন্তাভাবনাগুলি তা করতে পারে সে জন্য আপনার যথেষ্ট পরিমাণে সন্ধান করা উচিত।
উদাহরণস্বরূপ জেনকিনস নিন :
আপনি দেখতে পারেন তাদের পিতামাতাদের পিওএম বেশ বিস্তৃত।
আপনি এই বিভাগে দেখতে পারেন তারা মডিউল ব্যবহার করে:
<modules>
<module>core</module>
<module>war</module>
<module>test</module>
<module>cli</module>
</modules>
এবং প্রতিটি মডিউল একই নামের সাথে একটি সাব-ফোল্ডারটি সম্পর্কিত যা একটি পিওএমও ধারণ করে। আপনি এটির মতো যতগুলি বাসা বাঁধতে পারেন, তবে এটি বিষ্ঠা স্তরের মধ্যে রাখুন;)।
ছোট শুরু করুন
আপনি যদি কখনও ম্যাভেন ব্যবহার না করে থাকেন তবে আমি প্রস্তাব দেব তবে আপনি এখনই মডিউলগুলি দিয়ে শুরু করবেন না। এটিকে ধীরে ধীরে নিন, শুরু করুন, আপনার কাছে থাকতে পারে এমন একটি সাধারণ লাইব্রেরি বলুন এবং এটিকে একটি মাভেন প্রকল্প করুন। তারপরে আপনার মূল অ্যাপ্লিকেশনটিকে একটি সাধারণ মাভেন প্রকল্প করুন। সেই কাজটি করার পরে, সাধারণ নির্ভরতা যুক্ত করা শুরু করুন, তারপরে আপনার প্রথম মডিউলটি ভাগ করুন।
ম্যাভেন একটি দুর্দান্ত সরঞ্জাম তবে এটি ঘাড়েও প্রচন্ড ব্যথা হতে পারে বিশেষত যখন জিনিসগুলি আপনার পথে চলে না। আপনার প্রথম যেতে যেতে পুরো ঘৃণার সাথে শুরু করা বিপর্যয়ের একটি রেসিপি (আমার জন্য ছিল!)।
যদি বিষয়গুলি কিছুটা অদ্ভুত হয় তবে আপনি সর্বদা mvn help:effective-pom
কমান্ডটি মাভেন কী বুঝতে পেরেছেন তা দেখতে ব্যবহার করতে পারেন।
প্লাগ-ইন
আপনার মন্তব্য থেকে আপনি কী অর্জন করতে চান তা আমি আরও ভাল করে বুঝতে পারি। এই ক্ষেত্রে আমি প্লাগইন পদ্ধতির জন্য যেতে হবে। এমন একটি প্রকল্প তৈরি করুন যা এক্সটেনশান পয়েন্টগুলির API টি প্রকাশ করে যেখানে আপনি কাজটি আলাদা করতে চান। তারপরে আপনি এটি কোনও নতুন প্রকল্পের নির্ভরতা হিসাবে ব্যবহার করতে পারেন যা এটি কার্যকর করবে। আপনার প্রধান অ্যাপ্লিকেশনটিতে কেবলমাত্র এই বাস্তবায়নগুলির জন্য যথাযথ নির্ভরতা যুক্ত করুন (এই বারে মভেন মডিউলগুলি ব্যবহার করবেন না) এবং আপনার ভাল হওয়া উচিত। শেষ পর্যন্ত মূল অ্যাপ্লিকেশন প্রকল্পটি বাহ্যিক প্রকল্পগুলিতে এবং নির্ভরতার মধ্য দিয়ে লোড করা প্রায় কোনও সোর্স কোড বহন করবে না।
যুদ্ধটি স্থিতিশীলভাবে নির্ভরশীলতা থেকে তৈরি করা হয়েছে, সেগুলির মধ্যে একটির পরিবর্তনের ফলে পুরো বিষয়টি পুনর্নির্মাণের ইঙ্গিত পাওয়া যায় না কেন, এই পদ্ধতির সাথে আপনাকে পুরো অ্যাপ্লিকেশনটি পুনরায় স্থাপন করতে হবে less এটি এটির চেয়ে খারাপ শোনাচ্ছে, বাস্তবে কেবল নতুন পরিবর্তনগুলি বাস্তবেই নির্মিত হবে, বাকিগুলি মূলত পূর্ববর্তী জারের অনুলিপি হবে। তবে যেহেতু সবকিছু যুদ্ধের ফাইলে রয়েছে তাই এটি পুনর্নির্মাণের প্রয়োজন হবে এবং সার্ভারটি বন্ধ করে আবার চালু করা দরকার।
আপনার যদি আরও কিছু করার দরকার হয় তবে অসম্ভব না হলেও কিছুটা আরও জটিল হয়ে উঠুন। আমি আপনাকে ওএসজিআইয়ের দিকে নজর দেব, অ্যাপাচি ফেলিক্স আপনাকে শুরু করতে পারে, যদিও এর সাথে আরও কিছু বাস্তবায়ন রয়েছে। এটি আপনাকে বাহ্যিক জার নিতে এবং এগুলিকে যথাযথ প্লাগইনগুলিতে পরিণত করার অনুমতি দেবে। গতিশীল পুনরায় লোড এবং আপডেটের দরজা খোলার উপাদানগুলির রানটাইম লাইফসাইলে আপনি আরও অনেক বেশি নিয়ন্ত্রণ অর্জন করতে পারবেন। তবে এটির জন্য আপনার কোরটিতে আবারও বড় ধরনের পরিবর্তন দরকার হবে, সম্ভবত কোনও ভাল সূচনা পয়েন্ট নয়। তবে একবার আপনার যদি এমন একটি প্রকল্প হয়ে যায় যা ভালভাবে বিচ্ছিন্ন হয়ে যায় এবং সমস্ত অংশগুলি আপনার পছন্দ মতোভাবে বিচ্ছিন্ন করে দেয় তবে অ্যাপ্লিকেশনটি আপডেট করার সময় শুরু করা এবং বন্ধ করা একটি বড় সমস্যা হ'ল এটি একটি প্রাকৃতিক পরবর্তী পদক্ষেপ হতে পারে।
মডিউল এবং নির্ভরতার মধ্যে মূল পার্থক্য হ'ল:
- মডিউলগুলি মূল অ্যাপ্লিকেশন হিসাবে একই উত্স গাছটিতে উপ-ফোল্ডার হিসাবে আদর্শভাবে বাস করবে।
- নির্ভরতা যে কোনও জায়গায় হতে পারে।
আপনি বাইবেল জানতে পারেন এখানে ।
ভাগ্য ভালো, এই সাহায্য আশা করি.