تصفية مجموعة الملفات المشار إليها باستخدام refid

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي مجموعة الملفات (التي يتم إرجاعها من المهمة مخضرم النملة)، ويحتوي على كل الجرار ولست بحاجة إلى إعادة تعبئة. تتم الإشارة إليه هذا fileset من قبل refid. أريد فقط أن تشمل الجرار الخاصة بنا، لذلك أود أن تصفية ذلك. لكن مجموعة الملفات النمل لا تدعم أية سمات أخرى أو العلامات المتداخلة إذا تم استخدام refid.

وعلى سبيل المثال، إذا كان fileset هو:

org.foo.1.jar
org.foo.2.jar
log4j.jar

ووأريد أن يكون من مجموعة الملفات التي تحتوي فقط

org.foo*.jar

وكيف أفعل ذلك؟

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

المحلول

وحاول استخدام restrict جمع الموارد، والتي يمكنك استخدامها مثل وfileset في أي مهمة يستخدم مجموعات الموارد لتحديد مجموعة من الملفات لتعمل على.

وعلى سبيل المثال، لfileset عاد من مهمة مخضرم الخاص المشار إليه عن طريق معرف يسمى dependency.fileset يمكنك الإعلان عن جمع الموارد restrict مثل ذلك:

<restrict id="filtered.dependencies">
    <fileset refid="dependency.fileset"/>
    <rsel:name name="org.foo*.jar"/>
</restrict>

ملاحظة سيكون لديك للإعلان عن مساحة محدد الموارد كما أنها ليست جزءا من المدمج في مساحة الاسم النمل:

<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
    ...
</project>

من هنا يمكنك الرجوع جمع الموارد restrict الخاصة بك بطريقة مماثلة لكيف سيكون مرجع fileset الخاص بك. على سبيل المثال، لإنشاء نسخ احتياطية من مجموعة تصفيتها الخاص بك من الملفات:

<copy todir=".">
    <restrict refid="filtered.dependencies"/>
    <globmapper from="*" to="*.bak"/>
</copy>

وبالطبع يمكنك مضمنة جمع الموارد restrict الخاص بك إذا كنت ترغب في ذلك:

<copy todir=".">
    <restrict>
        <fileset refid="dependency.fileset"/>
        <rsel:name name="org.foo*.jar"/>
    </restrict>
    <globmapper from="*" to="*.bak"/>
</copy>

وإلقاء نظرة على وثائق النملة على مجموعات الموارد للحصول على مزيد من المعلومات.

نصائح أخرى

وأعتقد أنك ستحتاج إلى إرسال مهمة النمل لذلك. انهم من السهل جدا أن أكتب بالرغم من ذلك.

http://ant.apache.org/manual/develop.html# writingowntask

في مهمتك، سوف تحتاج إلى استدعاء getProject () ويطلب منها أن تعطيك fileset، والمشي من خلال ذلك، وإنشاء واحدة جديدة.

وأنا باستخدام النملة مع اللبلاب . مع مساعدة من اللبلاب فمن الممكن لتصفية تبعيات لاسترجاعها، مع التعليمات البرمجية التالية في ivy.xml:

<dependency name="Project1" rev="latest.integration" transitive="true" conf="modlibs">
<exclude name="${exclusionRegEx}" matcher="regexp" />
</dependency>
<dependency name="Project2" rev="latest.integration" transitive="false" conf="modules"/>

وربما نظرة سريعة على مصدر اللبلاب 'ليرة لبنانية مساعدة؟

إذا كنت تستخدم النسخة الأخيرة بما فيه الكفاية من النملة وجدك، على سبيل المثال، النملة 1.7 و JDK 6، ثم يمكنك استخدام في النصي اختياري مهمة لتفعل ما تريد. (الإصدارات السابقة قد تعمل أيضا.) صفحة I مرتبطة، إذا كنت انتقل لأسفل إلى نص "الهدف هو لسرد filesizes" ثم سترى النصي عينة التي تخلق مجموعة الملفات.

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

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