سؤال

أرغب في حذف جميع الدلائل والمدافع الفرعي تحت دليل جذر يحتوي على "TMP" في أسمائهم. هذا يجب أن يشمل أي ملفات .svn أيضا. تخميني الأول هو الاستخدام

<delete>
    <dirset dir="${root}">
          <include name="**/*tmp*" />
    </dirset>
</delete>

هذا لا يبدو أنه يعمل لأنه لا يمكنك أن تعش dirset في delete بطاقة شعار.

هل هذا نهج صحيح ، أم يجب أن أفعل شيئًا آخر؟

  • إصدار ANT == 1.6.5.
  • إصدار Java == 1.6.0_04
هل كانت مفيدة؟

المحلول

إليكم الإجابة التي نجحت بالنسبة لي:

<delete includeemptydirs="true">
    <fileset dir="${root}" defaultexcludes="false">
       <include name="**/*tmp*/**" />
    </fileset>
</delete>

كان لدي مضاعفات إضافية احتاجها لإزالتها .svn الدلائل أيضا. مع defaultexcludes, .* تم استبعاد الملفات ، وبالتالي لم تكن الدلائل الفارغة فارغة حقًا ، وبالتالي لم يتم إزالتها.

السمة includeemptydirs (شكرًا ، Flicken ، XL-Plüschhase) ** Wildcard لمطابقة سلسلة فارغة.

نصائح أخرى

محاولة:

<delete includeemptydirs="true">
    <fileset dir="${root}">
          <include name="**/*tmp*/*" />
    </fileset>
</delete>

شكرا لك!

أردت فقط أن أضيف أن جزء الحل الذي عمل بالنسبة لي كان إلحاقًا /** إلى نهاية المسار تشمل. حاولت ما يلي لحذف أدلة Eclipse .settings:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings">
</delete>

لكنها لم تنجح حتى غيرت الأمر إلى ما يلي:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings/**">
</delete>

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

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