استخدم "maven-shade-plugin" لإنشاء برطمان واحد قابل للتنفيذ مع جميع التبعيات المطلوبة فيه لبرنامج Java أو Spring Project؟

نشرت: 2016-11-16

maven-shade-plugin-how-to-create-javaspring-based-de-jar-jar-with-all-required-التبعيات

ما عليك سوى إنشاء ملف Crunchify.jar واحد بكل التبعيات بداخله

لقد كتبت الأسبوع الماضي درسًا تعليميًا حول كيفية استخدام maven-resources-plugin و maven-dependency-plugin & maven-jar-plugin لإنشاء مشروع Jar الكامل القابل للتنفيذ؟ نتيجة لذلك ، يقوم بإنشاء / نسخ جميع الملفات المطلوبة إلى مجلد /target/Crunchify .

Before: استخدام المكونات الإضافية maven-Resource و maven-Depency و maven-jar:

maven-resources-maven-Depency-maven-jar-plugin-to-build-java-project

After: استخدام البرنامج المساعد maven-shade:

إنشاء-فقط-1-قابل للتنفيذ-جرة مع جميع التبعيات-الخصائص-الموارد-ملف-في-هو-الخاص بك-أو-الربيع-مشروع

لنبدأ في كيفية تحقيق النتيجة أعلاه:

هنا كما ترى ، قمنا بتجميع كل شيء من Java Project في just one file وقمنا بإعطاء الاسم Crunchify.jar (مع جميع الملفات بداخله).

قبل أيام قليلة ، لم يكن لدي أي فكرة عن كيفية تحقيق ذلك لأنني أردت إنشاء runnable binary distribution of a standalone Java application باستخدام Maven. بعبارات أخرى:

  1. كيفية إنشاء جرة الربيع القابلة للتنفيذ مع المخضرم؟
  2. إنشاء توزيع ثنائي قابل للتشغيل باستخدام Maven لـ Java + Spring + التبعيات الأخرى
  3. كيف تبني مشاريع Java + Spring مع Maven؟

عادة في مافن ، نعتمد على إدارة التبعية. تحتوي القطعة الأثرية فقط على الفئات / الموارد الخاصة بها. سيكون Maven مسؤولاً عن اكتشاف جميع القطع الأثرية (JARs وغيرها) التي يعتمد عليها المشروع ، عند التجميع والتشغيل وما إلى ذلك.

بمساعدة maven -shade- plugin تمكنت من تحقيق ذلك . إنه يوفر القدرة على حزم الأداة في uber-jar (One major file jar) ، بما في ذلك تبعياتها وتظليل - أي إعادة تسمية - حزم بعض التبعيات.

في مشروعي ، لدي العديد من التبعيات الأخرى ، مثل Spring Framework ، و JSON ، وأدوات الطرف الثالث ، وما إلى ذلك. يوجد أدناه مجرد نموذج لمشروع ولكن ملف .jar للإنتاج الخاص بي وصل ~5.2MB big إلى 5.2 ميجا بايت تقريبًا.

إن uber-jar هو شيء يأخذ كل التبعيات ، ويستخرج محتوى التبعيات ويضعه في JAR واحد ، مع فئات / موارد المشروع نفسه. من خلال الحصول على مثل uber-jar ، من easy for execution ، لأنك ستحتاج فقط إلى JAR كبير واحد بدلاً من أطنان من JARs الصغيرة لتشغيل تطبيقك. كما أنه يسهل التوزيع في بعض الحالات.

لتحقيق ذلك ، تحتاج إلى تحديث ملف pom.xml الخاص بك.

الخطوة 1

ألق نظرة على ملف pom.xml الكامل. سوف تكون مهتمًا بشكل أساسي بعلامة <build> .

كما ترون هنا أنا أستخدم Resource Transformers في ملف pom.xml. يعد تجميع classes/resources من العديد من القطع الأثرية في Crunchify JAR مباشرًا للأمام طالما لا يوجد تداخل. خلاف ذلك ، هناك حاجة إلى نوع من المنطق لدمج الموارد من عدة JARs. هذا هو المكان الذي تبدأ فيه محولات الموارد.

الخطوة 2

بمجرد إضافة maven-shade-plugin إلى ملف pom.xml ، ما عليك سوى استخدام الأمر أدناه لبناء مشروعك.

ويجب أن ترى Crunchify.jar واحد (uber-jar) تم إنشاؤه all dependencies mentioned in pom.xml file بداخله.

الخطوه 3

انتقل إلى المجلد الهدف لمشروعك وسترى ملف Crunchify.jar تم إنشاؤه. فقط استخدم الأمر

$bash> java -jar Crunchify.jar لتنفيذ مشروعك.

هل لديك ما تضيفه؟ أضفه إلى قسم التعليق أدناه. استمتع ، أتمنى لك يومًا رائعًا وأنت ترميز سعيد.