سؤال

لدي POM عظمى محددة حيث حدد دليل "الموارد" للموارد. في إحدى مشاريعي، يمتد POM الخاص بي أن Super POM، وأود أن أضيف مورد إضافي. حاولت:

    <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>additionalDir</directory>                
        </resource>
    </resources>

لكن هذا ينتج عنه فقط Extddir يجري في الموارد ولا يشمل موارد Super POM. هل هناك طريقة لتوسيع موارد السوبر بوم؟

هل كانت مفيدة؟

المحلول

السلوك الذي وصفته هو متوقع.

تذكر أن بوم الخاص بك السوبر يرث من مافن افتراضي بوم وبشكل جيد، يتجاوز أي مساعد يحدده في POM الخاص بك بشكل فعال الإعداد في بوم الافتراضي. كمثال، لتمكين التصفية على المورد الافتراضي، يجب عليك تحديد المسار في بوم الخاص بك. أنت تفعل هذا:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

ليس هذا:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

لا يقوم الدليل الافتراضي بعمل فقاعة لك، حتى لو كنت قد حددتها هناك. قد يكون هناك موجو خاص للقيام بذلك من أجلك، لكنني لم أستطع العثور على واحدة.

نصائح أخرى

انظر بناء المساعد-مينجد الاستعمال صفحة.

نعم، يختلط Maven موارد POM الأصل عند إعادة تعريف قسم مورد جديد.

ومع ذلك، طريقة بسيطة لإضافة الموارد هي

  1. إزالة قسم الموارد من بوم الخاص بك
  2. عرض بوم فعال
  3. انسخ الموارد من بوم فعال في مشروعك
  4. استبدال المسارات المطلقة مع تلك النسبية
  5. أضف مواردك الإضافية

أعرف أن هذا السؤال قديم جدا الآن ولكن ربما سيجد شخص ما هذا مفيدا:

يمكنك بسهولة القيام بذلك باستخدام البرنامج المساعد لمورد Maven.

أساسا، ما الذي تقوم به افتراضيا (استدعاء الموارد: هدف الموارد) يتحرك محتوى جميع الدلائل المذكورة في قسم الإنشاء / الموارد باستخدام المرشح المعلن في ${project.build.outputDirectory}إذا كنت ترغب الآن في إضافة بعض الموارد الإضافية دون التأثير على هذه الأقسام، فيمكنك ببساطة نقل الموارد هناك نفسك. لا، هذا لا يعني السحب وإسقاطها هناك.

ال Maven Resources Pluginيوفر هدف يدعى resources:copy-resources التي لا تفعل ذلك بالضبط بالنسبة لك: التعامل مع الملفات باستخدام المرشحات من مكان إلى آخر، أو كحالات Doccound Doc:

يمكنك استخدام موارد النسخ Mojo لنسخ الموارد التي لا تكون في تخطيط الأرجواني الافتراضي أو غير المعلن في عنصر الإنشاء / الموارد وإرفاقها إلى مرحلة

الميزة الواضحة مقارنة بمساعدة البناء، والتي يقترح في حلول أخرى، هي أنه في حين أن المساعد المبني قادر فقط على اتخاذ إجراءات خلال generate-sources المرحلة، والموارد البرنامج المساعد يعمل في أي مرحلة. (على الرغم من أنه سيكون من الحكمة تنفيذها قبل مرحلة التعبئة والتغليف)

مثال كامل حول كيفية استخدام هذا يتم توفيره هنا, ، كجزء من صفحة مشروع الإضافات.

ما يفعل هذا هو مواجهة محتوى دليل الموارد غير المدرج "src/non-packaged-resources" إلى "${basedir}/target/extra-resources". ولكن نظرا لأن البرنامج المساعد جرة (الذي يخلق أرشيف الجرة) يخلق أساسا أرشيف مضغوط في الدليل"${project.build.outputDirectory}"قد ترغب في وضعه هناك.

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