ماون پروجیکٹس کو سنگل ایگزیکیوٹیبل جار میں پیک کرنا
جاوا پروجیکٹس کے ساتھ کام کرتے وقت، آسانی سے تقسیم کے لیے اپنی ایپلیکیشن کو ایک قابل عمل JAR فائل میں پیک کرنا اکثر ضروری ہوتا ہے۔ Maven، ایک طاقتور آٹومیشن ٹول، ڈویلپرز کو اس واحد آؤٹ پٹ JAR کے اندر تمام ضروری انحصار شامل کرنے کی اجازت دیتا ہے۔
یہ مضمون آپ کے ماون پروجیکٹ کو کنفیگر کرنے کے لیے درکار اقدامات کے بارے میں رہنمائی کرے گا تاکہ تمام انحصار JARs کو آپ کے حتمی قابل عمل JAR میں شامل کیا جا سکے۔ ان ہدایات پر عمل کرکے، آپ تعیناتی کے عمل کو آسان بنائیں گے اور اس بات کو یقینی بنائیں گے کہ آپ کی درخواست مختلف ماحول میں آسانی سے چلتی ہے۔
کمانڈ | تفصیل |
---|---|
<plugin> | تعمیراتی عمل کے دوران استعمال کرنے کے لیے ماون پلگ ان کی وضاحت کرتا ہے۔ پلگ ان مخصوص کاموں کو انجام دے سکتے ہیں جیسے کوڈ کو مرتب کرنا یا پروجیکٹ کو پیک کرنا۔ |
<groupId> | Maven پروجیکٹ کے لیے گروپ شناخت کنندہ کی وضاحت کرتا ہے، عام طور پر ایک الٹا ڈومین نام۔ |
<artifactId> | آرٹفیکٹ کے شناخت کنندہ کی وضاحت کرتا ہے، جو پروجیکٹ کا نام ہے۔ |
<version> | پروجیکٹ کے موجودہ ورژن کی نشاندہی کرتا ہے۔ |
<build> | پلگ انز اور وسائل سمیت پروجیکٹ کے لیے تعمیراتی ترتیب پر مشتمل ہے۔ |
<descriptorRef> | استعمال کرنے کے لیے ماون اسمبلی پلگ ان کے لیے پہلے سے طے شدہ ڈسکرپٹر کا حوالہ دیتا ہے، جیسے "جار کے ساتھ-انحصار"۔ |
<mainClass> | JAR فائل کے چلنے پر عمل درآمد کی جانے والی مرکزی کلاس کی وضاحت کرتا ہے۔ |
<execution> | ایک پلگ ان کے اندر ایک ایگزیکیوشن بلاک کی وضاحت کرتا ہے، مختلف تعمیراتی مراحل میں انجام دینے والے کاموں کی وضاحت کرتا ہے۔ |
mvn clean package | پروجیکٹ کو صاف کرنے اور اسے JAR فائل میں پیک کرنے کا حکم دیں، بشمول تمام انحصار۔ |
java -jar target/...jar | تیار کردہ JAR فائل کو چلانے کے لیے کمانڈ، JAR کا راستہ بتاتے ہوئے۔ |
Maven کے ساتھ ایک قابل عمل JAR بنانا اور چلانا
اوپر فراہم کردہ اسکرپٹس یہ ظاہر کرتی ہیں کہ ماون پروجیکٹ کو اس کے تمام انحصار کو ایک واحد قابل عمل JAR فائل میں پیک کرنے کے لیے کس طرح ترتیب دیا جائے۔ پہلا اسکرپٹ ایک ماون ہے۔ pom.xml فائل، جس میں پروجیکٹ کی ترتیب شامل ہے۔ اس فائل کے اندر، the <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 کو پیک کرنے کے لیے 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
پیکیجنگ انحصار کے لیے جدید ماون تکنیک
Maven کے ساتھ ایک قابل عمل JAR بنانے کے لیے بنیادی ترتیب سے ہٹ کر، اضافی تکنیکیں ہیں جو آپ کی تعمیر کے عمل کو بڑھا سکتی ہیں۔ ایسی ہی ایک تکنیک میں استعمال کرنا شامل ہے۔ shade کے بجائے پلگ ان assembly رابطہ بحال کرو۔ Maven شیڈ پلگ ان uber-JARs بنانے کے لیے مزید جدید خصوصیات پیش کرتا ہے (انحصار کے ساتھ JARs شامل ہیں)۔ یہ آپ کو کلاس پاتھ کے تنازعات سے بچنے کے لیے پیکجوں کا نام تبدیل کرنے کی اجازت دیتا ہے اور ڈپلیکیٹ کلاسز اور وسائل کے لیے بہتر ہینڈلنگ فراہم کرتا ہے۔ مزید برآں، یہ عمدہ کنٹرول پیش کرتا ہے جس پر انحصار حتمی JAR میں شامل ہے۔
ایک اور اہم پہلو آپ کی JAR فائل کے سائز کا انتظام کرنا ہے۔ بڑی JAR فائلیں بوجھل اور منتقلی یا لوڈ کرنے میں سست ہو سکتی ہیں۔ دی maven-shade-plugin آپ کو غیر ضروری فائلوں اور کلاسوں کو خارج کرنے کی اجازت دے کر اس میں مدد کر سکتا ہے، اس طرح حتمی JAR کا سائز کم ہو جاتا ہے۔ آپ غیر ضروری معلومات جیسے کہ غیر استعمال شدہ کلاسز یا بے کار وسائل کو ہٹا کر JAR کو کم سے کم کرنے کے لیے پلگ ان کو بھی ترتیب دے سکتے ہیں۔ یہ جدید کنفیگریشنز خاص طور پر اس وقت کارآمد ثابت ہو سکتی ہیں جب متعدد انحصار کے ساتھ بڑے منصوبوں پر کام کر رہے ہوں۔
Maven ایگزیکیوٹیبل JARs کے لیے عام سوالات اور حل
- میں اپنے JAR میں مرکزی کلاس کی وضاحت کیسے کروں؟
- آپ استعمال کرکے مین کلاس کی وضاحت کرسکتے ہیں۔ <mainClass> کے اندر ٹیگ کریں <manifest> Maven پلگ ان کنفیگریشن کا سیکشن۔
- میں حتمی JAR سے مخصوص انحصار کو کیسے خارج کر سکتا ہوں؟
- کا استعمال کرتے ہیں excludes ان انحصارات کی وضاحت کرنے کے لیے پلگ ان کنفیگریشن کے اندر ٹیگ کریں جنہیں حتمی JAR میں شامل نہیں کیا جانا چاہیے۔
- ایک uber-JAR کیا ہے؟
- ایک uber-JAR ایک JAR فائل ہے جس میں نہ صرف آپ کا مرتب کردہ کوڈ ہوتا ہے بلکہ اس کے تمام انحصار بھی ہوتے ہیں۔
- میں اپنے JAR میں کلاس پاتھ کے تنازعات سے کیسے بچ سکتا ہوں؟
- دی maven-shade-plugin تنازعات سے بچنے کے لیے آپ کو انحصار کے اندر پیکیجز کا نام تبدیل کرنے کی اجازت دیتا ہے۔
- میں انحصار میں ڈپلیکیٹ کلاسوں کو کیسے ہینڈل کروں؟
- کو ترتیب دیں۔ maven-shade-plugin ڈپلیکیٹ کلاسز اور وسائل کا نظم کرنے کے لیے یہ بتاتے ہوئے کہ ڈپلیکیٹ کو حتمی JAR میں کیسے ہینڈل کیا جانا چاہیے۔
- کیا میں انحصار سے صرف مخصوص فائلیں شامل کرسکتا ہوں؟
- جی ہاں، آپ ترتیب دے سکتے ہیں۔ maven-assembly-plugin یا maven-shade-plugin انحصار سے صرف مخصوص فائلوں کو شامل کرنا۔
- میں پیکڈ JAR کو کیسے چلا سکتا ہوں؟
- کا استعمال کرتے ہیں java -jar آپ کی JAR فائل کے راستے کے بعد کمانڈ۔
- میں اپنی JAR فائل کے مواد کی تصدیق کیسے کر سکتا ہوں؟
- آپ استعمال کر سکتے ہیں۔ jar -tf JAR فائل کے مندرجات کی فہرست کے لیے کمانڈ۔
- اگر میری JAR فائل بہت بڑی ہے تو کیا ہوگا؟
- کا استعمال کرتے ہیں maven-shade-plugin غیر ضروری فائلوں کو خارج کرنے اور JAR سائز کو کم سے کم کرنے کے لیے۔
ماون ایگزیکیوٹیبل JARs پر اختتامی خیالات
ماون کا استعمال کرتے ہوئے انحصار کے ساتھ ایک قابل عمل JAR بنانا جاوا ایپلیکیشنز کے لیے تعیناتی کے عمل کو آسان بناتا ہے۔ کو صحیح طریقے سے ترتیب دے کر pom.xml فائل اور ماون اسمبلی پلگ ان یا ماون شیڈ پلگ ان جیسے پلگ ان کا استعمال کرتے ہوئے، ڈویلپر تمام ضروری انحصار کو ایک ہی JAR فائل میں پیک کر سکتے ہیں۔ یہ نقطہ نظر اس بات کو یقینی بناتا ہے کہ ایپلی کیشن مختلف ماحول میں بغیر کسی رکاوٹ کے چل سکتی ہے، جس سے تقسیم اور عملدرآمد کو سیدھا بنایا جا سکتا ہے۔ ان اقدامات پر عمل کرنے سے آپ کو اپنے پروجیکٹ کے انحصار کو مؤثر طریقے سے منظم کرنے اور قابل اعتماد، قابل عمل JAR فائلیں بنانے میں مدد ملے گی۔