كيف يمكنني حذف مجموعة من الدلائل مع ANT؟
سؤال
أرغب في حذف جميع الدلائل والمدافع الفرعي تحت دليل جذر يحتوي على "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>
لسبب ما إلحاق /**
إلى المسار يحذف الملفات في دليل المطابقة ، وجميع الملفات في جميع المخرجين الفرعيين ، والمخرجين الفرعيين ، والأدلة المطابقة. إلحاق /*
يحذف الملفات فقط في دليل المطابقة ولكن لن يحذف دليل المطابقة.