Antでディレクトリのdirsetを削除するにはどうすればよいですか?

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

  •  03-07-2019
  •  | 
  •  

質問

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

を使用することです
<delete>
    <dirset dir="${root}">
          <include name="**/*tmp*" />
    </dirset>
</delete>

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

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

  • 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 (thanks、flicken、XL-Pl&#252; schhase)は、末尾の ** ワイルドカードが空の文字列と一致するようにします。

他のヒント

試用:

<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