Maven ব্যবহার করে নির্ভরতা সহ একটি এক্সিকিউটেবল JAR তৈরি করা

Maven ব্যবহার করে নির্ভরতা সহ একটি এক্সিকিউটেবল JAR তৈরি করা
Maven ব্যবহার করে নির্ভরতা সহ একটি এক্সিকিউটেবল JAR তৈরি করা

মাভেন প্রকল্পগুলিকে একটি একক এক্সিকিউটেবল JAR-এ প্যাকেজ করা

জাভা প্রকল্পগুলির সাথে কাজ করার সময়, সহজ বিতরণের জন্য আপনার অ্যাপ্লিকেশনটিকে একটি একক এক্সিকিউটেবল JAR ফাইলে প্যাকেজ করার প্রয়োজন হয়। Maven, একটি শক্তিশালী বিল্ড অটোমেশন টুল, ডেভেলপারদের এই একক আউটপুট JAR-এর মধ্যে সমস্ত প্রয়োজনীয় নির্ভরতা অন্তর্ভুক্ত করতে দেয়।

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

আদেশ বর্ণনা
<plugin> নির্মাণ প্রক্রিয়া চলাকালীন ব্যবহার করার জন্য একটি Maven প্লাগইন সংজ্ঞায়িত করে। প্লাগইনগুলি নির্দিষ্ট কাজ সম্পাদন করতে পারে যেমন কোড কম্পাইল করা বা প্রকল্পের প্যাকেজিং।
<groupId> Maven প্রকল্পের জন্য গ্রুপ শনাক্তকারী নির্দিষ্ট করে, সাধারণত একটি বিপরীত ডোমেন নাম।
<artifactId> আর্টিফ্যাক্টের শনাক্তকারীকে সংজ্ঞায়িত করে, যা প্রকল্পের নাম।
<version> প্রকল্পের বর্তমান সংস্করণ নির্দেশ করে।
<build> প্লাগইন এবং সম্পদ সহ প্রকল্পের জন্য বিল্ড কনফিগারেশন রয়েছে।
<descriptorRef> ম্যাভেন অ্যাসেম্বলি প্লাগইন ব্যবহারের জন্য একটি পূর্বনির্ধারিত বর্ণনাকারী উল্লেখ করে, যেমন "জার-সহ-নির্ভরতা"।
<mainClass> JAR ফাইলটি চালানোর সময় কার্যকর করা প্রধান শ্রেণী নির্দিষ্ট করে।
<execution> একটি প্লাগইনের মধ্যে একটি এক্সিকিউশন ব্লক সংজ্ঞায়িত করে, বিভিন্ন বিল্ড ফেজে সঞ্চালিত কাজগুলি নির্দিষ্ট করে।
mvn clean package সমস্ত নির্ভরতা সহ প্রকল্পটি পরিষ্কার করার এবং এটিকে একটি JAR ফাইলে প্যাকেজ করার জন্য কমান্ড।
java -jar target/...jar জেনারেট করা JAR ফাইল চালানোর জন্য কমান্ড, JAR-এর পাথ নির্দিষ্ট করে।

Maven এর সাথে একটি এক্সিকিউটেবল JAR তৈরি এবং চালানো

উপরে প্রদত্ত স্ক্রিপ্টগুলি প্রদর্শন করে যে কীভাবে একটি মাভেন প্রজেক্টকে একটি একক এক্সিকিউটেবল JAR ফাইলে তার সমস্ত নির্ভরতা প্যাকেজ করতে কনফিগার করতে হয়। প্রথম স্ক্রিপ্ট একটি Maven হয় pom.xml ফাইল, যা প্রকল্পের কনফিগারেশন ধারণ করে। এই ফাইলের মধ্যে, <plugin> ম্যাভেন অ্যাসেম্বলি প্লাগইন সংজ্ঞায়িত করতে ট্যাগ ব্যবহার করা হয়। এই প্লাগইনটি একটি এক্সিকিউটেবল JAR তৈরি করার জন্য অত্যন্ত গুরুত্বপূর্ণ যা সমস্ত নির্ভরতা অন্তর্ভুক্ত করে। দ্য <descriptorRefs> প্লাগইন কনফিগারেশনের মধ্যে ট্যাগ-এর ব্যবহার নির্দিষ্ট করে jar-with-dependencies বর্ণনাকারী, যা নিশ্চিত করে যে প্রকল্পের সমস্ত নির্ভরতা চূড়ান্ত JAR ফাইলে প্যাকেজ করা হয়েছে। দ্য <mainClass> ভিতরে ট্যাগ <manifest> বিভাগটি অপরিহার্য কারণ এটি মাভেনকে বলে যে কোন ক্লাসে JAR চালানোর সময় চালানোর জন্য প্রধান পদ্ধতি রয়েছে।

