Maven2: باستثناء الدليل من الحرب
-
04-10-2019 - |
سؤال
حاولت هذه لاستبعاد الدليل الكامل ($ {inrialir}/src/main/webapp/webscripts) من ملف الحرب الخاص بي لكنه فشل. ما المشكله؟
هذا لا يعمل:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/webscripts</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
</webResources>
</configuration>
هذا ايضا:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<excludes>
<exclude>**/webscripts</exclude>
</excludes>
</resource>
</webResources>
</configuration>
هل يمكن لأي شخص أن يساعد؟
المحلول
لن يساعد كل من حللك ، حيث سيضيفان مورد إضافي يتم إلغاء تنشيطه بعد ذلك. يتم نسخ مجلد مصدر WebApp افتراضيًا ، بدون آلية الموارد.
آلية إلغاء تنشيط جزء من ذلك هي من خلال <warSourceExcludes>
المعلمة ، مثل هذا:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>webscripts/**</warSourceExcludes>
</configuration>
</plugin>
نصائح أخرى
WarsourceExcludes يبدو أنه لم يتم إعادة تسميته للتو التغليف.
WarsourceExcludes: قائمة الفاصلة المنفصلة من الرموز المميزة التي تستبعد عند نسخ محتوى WarsourCedirectory.
التغليف: قائمة الفاصلة المنفصلة من الرموز المميزة لاستبعادها من الحرب قبل التغليف. يمكن استخدام هذا الخيار لتنفيذ حالة استخدام الحرب النحيفة.
هناك فرق كبير: مع التغليف, ، يتم استبعاد الرموز بالكامل من ملف الحرب النهائي. مع WarsourceExcludes, ، يتم تجاهل الرموز المميزة عند نسخ دليل الحرب إلى ملف الحرب. نتيجة لذلك ، إذا كانت الرموز موجودة في WebAppDirectory على سبيل المثال ، لن يتم تجاهلها عند استخدامها WarsourceExcludes ولكن سيكون عند استخدام التغليف.
ومثال بناء الجملة:
<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
في الإصدار 2.1-alpha-1 ، تم تسمية هذا بشكل غير صحيح WarsourceExcludes. المعلمة الصحيحة التغليف
مثال على الاستخدام (يستبعد شبكة الويب/ الإحصائيات/ المجلد من الحرب):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warName>searchservice-web</warName>
<packagingExcludes>WEB-INF/statics/</packagingExcludes>
</configuration>
</plugin>
inorder لإزالة الملفات المصدر التي استخدمتها التكوين أدناه في Maven
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<packagingExcludes>
eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
</packagingExcludes>
</configuration>
</plugin>
كان لدي سيناريو حيث اضطررت إلى استبعاد مجلدين يمكن مطابقتهما *scripts
وكانوا في مجلد الموارد. كان الالتباس الأول هو ما إذا كان يجب توفير القيمة المستبعدة كما src/main/resources/*scripts
أو WEB-INF/classes/*scripts
, ، أي بنية التجميع قبل أو ما بعد.
كان من المهم للغاية توفيره /**
للحصول على الدليل بأكمله يتم استبعاده من ملف الحرب. في حالتي، *scripts/**
.
هنا هو التكوين النهائي الذي نجح:
<packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>