मावेन का उपयोग करके निर्भरता के साथ एक निष्पादन योग्य जार बनाना

मावेन का उपयोग करके निर्भरता के साथ एक निष्पादन योग्य जार बनाना
मावेन का उपयोग करके निर्भरता के साथ एक निष्पादन योग्य जार बनाना

मावेन प्रोजेक्ट्स को एकल निष्पादन योग्य जार में पैकेजिंग करना

जावा प्रोजेक्ट्स के साथ काम करते समय, आसान वितरण के लिए अपने एप्लिकेशन को एकल निष्पादन योग्य JAR फ़ाइल में पैकेज करना अक्सर आवश्यक होता है। मावेन, एक शक्तिशाली बिल्ड ऑटोमेशन टूल, डेवलपर्स को इस एकल आउटपुट JAR के भीतर सभी आवश्यक निर्भरताएं शामिल करने की अनुमति देता है।

यह आलेख आपके अंतिम निष्पादन योग्य JAR में सभी निर्भरता JAR को शामिल करने के लिए आपके मावेन प्रोजेक्ट को कॉन्फ़िगर करने के लिए आवश्यक चरणों के माध्यम से आपका मार्गदर्शन करेगा। इन निर्देशों का पालन करके, आप परिनियोजन प्रक्रिया को सरल बना देंगे और सुनिश्चित करेंगे कि आपका एप्लिकेशन विभिन्न वातावरणों में सुचारू रूप से चले।

आज्ञा विवरण
<plugin> निर्माण प्रक्रिया के दौरान उपयोग करने के लिए मावेन प्लगइन को परिभाषित करता है। प्लगइन्स विशिष्ट कार्यों को निष्पादित कर सकते हैं जैसे कोड संकलित करना या प्रोजेक्ट की पैकेजिंग करना।
<groupId> मावेन प्रोजेक्ट के लिए समूह पहचानकर्ता निर्दिष्ट करता है, आमतौर पर एक रिवर्स डोमेन नाम।
<artifactId> आर्टिफैक्ट के पहचानकर्ता को परिभाषित करता है, जो प्रोजेक्ट का नाम है।
<version> प्रोजेक्ट के वर्तमान संस्करण को इंगित करता है.
<build> इसमें प्लगइन्स और संसाधनों सहित प्रोजेक्ट के लिए बिल्ड कॉन्फ़िगरेशन शामिल है।
<descriptorRef> मावेन असेंबली प्लगइन के उपयोग के लिए पूर्वनिर्धारित डिस्क्रिप्टर का संदर्भ देता है, जैसे "जार-विथ-निर्भरता"।
<mainClass> JAR फ़ाइल चलाने पर निष्पादित होने वाली मुख्य कक्षा निर्दिष्ट करता है।
<execution> एक प्लगइन के भीतर एक निष्पादन ब्लॉक को परिभाषित करता है, विभिन्न निर्माण चरणों में किए जाने वाले कार्यों को निर्दिष्ट करता है।
mvn clean package प्रोजेक्ट को साफ़ करने और सभी निर्भरताओं सहित इसे JAR फ़ाइल में पैकेज करने का आदेश।
java -jar target/...jar JAR का पथ निर्दिष्ट करते हुए, जेनरेट की गई JAR फ़ाइल को चलाने का आदेश।

मावेन के साथ एक निष्पादन योग्य जार बनाना और चलाना

ऊपर दी गई स्क्रिप्ट दर्शाती है कि एक मेवेन प्रोजेक्ट को उसकी सभी निर्भरताओं को एक निष्पादन योग्य JAR फ़ाइल में पैकेज करने के लिए कैसे कॉन्फ़िगर किया जाए। पहली स्क्रिप्ट एक मावेन है 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.

मावेन का उपयोग करके निर्भरता के साथ एक निष्पादन योग्य 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 को पैकेज करने के लिए मेवेन कमांड चलाना

कमांड लाइन निर्देश

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 फ़ाइलें बोझिल हो सकती हैं और स्थानांतरण या लोड करने में धीमी हो सकती हैं। maven-shade-plugin यह आपको अनावश्यक फ़ाइलों और कक्षाओं को बाहर करने की अनुमति देकर मदद कर सकता है, जिससे अंतिम JAR का आकार कम हो जाएगा। आप अप्रयुक्त कक्षाओं या अनावश्यक संसाधनों जैसी गैर-आवश्यक जानकारी को हटाकर JAR को कम करने के लिए प्लगइन को कॉन्फ़िगर भी कर सकते हैं। कई निर्भरताओं वाली बड़ी परियोजनाओं पर काम करते समय ये उन्नत कॉन्फ़िगरेशन विशेष रूप से उपयोगी हो सकते हैं।

मावेन निष्पादन योग्य जार के लिए सामान्य प्रश्न और समाधान

  1. मैं अपने JAR में मुख्य वर्ग कैसे निर्दिष्ट करूँ?
  2. आप इसका उपयोग करके मुख्य वर्ग निर्दिष्ट कर सकते हैं <mainClass> के अंदर टैग करें <manifest> मावेन प्लगइन कॉन्फ़िगरेशन का अनुभाग।
  3. मैं अंतिम JAR से विशिष्ट निर्भरताएँ कैसे निकाल सकता हूँ?
  4. उपयोग excludes उन निर्भरताओं को निर्दिष्ट करने के लिए प्लगइन कॉन्फ़िगरेशन के भीतर टैग करें जिन्हें अंतिम JAR में शामिल नहीं किया जाना चाहिए।
  5. उबर-जार क्या है?
  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 बनाना जावा अनुप्रयोगों के लिए तैनाती प्रक्रिया को सरल बनाता है। ठीक से कॉन्फ़िगर करके pom.xml फ़ाइल और मेवेन असेंबली प्लगइन या मेवेन शेड प्लगइन जैसे प्लगइन का उपयोग करके, डेवलपर्स सभी आवश्यक निर्भरताओं को एक ही JAR फ़ाइल में पैकेज कर सकते हैं। यह दृष्टिकोण सुनिश्चित करता है कि एप्लिकेशन विभिन्न वातावरणों में निर्बाध रूप से चल सके, जिससे वितरण और निष्पादन सीधा हो सके। इन चरणों का पालन करने से आपको अपने प्रोजेक्ट की निर्भरता को प्रभावी ढंग से प्रबंधित करने और विश्वसनीय, निष्पादन योग्य JAR फ़ाइलें बनाने में मदद मिलेगी।