দ্য <execution> প্লাগইন কনফিগারেশনের ভিতরে ব্লক যেখানে কাজটি ঘটে। এটা নির্দিষ্ট করে যে প্লাগইন এর লক্ষ্য single সময় মৃত্যুদন্ড কার্যকর করা উচিত package জীবনচক্র নির্মাণের পর্যায়। এটিই নির্ভরতা সহ JAR ফাইল তৈরিকে ট্রিগার করে। দ্বিতীয় স্ক্রিপ্ট একটি সাধারণ কমান্ড লাইন নির্দেশ: mvn clean package. এই কমান্ডটি প্রকল্পটি পরিষ্কার করে (আগের বিল্ড আর্টিফ্যাক্টগুলি অপসারণ করে), সোর্স কোড কম্পাইল করে, পরীক্ষা চালায় এবং প্রকল্পটিকে একটি JAR ফাইলে প্যাকেজ করে। চূড়ান্ত JAR ফাইলটি তে অবস্থিত হবে target প্রকল্পের ডিরেক্টরি এবং নাম অনুসারে artifactId এবং version এ উল্লেখ করা হয়েছে pom.xml.

Maven ব্যবহার করে নির্ভরতা সহ একটি এক্সিকিউটেবল JAR ফাইল তৈরি করা

মাভেন কনফিগারেশন স্ক্রিপ্ট

<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>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

JAR প্যাকেজ করার জন্য Maven কমান্ড চালানো হচ্ছে

কমান্ড লাইন নির্দেশাবলী

mvn clean package
# This command will compile the code, run the tests, and create the JAR file
# The JAR file will include all dependencies specified in the pom.xml
# It will be located in the target directory of the project
# The final JAR file will be named my-app-1.0-SNAPSHOT-jar-with-dependencies.jar

# To run the JAR file, use the following command:
java -jar target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
# Ensure that the mainClass specified in the pom.xml is correct
# This will start your application with all dependencies included

প্যাকেজিং নির্ভরতার জন্য উন্নত মাভেন কৌশল

ম্যাভেনের সাথে একটি এক্সিকিউটেবল JAR তৈরির জন্য মৌলিক কনফিগারেশনের বাইরে, অতিরিক্ত কৌশল রয়েছে যা আপনার বিল্ড প্রক্রিয়াকে উন্নত করতে পারে। যেমন একটি কৌশল ব্যবহার জড়িত shade এর পরিবর্তে প্লাগইন assembly প্লাগ লাগানো। মাভেন শেড প্লাগইন উবার-জেআর তৈরির জন্য আরও উন্নত বৈশিষ্ট্য সরবরাহ করে (নির্ভরতা সহ JARগুলি অন্তর্ভুক্ত)। এটি আপনাকে ক্লাসপথের দ্বন্দ্ব এড়াতে প্যাকেজগুলির নাম পরিবর্তন করতে দেয় এবং সদৃশ ক্লাস এবং সংস্থানগুলির জন্য আরও ভাল পরিচালনা প্রদান করে। অতিরিক্তভাবে, এটি চূড়ান্ত JAR-এ কোন নির্ভরতা অন্তর্ভুক্ত করা হয়েছে তার উপর সূক্ষ্ম-দানাযুক্ত নিয়ন্ত্রণ সরবরাহ করে।

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

