1. خلفية المشروع
تقوم Spring Cloud ببناء مشاريع التمهيد الربيعي ، وتحسين مستويات كل مشروع ، ويحقق الغرض من تقليل الاقتران. تعتمد المشاريع على التواصل المريح.
أثناء عملية تغليف المشروع ، استخدم البرنامج المساعد Spring-Boot-Maven-Plugin لتعبئته ، ويتم إنشاء جرة الدهون. إذا تم إلغاء الضغط على حزمة JAR ، فستجد أن حزمة JAR التي يعتمد عليها المشروع يتم تخزينها في مجلد LIB أسفل BOOT-INF. بعد تحليل العديد من المشروعات الفرعية ، ستجد أن نفس حزمة JAR تمثل الأغلبية العظمى. بعد ذلك ، في كل مرة يتم نشرها في بيئة عبر الإنترنت ، يتم في الواقع أن يتم توزيع الجرار المشتركة لكل نظام مرارًا وتكرارًا على الخادم. لذلك ، ستفكر بشكل طبيعي فيما إذا كانت هناك طريقة لاستخراج حزمة JAR الشائعة أو حزمة JAR التي لم يتم تعديلها في كثير من الأحيان ، وفرز نسخة منفصلة ، ثم استخدم التحميل الخارجي لتحقيق الغرض من فقدان الوزن بواسطة الجرار الدهنية.
2. التخسيس جرة سمين
بعد التحليل أعلاه ومراجعة المعلومات ذات الصلة ، قمنا بتصنيف الخطوات التالية لجعل تنحيف الجرة:
1. يقوم كل مشروع بتكوين المكون الإضافي لـ Spring-Boot-Maven-Plugin (المستند الرسمي) لإنشاء حزمة الجرة المحتفظ بها في جرة الدهون
<reclosin> <rougiD> org.springframework.boot </rougiD> <intifactid> Spring-boot-maven-plugin </shintifactid> <simpuration> <rayout> zip </layout> <!-<SectiveGroupids> org.springframewwork.boot ، org.springframebor. tk.mybatis ، mysql ، com.alibaba ، javax.persistence ، io.springfox ، org.springframework.session </excludegroupids> -> <sudgens> <sudne> <croupid> xx </groupiD> <StifactId> xx </stifactid> </sudale> </sults> </ispification> </sultwing>
كما هو الحال مع الكود أعلاه ، يمكنك استخدام ExcludeGroupids ، أو تضمين علامات أخرى ، اعتمادًا على الموقف.
2. استخراج حزم الجرة التي لا ترغب في تخزينها في جرة الدهون من جرة تبعية المشروع.
الطريقة 1 (الموصى بها): أضف مكونًا إضافيًا لاعتماد Maven إلى ملف POM Project (المستند الرسمي)
<Unction> <roupiD> org.apache.maven.plugins </groupId> <ArtifactId> plugin المعتمدة على maven </artifactid> <sored> 3.1.1 </version> <DountedDirectory> e:/lib </outputdirectory>-> <quicaludeGroupids> <!-ابق في قيمة السمة الجماعية الدهنية (متعددة ، منفصلة) من حزمة JAR في jar-> </expludegroupids> <switwretsnapshots> true </
تحقق من المستند الرسمي للمعنى المحدد للعلامة.
عند استخدام Maven لتعبئة المشروع ، استخدم أمر Maven:
MVN Clean تثبيت -dmaven.test.skip = true -doutputDirectory = e:/lib (-doutputDirectory = e:/lib هي المسار الذي يتم تصديره بواسطة حزمة الجرة التي يعتمد عليها المشروع ديناميكيًا.
بعد تنفيذ المكون الإضافي للتكوين هذا الأمر ، باستثناء حزمة JAR التي تم تكوينها في علامة ExcludeGroupids ، سيتم استيراد بقية المشروع في الدليل المحدد ، وسيتم استخراج حزم الجرة الزائدة في الجرة الدهنية.
الطريقة 2: لا تقم بإضافة مكونات التبعية Maven إلى المشروع ، واستخدم MVN مباشرة لنسخ الأوامر التي تعتمد على حزمة JAR للمشروع. تتطلب هذه الطريقة نسخ التبعية لكل مشروع فرعي واحد تلو الآخر ، ويمكن استخدام عدد قليل من المشروعات الفرعية.
MVN التبعية: عمليات الاعتماد على نسخ -doutputdirectory = e:/lib (إذا لم يكن هناك دليل محدد بشكل ديناميكي ، فسيتم إنشاء دليل التبعية افتراضيًا في المسار المستهدف للمشروع)
ضع حزم جرة التبعية التي يتم تصديرها بواسطة كل مشروع إلى مجلد ، وإزالة الازدواجية ، وحذف حزم جرة التبعية المحفوظة في جرة الدهون ، ثم أكمل إزالة حزم الجرة الزائدة في الجرة الدهنية.
3. ضع حزمة الجرة المستخرجة في مسار معين من الخادم ، وتكوين البرنامج النصي بدء تشغيل المشروع ، وتحميله خارجيًا.
nohup java -dloader.path = "xx/lib" -jar xx.jar
-dloader.path هو عنوان التحميل الخارجي.
بعد التخسيس لأسفل ، يمكنك أن ترى في حزمة الجرة بعد تعبئة المشروع. في LIB تحت إشراف التمهيد ، لا يوجد سوى حزم جرة مطلوبة ، والتي تقلل بشكل كبير من حجم الجرة الدهنية.
يمكن استخدام تكوين POM في نظام الخدمات الصغيرة لتشكيل تكوين موحد ، ويتم تغيير تبعيات حزمة JAR في كل مشروع وفقًا للموقف المحدد.
3. المشاكل التي واجهتها وحلول
في عملية التخسيس ، لم يكن الإبحار السلس. عندما اعتقدت أن العمل قد تم وبدأ المشروع ، وجدت أن الشركة الناشئة فشلت وأن الجرة تتعارض.
1. حل حزمة JAR تعارض ، وتحليل تبعيات حزم JAR من خلال أمر MVN ، والعثور على حزم جرة متضاربة ، وتوحيد الإصدار.
في Eclipse ، قمت بإنشاء بناء Maven جديد. في البداية ، جربت MVN التبعية: Tree ، وتحليل تبعية حزمة JAR ككل ، لكنني لم أجد تبعية حزمة جرة المشكلة. ثم جربت MVN التبعية: Tree -DverBose ، وتحليل جميع التبعية الضمنية غير المباشرة ككل وما زالت لم تجد تبعية حزمة جرة المشكلة.
في هذه المرحلة ، أظن أنه لا توجد حزمة جرة في المشروع. بعد التغليف المتكرر ، أرى أن هذه المشكلة موجودة بالفعل في تبعية المشروع ، لكنها مخفية بعمق. لذلك ، يمكن إجراء التحليلات فقط لحزمة جرة واحدة:
MVN التبعية: شجرة -DVERBOSE -DINCLUDES = xx: xx: xx (xx: xx: xx مقابلة مع حزمة الجرة مجموعة: قطعة أثرية: الإصدار)
بعد استخدام Dincludes ، تم العثور على علاقة التبعية لحزمة JAR المقابلة ، ويتم استبعاد حزمة JAR في المشروع. بعد التغليف مرة أخرى ، يبدأ المشروع بنجاح ويتم حل المشكلة.
2. أثناء عملية التغليف ، لم تستخدم بعض المشروعات الفرعية المكون الإضافي للبوت الربيعي-بوت-بلوجين ، ولكنه استخدم maven-jar-plugin لتجميعه مباشرة في جرة قابلة للتشغيل. بعد الجمع بين تكوين التخسيس جرة الدهون ، وجد أن الجرة التي كان يمكن أن تعتمد على الجرة القابلة للتشغيل البيني قد فشلت الآن. نظرًا لأن الجرار الدهنية تنحدر ، فإن الجرار فقط من المشاريع التي يتم تغيير رمزها في كثير من الأحيان تترك ، ولا يتم تمرير التبعيات في الجرار القابلة للتشغيل ، لذلك تحتاج إلى الاعتماد بشكل صريح على حزمة الجرة من المشروع المطلوب في هذا المشروع لضمان اكتمال المشروع.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.