প্রকল্পের বর্ণনা অবজেক্ট মডেল
ম্যাভেন যে জিনিসগুলিকে প্রথম স্থানে প্রমিত করেছিল তার মধ্যে একটি ছিল প্রকল্পের বিবরণ। মাভেনের আগে, প্রতিটি IDE এর নিজস্ব প্রকল্প ফাইল ছিল, যা প্রকল্প এবং এর সমাবেশ সম্পর্কে তথ্য সংরক্ষণ করে (এবং প্রায়শই বাইনারি আকারে)।
Maven একটি XML-ভিত্তিক, সর্বজনীন, ওপেন স্ট্যান্ডার্ড নিয়ে এসেছে যা বর্ণনা করে যে একটি প্রকল্প কী, এটি কীভাবে তৈরি করা উচিত এবং বিভিন্ন ট্যাগ ব্যবহার করে এটির কী নির্ভরতা রয়েছে। প্রকল্পের বিবরণ একটি একক ফাইলে থাকে, সাধারণত pom.xml নামে ।
একটি উদাহরণ pom.xml ফাইল :
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example.com</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-io </groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
এই উদাহরণে তিনটি জিনিস লেখা আছে:
- ম্যাভেন প্রজেক্ট স্ট্যান্ডার্ডের সংস্করণ সম্পর্কে তথ্য নীল।
- প্রকল্প সম্পর্কে তথ্য নিজেই লাল হয়.
- ব্যবহৃত লাইব্রেরি সম্পর্কে তথ্য সবুজ।
আসুন pom ফাইল ডিভাইসটি ঘনিষ্ঠভাবে দেখে নেওয়া যাক।
মাভেন প্রকল্পের কাঠামো
এবং অবিলম্বে প্রশ্ন হল: আপনি কি শেষ উদাহরণে অদ্ভুততার দিকে মনোযোগ দিয়েছেন? এতে প্রজেক্ট কোডের তথ্য নেই! জাভা ফাইল, রিসোর্স, প্রোপার্টি ফাইল, এইচটিএমএল, বিল্ড স্ক্রিপ্ট এবং এর মতো কোথায় সংরক্ষণ করা হয় সে সম্পর্কে কোনও শব্দ নেই।
এবং উত্তরটি সহজ - মাভেন প্রকল্পের নকশাকে মানসম্মত করেছেন। একটি প্রকল্পের মধ্যে কোড সংগঠিত করার জন্য বিভিন্ন বিকল্প রয়েছে এবং সবচেয়ে সাধারণ হল:
স্ট্যান্ডার্ড IDEA প্রকল্পগুলির পরে কাঠামোটি একটু অস্বাভাবিক, তবে এটি সর্বজনীন। আপনার জীবনে আপনি যে প্রকল্পগুলির মুখোমুখি হবেন তার 90% এই ফোল্ডার কাঠামো থাকবে ।
আপনি যদি একটি Maven প্রকল্প তৈরি করেন (IDEA ব্যবহার করে বা কনসোল ব্যবহার করে), তাহলে এটি নির্দিষ্ট ফর্ম গ্রহণ করবে। দেখা যাক কিভাবে এটা সব এখানে কাজ করে.
src ফোল্ডার , আপনি এটি অনুমান করেছেন, এতে প্রকল্পের উত্স কোড রয়েছে। এটির দুটি সাবফোল্ডার রয়েছে: প্রধান এবং পরীক্ষা ।
/src/main/java ফোল্ডারটি প্রকল্পের সমস্ত জাভা ক্লাসের রুট। আপনার যদি com.codegym.Cat ক্লাস থাকে, তাহলে এটি /src/main/java /com/codegym /Cat.java ফোল্ডারে থাকবে । টেক্সট বা বাইনারি রিসোর্স থাকলে, সেগুলি /src/main/resources ফোল্ডারে সংরক্ষণ করা উচিত ।
/src/test ফোল্ডারের গঠন /src/main ফোল্ডারের কাঠামোর অনুরূপ , কিন্তু এতে পরীক্ষা এবং তাদের সম্পদ রয়েছে। মাভেন নিজেই জানেন যে কীভাবে একটি প্রকল্প তৈরি করার সময় প্রয়োজনীয় পরীক্ষা চালাতে হয়, তবে আমরা একটি পৃথক বক্তৃতায় এটি সম্পর্কে কথা বলব।
প্রজেক্টে একটি /টার্গেট ফোল্ডারও রয়েছে , যেখানে মাভেন প্রোজেক্টটি তৈরি হওয়ার পরে সংরক্ষণ করবে। যেহেতু বড় প্রকল্পগুলিতে প্রায়ই নন-তুচ্ছ বিল্ড স্ক্রিপ্ট থাকে, তাই এই ফোল্ডারে কিছুই সংরক্ষণ করা হয় না।
/টার্গেট ফোল্ডারের দ্বিতীয় উদ্দেশ্য হল মধ্যবর্তী বিল্ড ফলাফল ক্যাশে করা। একটি বড় প্রকল্প তৈরি করার সময়, মাভেন শুধুমাত্র এর সেই অংশটি পুনর্নির্মাণ করতে পারে যা পরিবর্তিত হয়েছে, এইভাবে নির্মাণের সময়কে কয়েকগুণ গতি বাড়িয়ে দেয়।
ঠিক আছে, কেকের উপর চেরি হিসাবে - প্রকল্পের একেবারে মূলে রয়েছে pom.xml ফাইল। এটিতে প্রকল্প সম্পর্কে সমস্ত প্রয়োজনীয় তথ্য রয়েছে, যা আমরা নীচে আলোচনা করব।
pom.xml ডিভাইস
শুরু করার জন্য, pom ফাইলটি হল xml, তাই এতে স্ট্যান্ডার্ড হেডার এবং নেমস্পেস তথ্য রয়েছে। এটি সম্পূর্ণরূপে XML স্ট্যান্ডার্ড সম্পর্কে, তাই আমরা এটি সম্পর্কে বিস্তারিত কথা বলব না। এর মানে হল:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
…
</ প্রকল্প>
এছাড়াও, সাধারণত <project> ট্যাগের ভিতরের প্রথম লাইনটি pom-file স্ট্যান্ডার্ডের সংস্করণের একটি বিবরণ। প্রায় সবসময় এটি 4.0 হয়। এই, এছাড়াও, আমাদের জন্য কোন আগ্রহের নয়.
আমরা যে প্রথম লাইনগুলিতে আগ্রহী তা দেখতে এইরকম:
<groupId>com.sample.app</groupId>
<artifactId>new-app</artifactId>
<version>1.0-SNAPSHOT</version>
ম্যাভেন স্ট্যান্ডার্ডে আমরা যা বর্ণনা করি (প্রোগ্রাম, প্রকল্প, মডিউল, লাইব্রেরি, ইত্যাদি) তা আবার না বোঝার জন্য, এটিকে বলা হয় আর্টিফ্যাক্ট শব্দ । মাভেনের স্রষ্টাদের আপনি যা অস্বীকার করতে পারবেন না তা হল প্রমিতকরণের ভালবাসা।
আপনি যে তিনটি ট্যাগ দেখছেন তার মানে হল:
- groupId - ডোমেন নাম যোগ করে যে প্যাকেজটিতে অ্যাপ্লিকেশনটি রয়েছে;
- artifactId - অনন্য স্ট্রিং কী (প্রকল্প আইডি);
- সংস্করণ - প্রকল্পের সংস্করণ।
এই তিনটি পরামিতি দ্ব্যর্থহীনভাবে যেকোনো শিল্পকর্মকে বর্ণনা করার জন্য যথেষ্ট ।
আরও, প্রকল্পের বর্ণনার পরে, সাধারণত প্রকল্পটি ব্যবহার করে এমন নিদর্শনগুলির (লাইব্রেরি) একটি তালিকা থাকে। এটা এই মত কিছু দেখায়:
<নির্ভরতা>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
এই উদাহরণে, আমরা কমন্স-আইও প্যাকেজ থেকে কমন্স-আইও লাইব্রেরি, সংস্করণ 2.6, আমাদের প্রকল্পে যোগ করি।
বিল্ড টাইমে, ম্যাভেন তার গ্লোবাল রিপোজিটরিতে এমন একটি লাইব্রেরি খুঁজে পাবে এবং এটি আপনার প্রকল্পে যুক্ত করবে। এবং উপায় দ্বারা, শুধুমাত্র Maven এটা করতে পারেন না.
কিভাবে IDEA Maven এর সাথে কাজ করে
ইন্টেলিজ আইডিইএ ম্যাভেনের সাথে কাজ করতে দুর্দান্ত। তিনি জানেন কিভাবে এই জাতীয় প্রকল্পগুলি খুলতে হয়, সেগুলি নিজেই তৈরি করতে হয়, বিভিন্ন বিল্ড স্ক্রিপ্ট চালাতে হয় এবং অন্তর্ভুক্ত লাইব্রেরিগুলি পুরোপুরি বোঝে।
এমনকি কিছু সময়ের জন্য এটির নিজস্ব অন্তর্নির্মিত মাভেন রয়েছে, তবে আপনাকে এখনও এটি ইনস্টল এবং কনফিগার করতে সক্ষম হতে হবে, তাই IDEA এর এই বৈশিষ্ট্যটি আগে উল্লেখ করা হয়নি। তাত্ত্বিকভাবে, আইডিইএ দুটি মাভেনের মধ্যে দ্বন্দ্ব থাকতে পারে, তাই আপনার জন্য এটি জেনে রাখা ভাল যে দুটি আছে।
আইডিইএতে কীভাবে একটি নতুন মাভেন প্রকল্প তৈরি করবেন:
মেনু ফাইল > নতুন প্রকল্প ক্লিক করুন. বাম দিকের মেনু আইটেমটি নির্বাচন করুন নতুন প্রকল্প ।
আসুন কিছু পয়েন্ট স্পষ্ট করা যাক:
- প্রকল্পের নাম;
- প্রকল্পের জন্য ফোল্ডার;
- প্রকল্পের ভাষা জাভা;
- প্রকল্পের ধরন Maven.
নীচের দিকে উন্নত সেটিংস বিভাগে, IDEA আপনাকে আমাদের নতুন প্রকল্পের goupID, artifactID এবং সংস্করণ উল্লেখ করতে অনুরোধ করবে। এই ডেটা সবসময় পরে সহজেই পরিবর্তন করা যেতে পারে। প্রস্তাবিতগুলি থেকে চয়ন করুন বা আপনার নিজের লিখুন:
এর পরে, প্রমিতভাবে প্রয়োজনীয় স্থানে একটি প্রকল্প তৈরি করুন। ফলস্বরূপ, আমরা কাঠামো দেখতে পাই:
জাভা ফোল্ডারে ক্লাস এবং প্যাকেজ তৈরি করতে হবে, আমরা ইতিমধ্যে এই সম্পর্কে কথা বলেছি। এবং আমি মনে করি আপনি সহজেই এটি পরিচালনা করতে পারেন। আমরা এগিয়ে যাওয়ার জন্য প্রস্তুত, কিন্তু আসুন আমরা একটু পিছনে ফিরে যাই, একটি গুরুত্বপূর্ণ বিষয় যা আমরা কিছুটা "এড়িয়ে" গিয়েছিলাম।
GO TO FULL VERSION