إنشاء JAR قابل للتنفيذ مع التبعيات باستخدام Maven

إنشاء JAR قابل للتنفيذ مع التبعيات باستخدام Maven
إنشاء JAR قابل للتنفيذ مع التبعيات باستخدام Maven

تجميع مشاريع Maven في ملف JAR واحد قابل للتنفيذ

عند العمل مع مشاريع Java، غالبًا ما يكون من الضروري تجميع التطبيق الخاص بك في ملف JAR واحد قابل للتنفيذ لسهولة التوزيع. تسمح Maven، وهي أداة قوية لأتمتة البناء، للمطورين بتضمين جميع التبعيات الضرورية ضمن JAR الناتج هذا.

سترشدك هذه المقالة خلال الخطوات اللازمة لتكوين مشروع Maven الخاص بك لتضمين جميع ملفات JAR التبعية في ملف JAR النهائي القابل للتنفيذ. باتباع هذه الإرشادات، ستقوم بتبسيط عملية النشر والتأكد من تشغيل تطبيقك بسلاسة عبر بيئات مختلفة.

يأمر وصف
<plugin> يحدد البرنامج المساعد Maven لاستخدامه أثناء عملية الإنشاء. يمكن للمكونات الإضافية تنفيذ مهام محددة مثل تجميع التعليمات البرمجية أو تغليف المشروع.
<groupId> يحدد معرف المجموعة لمشروع Maven، وعادة ما يكون اسم مجال عكسي.
<artifactId> يحدد معرف القطعة الأثرية، وهو اسم المشروع.
<version> يشير إلى الإصدار الحالي للمشروع.
<build> يحتوي على تكوين البناء للمشروع، بما في ذلك المكونات الإضافية والموارد.
<descriptorRef> يشير إلى واصف محدد مسبقًا لاستخدام البرنامج المساعد Maven Assembly، مثل "jar-with-dependeency".
<mainClass> يحدد الفئة الرئيسية التي سيتم تنفيذها عند تشغيل ملف JAR.
<execution> يحدد كتلة التنفيذ داخل البرنامج الإضافي، ويحدد المهام التي سيتم تنفيذها في مراحل البناء المختلفة.
mvn clean package أمر لتنظيف المشروع وتجميعه في ملف JAR، بما في ذلك جميع التبعيات.
java -jar target/...jar أمر لتشغيل ملف JAR الذي تم إنشاؤه، مع تحديد المسار إلى JAR.

إنشاء وتشغيل JAR قابل للتنفيذ باستخدام Maven

توضح البرامج النصية المذكورة أعلاه كيفية تكوين مشروع Maven لحزم جميع تبعياته في ملف JAR واحد قابل للتنفيذ. النص الأول هو Maven pom.xml الملف الذي يحتوي على تكوين المشروع. ضمن هذا الملف <plugin> يتم استخدام العلامة لتحديد البرنامج المساعد Maven Assembly. يعد هذا البرنامج المساعد ضروريًا لإنشاء ملف JAR قابل للتنفيذ يتضمن جميع التبعيات. ال <descriptorRefs> تحدد العلامة الموجودة في تكوين البرنامج المساعد استخدام jar-with-dependencies واصف، والذي يضمن أن كافة تبعيات المشروع مجمعة في ملف JAR النهائي. ال <mainClass> علامة داخل <manifest> يعد القسم ضروريًا لأنه يخبر Maven بالفئة التي تحتوي على الطريقة الرئيسية للتشغيل عند تنفيذ JAR.

ال <execution> الكتلة الموجودة داخل تكوين البرنامج المساعد هي المكان الذي يحدث فيه الإجراء. وهو يحدد أن هدف البرنامج المساعد single ينبغي تنفيذها خلال package مرحلة من دورة حياة البناء. هذا هو ما يؤدي إلى إنشاء ملف JAR مع التبعيات. البرنامج النصي الثاني هو تعليمات سطر الأوامر بسيطة: mvn clean package. يقوم هذا الأمر بتنظيف المشروع (إزالة عناصر البناء السابقة)، وتجميع التعليمات البرمجية المصدر، وتشغيل الاختبارات، وحزم المشروع في ملف JAR. سيكون ملف JAR النهائي موجودًا في ملف target دليل المشروع والمسمى وفقا ل artifactId و version المحدد في pom.xml.

إنشاء ملف JAR قابل للتنفيذ مع التبعيات باستخدام Maven

البرنامج النصي لتكوين Maven

<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>

تشغيل أمر Maven لحزم 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

تقنيات Maven المتقدمة لتبعيات التغليف

بالإضافة إلى التكوين الأساسي لإنشاء JAR قابل للتنفيذ باستخدام Maven، هناك تقنيات إضافية يمكنها تحسين عملية الإنشاء. تتضمن إحدى هذه التقنيات استخدام shade البرنامج المساعد بدلا من assembly توصيل في. يوفر Maven Shade Plugin المزيد من الميزات المتقدمة لإنشاء ملفات JAR-uber (ملفات JAR مع التبعيات المضمنة). يسمح لك بإعادة تسمية الحزم لتجنب تعارضات مسار الفئات ويوفر معالجة أفضل للفئات والموارد المكررة. بالإضافة إلى ذلك، فهو يوفر تحكمًا دقيقًا في التبعيات التي يتم تضمينها في JAR النهائي.

جانب آخر مهم هو إدارة حجم ملف JAR الخاص بك. يمكن أن تكون ملفات JAR الكبيرة مرهقة وبطيئة في النقل أو التحميل. ال maven-shade-plugin يمكن أن يساعد في هذا من خلال السماح لك باستبعاد الملفات والفئات غير الضرورية، وبالتالي تقليل حجم JAR النهائي. يمكنك أيضًا تكوين المكون الإضافي لتقليل JAR عن طريق إزالة المعلومات غير الأساسية مثل الفئات غير المستخدمة أو الموارد الزائدة عن الحاجة. يمكن أن تكون هذه التكوينات المتقدمة مفيدة بشكل خاص عند العمل على مشاريع كبيرة ذات تبعيات عديدة.

الأسئلة والحلول الشائعة لملفات JAR القابلة للتنفيذ من Maven

  1. كيف أحدد الفئة الرئيسية في JAR الخاص بي؟
  2. يمكنك تحديد الفئة الرئيسية باستخدام <mainClass> العلامة داخل <manifest> قسم تكوين البرنامج المساعد Maven.
  3. كيف يمكنني استبعاد تبعيات محددة من JAR النهائي؟
  4. استخدم ال excludes ضمن تكوين البرنامج المساعد لتحديد التبعيات التي لا ينبغي تضمينها في JAR النهائي.
  5. ما هو uber-JAR؟
  6. إن uber-JAR هو ملف JAR لا يحتوي فقط على الكود المترجم الخاص بك ولكن أيضًا على جميع تبعياته.
  7. كيف يمكنني تجنب تعارضات classpath في 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 قابل للتنفيذ مع التبعيات باستخدام Maven إلى تبسيط عملية النشر لتطبيقات Java. من خلال التكوين الصحيح pom.xml باستخدام المكونات الإضافية مثل Maven Assembly Plugin أو Maven Shade Plugin، يمكن للمطورين تجميع جميع التبعيات الضرورية في ملف JAR واحد. ويضمن هذا الأسلوب إمكانية تشغيل التطبيق بسلاسة في بيئات مختلفة، مما يجعل التوزيع والتنفيذ سهلاً. سيساعدك اتباع هذه الخطوات على إدارة تبعيات مشروعك بفعالية وإنشاء ملفات JAR موثوقة وقابلة للتنفيذ.