سؤال

لدي ملف POM موجود يتضمن قسم مافن جار المساعد. يتم تشغيله لهدف جرة الاختبار ويستبعد حاليا بعض الدلائل:

<excludes>
     <exclude>...</exclude>
     <exclude>...</exclude>
     <exclude>somedir/**</exclude>
 </excludes>

أحتاج إلى تضمين ملف في الدليل SMEDIR ولكن ترك بقية الملفات في الدليل SMEDIR. لقد قرأت أن تتضمن الأسبقية على الاستبعاد، لذا فقد أضفت شيئا مثل ما يلي (لم يكن هناك ما لا يتضمن قسم من قبل):

<includes>
    <include>somedir/somefile.xml</include>
</includes>

ينتهي هذا بإنشاء ملف جرة لاختبار مع بعض الملفات فقط (فقط الأشياء في meta-inf). الملف الذي قمت بتضمينه ليس في JAR أيضا. ما كنت أتوقعه هو جرة مماثلة ل JAR التي تم إنشاؤها قبل تغييري مع ملف إضافي واحد.

ما أنا في عداد المفقودين هنا؟

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

المحلول

أولا، إذا كنت لا تحدد أي includes, ، ثم سيستخدم البرنامج المساعد Maven Jar **/** كما النمط الافتراضي (انظر o.a.m.p.j.AbstractJarMojo) أي أنها سوف تشمل كل شيء. إذا تجاوزت هذا النمط الافتراضي، فمن الواضح أن البرنامج المساعد سيتضمن فقط ما تخبره بتضمينه.

ثانيا، يتم فحص الدليل في النهاية من قبل o.c.p.u.DirectoryScanner وهذا ما يقوله جافادوك من الفصل:

 * الفكرة بسيطة. يتم فحص الدليل المعطى بشكل متكرر لجميع الملفات * والدلائل. يتم مطابقة كل ملف / دليل مع مجموعة من المحددين، * بما في ذلك الدعم الخاص للمطابقة ضد أسماء الملفات مع تشمل و * واستبعاد الأنماط. فقط الملفات / الدلائل التي تطابق نمط واحد * واحد على الأقل من قائمة الأنماط تضمين أو محدد الملفات الأخرى، ولا تتطابق * سيتم وضع أي نمط من قائمة نمط الاستبعاد أو فشل في المباراة ضد محدد * مطلوب في قائمة الملفات / الدلائل الموجودة.

لذلك، مع مجموعتك الحالية من includes و excludes أنماط، فقط واحد سوف يتطابق الملف مع نمط التضمين ولكن أيضا تطابق نمط الاستبعاد وبالتالي لن يتم تحديده وتحصل على أرشيف فارغ تقريبا (مع البيان الافتراضي فقط، انظر o.a.m.p.j.AbstractJarMojo#createArchive()).

لا أستطيع أن أعطيك الحل الدقيق هنا ولكنك بحاجة بوضوح إلى إعادة التفكير في الطريقة التي تضمها / استبعاد الملفات (مثل إضافة المزيد includes أنماط، أخرج <exclude>somedir/**</exclude>, ، او استعمل includes فقط، أو استخدام excludes فقط).

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