مخضرم:الجمع بين مشاريع الويب
-
20-09-2019 - |
سؤال
لقد قمت بإعداد مشاريع Maven التالية:
- PM-النواة
- PM-Web (مع تبعية لـ PM-Core)
لقد كنت أفكر في عدة بدائل حول كيفية دعم ذلك باستخدام المخضرم ولكني ما زلت أبحث عن الحل الأمثل.
أفضل حل يمكنني التفكير فيه هو إنشاء مشروع مخضرم منفصل لكل عميل (على سبيل المثال.PM-CLIENT1، ...) الذي يحتوي فقط على ملفات التكوين الخاصة بالعميل وملفات جافا الإضافية أو ملفات jsp، ....ستكون الخطوة التالية هي اعتبار مشروع PM-Web ومشروع العميل كمشروع ويب واحد، وهذا يعني:قم بدمجها (تعبئتها) في ملف حربي واحد مع ملفات من مشروع العميل لها الأسبقية على الملفات من مشروع PM-Web.
المزيد من الخرسانة:جري mvn package
على PM-Client1 سيأخذ كل شيء من PM-Web، ويضيف/يستبدل الملفات من PM-Client1 ثم يحزم هذا في حرب واحدة.
لذا فإن السؤال هو:كيفية تحقيق ذلك مع مخضرم؟
المحلول
نعم يمكن ذلك باستخدام تراكبات.العينة الموجودة على صفحة الويب هي بالضبط ما تتحدث عنه.
بالنسبة لهيكل المشروع، يمكن أن يكون لديك شيء مثل هذا:
. |-- PM-Core |-- PM-WebCommon (of type war, depends on core) |-- PM-Client1 (of type war, depends on webcommon) `-- PM-Client2 (of type war, depends on webcommon)
واستخدم التراكب في PM-Client1 وPM-Client2 "لدمجهما" مع PM-WebCommon وحزم الحروب لكل عميل.
تحديث لن أتناول كل التفاصيل ولكن أعتقد أن إعلان تبعية الحرب بنطاق من النوع runtime
مطلوب عند استخدام التراكب، هذه هي الطريقة التي يعمل بها التراكب (في الواقع، كل شيء التراكب هو نوع من الاختراق).الآن، لحل مشكلة الكسوف لديك، سيكون أحد الحلول هو إنشاء JAR يحتوي على فئات مشروع PM-WebCommon.للقيام بذلك، استخدم attachClasses
المعلمة الاختيارية وقم بتعيينها على true
.سيخبر هذا المخضرم بإنشاء ملف PM-WebCommon-<version>-classes.jar
ستتمكن بعد ذلك من إعلان التبعية في PM-Client1 (باستخدام ملف provided
نِطَاق).للحصول على التفاصيل، إلقاء نظرة على موار-73 و موار-131.وقد تمت مناقشة هذا أيضًا في التعليمات من البرنامج المساعد الحرب.لاحظ أن هذه ليست ممارسة موصى بها، والطريقة الصحيحة هي نقل الفئات إلى وحدة منفصلة (وهذا هو الحل الآخر الذي أردت ذكره).
تحديث (201001018):لقد حاولت attachClasses
المعلمة ويعمل مع الإصدار 2.1-beta-1 من البرنامج المساعد.
نصائح أخرى
يمكنك استخدام مظهر يرى http://maven.Apache.org/guides/mini/guide-building-for-different-environments.html والاستخدام المصنفات للتمييز بين القطع الأثرية من البنيات المختلفة لنفس الإصدار.في هذا الإعداد، يمكنك إنشاء وحدات اختيارية إضافية لكل تخصيصات محددة من عملائك ضمن المشروع الأصلي، أي.
+ مساء
++ PM-Core
++ PM-ويب
++ PM-Client1
++ PM-Client2
أو يمكنك النظر في استخدام استخدام البرنامج المساعد للتجميع مخضرم
قارن أيضًا إجابات السؤال ملفات WAR مختلفة، والموارد المشتركة .