যুদ্ধ ফাইল কাঠামো

প্রতিটি ওয়েব অ্যাপ্লিকেশন, যখন ওয়েব সার্ভারে আপলোড করা হয়, একটি একক .war ফাইলে প্যাকেজ করা হয়। WAR এখন ওয়েব অ্যাপ্লিকেশন রিসোর্সের জন্য দাঁড়িয়েছে, যদিও এটি ওয়েব আর্কাইভ ছিল। আসলে, এটি একটি জিপ সংরক্ষণাগার যাতে একটি প্যাকেজ করা ওয়েব অ্যাপ্লিকেশন রয়েছে৷

এখানে একটি যুদ্ধ ফাইলের সাধারণ বিষয়বস্তু কেমন দেখায়:

/index.html
/guestbook.jsp
/images/logo.png
/js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/codegym/Util.class
/WEB-INF/classes/com/codegym/MainServlet.class
/WEB-INF/classes/application.properties
/WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF

ওয়ার ফাইলের ভিতরে স্ট্যাটিক ওয়েব রিসোর্স থাকে যেমন .html, .css, .js ফাইল ইত্যাদি। এছাড়াও ছবি, ভিডিও এবং সাধারণভাবে যেকোনো ফাইল থাকতে পারে। তারা রুট বা সাবফোল্ডার হতে পারে, এটা কোন ব্যাপার না. তাদের অনুরোধ করা হলে টমক্যাট কেবল তাদের পরিবেশন করবে।

ধরা যাক আপনার ওয়েব অ্যাপ্লিকেশন অ্যাপল নামে ওয়েব সার্ভারে লোড করা হয়েছে, তারপর যখন http://localhost/apple/images/logo.png অনুরোধ করা হবে , টমক্যাট ফাইলটি /images/logo.png ফিরিয়ে দেবে ।

আলাদাভাবে, এটি WEB-INF ফোল্ডারটি লক্ষ্য করার মতো । এটি জাভা কোড সংরক্ষণ করার জন্য ডিজাইন করা হয়েছে। টমক্যাট তার বিষয়বস্তু দেবে না ।

/ওয়েব-আইএনএফ/ক্লাস/ কম্পাইল করা নন-JAR জাভা ক্লাসের জন্য ডিরেক্টরি, সার্লেট ক্লাস এবং অ্যাপ্লিকেশন চালানোর আগে লোডারের প্রয়োজনীয় রিসোর্স ফাইল সহ
/ওয়েব-আইএনএফ/লিব/ জার লাইব্রেরি সংরক্ষণ করার জায়গা
/WEB-INF/web.xml স্থাপনার বর্ণনাকারী

যুদ্ধ ফাইল কাঠামো এবং মাভেন প্রকল্প

এখন মাভেন প্রকল্পের ডিরেক্টরি অনুক্রমের দিকে যাওয়া যাক। আপনি অফিসিয়াল ম্যানুয়ালটিতে সম্পূর্ণ ক্যাটালগ বিন্যাস দেখতে পারেন। এখানে আমরা পরীক্ষার সংস্থানগুলি বাদ দিয়ে কিছুটা সংক্ষিপ্ত সংস্করণে এটির সাথে পরিচিত হব। সুতরাং, স্ট্যান্ডার্ড মাভেন ডিরেক্টরি অনুক্রমটি এইরকম দেখাচ্ছে:

src/main/java সাধারণত গৃহীত প্যাকেজ শ্রেণিবিন্যাস অনুসারে অ্যাপ্লিকেশন ক্লাস এবং লাইব্রেরির উত্স কোড
src/প্রধান/সম্পদ অ্যাপ্লিকেশন রিসোর্স ফাইল: ডাটাবেস সেটিংস, স্থানীয়করণ ফাইল, ইত্যাদি।
src/main/webapp ওয়েব অ্যাপ্লিকেশন সংস্থান (JSP ফাইল, টেক্সট ফাইল, স্ক্রিপ্ট, ইত্যাদি)

আপনি দেখতে পাচ্ছেন, এটি আপনার জানা WAR ফাইলের কাঠামোর থেকে উল্লেখযোগ্যভাবে আলাদা। কিন্তু একটি ওয়েব অ্যাপ্লিকেশন কম্পাইল করার সময় আসলে যা ঘটে তা হল জাভা EE স্পেসিফিকেশনে সংজ্ঞায়িত কাঠামোর মধ্যে ফাইলগুলিকে সরানো এবং সংযুক্ত করা।

src/main/webapp ডিরেক্টরিটি ওয়েব অ্যাপ্লিকেশনটির প্রসঙ্গ মূলকে সংজ্ঞায়িত করে (যখন একটি সার্ভারে স্থাপন করা হয়, তখন প্রসঙ্গ রুটটি WAR ফাইলের নামের মতোই হয়) এবং ইতিমধ্যেই এটির মধ্যে WEB-INF ডিরেক্টরি রয়েছে৷ অর্থাৎ, src/main/webapp- এর বিষয়বস্তু সম্পূর্ণরূপে ওয়েব অ্যাপ্লিকেশনে স্থানান্তরিত হয়।

আপনার সমস্ত জাভা ক্লাস ক্লাস ফাইলে কম্পাইল করা হয় এবং তাদের প্যাকেজ স্ট্রাকচার বজায় রেখে /WEB-INF/classes/ ডিরেক্টরিতে সরানো হয় । অন্তর্ভুক্ত লাইব্রেরিগুলির JAR, যা Maven pom.xml নির্ভরতায় সংজ্ঞায়িত করা হয়েছে যেমন আমরা উপরে সংজ্ঞায়িত করেছি, /WEB-INF/lib/ ডিরেক্টরিতে সরানো হয় ।

অ্যাপ্লিকেশন সংস্থানগুলি src/main/resourcesগুলিকে অ্যাপ্লিকেশনের ক্লাসপাথে স্থানান্তরিত করা হয়, বিশেষত একই /WEB-INF/classes/ ডিরেক্টরিতে ।

এটি সম্পূর্ণরূপে পরিষ্কার করার জন্য, এই চিত্রটি দেখুন, যা আপনাকে বুঝতে সাহায্য করবে যে একটি প্রকল্প তৈরি করার সময় কীভাবে এবং কোথায় যায়:

যুদ্ধ ফাইল ডিভাইস