ম্যাভেন এক্সিকিউটেবল JAR-এর জন্য সাধারণ প্রশ্ন এবং সমাধান

  1. আমি কিভাবে আমার JAR এ প্রধান শ্রেণী নির্দিষ্ট করব?
  2. আপনি ব্যবহার করে প্রধান শ্রেণী নির্দিষ্ট করতে পারেন <mainClass> মধ্যে ট্যাগ <manifest> Maven প্লাগইন কনফিগারেশনের বিভাগ।
  3. আমি কিভাবে চূড়ান্ত JAR থেকে নির্দিষ্ট নির্ভরতা বাদ দিতে পারি?
  4. ব্যবহার excludes নির্ভরতা নির্দিষ্ট করতে প্লাগইন কনফিগারেশনের মধ্যে ট্যাগ করুন যা চূড়ান্ত JAR-এ অন্তর্ভুক্ত করা উচিত নয়।
  5. একটি uber-JAR কি?
  6. একটি uber-JAR হল একটি JAR ফাইল যাতে শুধুমাত্র আপনার সংকলিত কোডই নয়, এর সমস্ত নির্ভরতাও থাকে।
  7. আমি কিভাবে আমার JAR এ ক্লাসপাথ দ্বন্দ্ব এড়াতে পারি?
  8. দ্য maven-shade-plugin দ্বন্দ্ব এড়াতে নির্ভরতার মধ্যে প্যাকেজের নাম পরিবর্তন করার অনুমতি দেয়।
  9. আমি কীভাবে নির্ভরতাগুলিতে সদৃশ ক্লাস পরিচালনা করব?
  10. কনফিগার করুন maven-shade-plugin চূড়ান্ত JAR-এ ডুপ্লিকেট কীভাবে পরিচালনা করা উচিত তা উল্লেখ করে ডুপ্লিকেট ক্লাস এবং সংস্থানগুলি পরিচালনা করতে।
  11. আমি একটি নির্ভরতা থেকে শুধুমাত্র নির্দিষ্ট ফাইল অন্তর্ভুক্ত করতে পারি?
  12. হ্যাঁ, আপনি কনফিগার করতে পারেন maven-assembly-plugin বা maven-shade-plugin নির্ভরতা থেকে শুধুমাত্র নির্দিষ্ট ফাইল অন্তর্ভুক্ত করতে।
  13. আমি কিভাবে প্যাকেজ করা JAR চালাব?
  14. ব্যবহার java -jar আপনার JAR ফাইলের পথ অনুসরণ করে কমান্ড।
  15. আমি কিভাবে আমার JAR ফাইলের বিষয়বস্তু যাচাই করতে পারি?
  16. আপনি ব্যবহার করতে পারেন jar -tf JAR ফাইলের বিষয়বস্তু তালিকাভুক্ত করার জন্য কমান্ড।
  17. আমার JAR ফাইল খুব বড় হলে কি হবে?
  18. ব্যবহার maven-shade-plugin অপ্রয়োজনীয় ফাইল বাদ দিতে এবং JAR আকার ছোট করতে।

মাভেন এক্সিকিউটেবল JAR-এর উপর চিন্তা-ভাবনা শেষ করা

Maven ব্যবহার করে নির্ভরতা সহ একটি এক্সিকিউটেবল JAR তৈরি করা জাভা অ্যাপ্লিকেশনগুলির জন্য স্থাপন প্রক্রিয়াকে সহজ করে। সঠিকভাবে কনফিগার করে pom.xml ফাইল এবং ম্যাভেন অ্যাসেম্বলি প্লাগইন বা ম্যাভেন শেড প্লাগইনের মতো প্লাগইনগুলি ব্যবহার করে, বিকাশকারীরা একটি একক JAR ফাইলে সমস্ত প্রয়োজনীয় নির্ভরতা প্যাকেজ করতে পারে। এই পদ্ধতিটি নিশ্চিত করে যে অ্যাপ্লিকেশনটি বিভিন্ন পরিবেশে নির্বিঘ্নে চলতে পারে, বিতরণ এবং সম্পাদনকে সহজ করে তোলে। এই পদক্ষেপগুলি অনুসরণ করা আপনাকে আপনার প্রকল্পের নির্ভরতাগুলি কার্যকরভাবে পরিচালনা করতে এবং নির্ভরযোগ্য, নির্বাহযোগ্য JAR ফাইল তৈরি করতে সহায়তা করবে।