كيفية استبعاد Pom.xml من الحرب الناتجة عن مين؟

StackOverflow https://stackoverflow.com/questions/1477587

  •  16-09-2019
  •  | 
  •  

سؤال

باستخدام البرنامج المساعد War Maven، قم بإنشاء حرب يتضمن الدليل التالي:

META-INF - MAVEN - COM.ABC.DEF - MyServlet - Pom.xml - POM.Properties

في الإصدار، أريد استبعاد هذا دليل الأرجوحة. كيف أقوم بذلك؟

جربت أحدث المساعدات المكونة من Maven-War (2.1-Beta-1)، ولديها تكوين "تعبئة التعبئة"، لكنها لا تعمل كما أتمنى.

أي اقتراحات؟

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

المحلول

باستخدام التعبئة والتغليف معيار Maven لا يمكنك حذف الملف على حد علمي. ومع ذلك، فمن الممكن استخدام مافن تجميع البرنامج المساعد لبناء الحرب، في هذه الحالة، لديك سيطرة رائعة على المحبوب على محتويات قطعة أثرية، ويمكن أن تغفل pom.xml.

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

تحديث: في القليل غريب من التزامن إلى إجابة Pascal، لقد كنت أقرأ فقط مرجع الأرشيف ويبدو أنه يمكن القيام بذلك عن طريق تحديد addMavenDescriptor الممتلكات إلى false. أنا شخصيا ما زلت تجنب القيام بذلك لأسباب مقدمة أعلاه. ولكن قد ترغب في تغيير قبولك لإجابة باسكال.

نصائح أخرى

لست متأكدا ولكنني أعتقد أن أرتشافيفر (والتي تستخدم أساسا من قبل الإضافات للتعامل مع التعبئة والتغليف) يمكن تكوينها لتحقيق ذلك.

حول ال <addMavenDescriptor> العنصر، الأرشيف مرجع يقول:

ما إذا كان الأرشيف الذي تم إنشاؤه سيحتوي على هاتين ملفتين من الأطراف

  • ملف POM، الموجود في الأرشيف في META-INF/maven/${groupId}/${artifactId}/pom.xml
  • أ pom.properties ملف، يقع في الأرشيف في META-INF/maven/${groupId}/${artifactId}/pom.properties

القيمة الافتراضية هي الحقيقية.

لذا فإن بوم تكوين مثل هذا يجب أن تفعل الخدعة:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

سيقوم بوضع مجلد META-INF في دليل الموارد أو في جذر الدليل المصدر الخاص بك يدمر محتوى التعريف الذي تم إنشاؤه بواسطة Maven. بالنسبة لملفات الحرب، فإن وضع META-INF في دليل محتوى الويب الخاص بك سوف تفعل الشيء نفسه.

إضافة محتوى آخر إلى هذا التجزية المخصصة سوف يتجاوز ما سيخلقه Maven.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>pom.xml</warSourceExcludes>
    </configuration>
</plugin>

أو

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>here/there/everywhere/a/pom.xml</warSourceExcludes>
    </configuration>
</plugin>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top