سؤال

لقد قمت بإعداد مشاريع 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 مختلفة، والموارد المشتركة .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top