14

名前に「tmp」が含まれているルート ディレクトリの下のすべてのディレクトリとサブディレクトリを削除したいと考えています。これには、.svn ファイルも含める必要があります。私の最初の推測は使用することです

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

タグdirsetに a をネストできないため、これは機能しないようです。delete

これは正しいアプローチですか、それとも何か他のことをすべきですか?

  • ant バージョン == 1.6.5。
  • Java バージョン == 1.6.0_04
4

3 に答える 3

23

これが私のために働いた答えです:

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

.svnディレクトリも削除する必要があり、さらに複雑になりました。ではdefaultexcludes.*ファイルが除外されていたため、空のディレクトリは実際には空ではなく、削除されていませんでした。

属性includeemptydirs(thanks、flicken、XL-Plüschhase) を使用すると、末尾の**ワイルドカードを空の文字列に一致させることができます。

于 2008-10-01T21:00:10.797 に答える
5

試す:

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

ありがとうフリック!

于 2008-10-01T17:08:24.710 に答える
5

私のために働いたソリューションの一部が/**インクルードパスの最後に追加されたことを追加したかっただけです。Eclipse .settings ディレクトリを削除するために次のことを試しました。

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

しかし、次のように変更するまで機能しませんでした:

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

何らかの理由/**で、パスに追加すると、一致するディレクトリ内のファイル、すべてのサブディレクトリ内のすべてのファイル、サブディレクトリ、および一致するディレクトリが削除されます。追加/*すると、一致するディレクトリ内のファイルのみが削除されますが、一致するディレクトリは削除されません。

于 2010-02-25T19:07:36.063 に答える