Ok - got it working. Below is the test script. Finally worked out to do it from your old posts about this from 2009 :)
Many Thanks. <?xml version="1.0" encoding="UTF-8"?> <project name="resource-collection-delete-sample" default="tryit"> <property name="test-dir" value="${basedir}/testdata"/> <target name="setup-files"> <delete dir="${test-dir}"/> <mkdir dir="${test-dir}"/> <mkdir dir="${test-dir}/xxfile1"/> <mkdir dir="${test-dir}/012"/> <mkdir dir="${test-dir}/011"/> <mkdir dir="${test-dir}/1"/> <touch file="${test-dir}/1/test"/> <sleep milliseconds="100" /> <mkdir dir="${test-dir}/2"/> <touch file="${test-dir}/2/test"/> <sleep milliseconds="100" /> <mkdir dir="${test-dir}/3"/> <touch file="${test-dir}/3/test"/> <sleep milliseconds="100" /> <mkdir dir="${test-dir}/4"/> <touch file="${test-dir}/4/test"/> <sleep milliseconds="100" /> <mkdir dir="${test-dir}/5"/> <touch file="${test-dir}/5/test"/> <sleep milliseconds="100" /> <mkdir dir="${test-dir}/6"/> <touch file="${test-dir}/6/test"/> <sleep milliseconds="100" /> <touch file="${test-dir}/44" /> <sleep milliseconds="100" /> <!-- create some files --> </target> <macrodef name="delete-dir-pattern"> <attribute name="dir"/> <attribute name="regex"/> <sequential> <resources id="resource-all-dirs"> <dirset dir="@{dir}" > <filename regex="@{regex}" /> </dirset> </resources> <resources id="resource-last-3-dirs"> <last count="3"> <sort> <dirset dir="@{dir}" > <filename regex="@{regex}" /> </dirset> <date /> </sort> </last> </resources> <pathconvert property="dirs-to-delete" pathsep=","> <difference> <resources refid="resource-all-dirs"/> <resources refid="resource-last-3-dirs" /> </difference> <regexpmapper from="(^.*$)" to="\1\${file.separator}**" /> </pathconvert> <echo message="To delete:${dirs-to-delete}"/> <delete verbose="true"> <files includes="${dirs-to-delete}"/> </delete> </sequential> </macrodef> <target name="delete-files"> <!-- delete all but last few old release directories --> <delete-dir-pattern dir="${test-dir}" regex="^\d+$"/> </target> <target name="tryit" depends="setup-files, delete-files"> </target> </project> -----Original Message----- From: Matt Benson [mailto:gudnabr...@gmail.com] Sent: 11 February 2014 15:43 To: Ant Users List Subject: Re: Resource collections - Linux vs. windows Yeah, I have a feeling you are running into some problem having to do with non-empty subdirectories. Usually some creative sorting, etc., can help. The delete task should know how to handle this with filesets; I believe its page in the manual mentions this very problem. Therefore you might try using the pathconvert task to create a list of includes for a fileset and pass *that* to the delete task. Keep us updated on your progress. Matt On Tue, Feb 11, 2014 at 9:30 AM, Kimpton, C (Chris) < chris.kimp...@rabobank.com> wrote: > Good idea. > > It initially worked ok, when the directories were empty, but when I > added files to each (touch steps below), that caused the script to not > delete any files. > > And now I see that it does not work on Windows either ... my tests > used empty directories. > > Does this sound like a bug or am I missing some subtlety around > resource collections/dirset and non-empty subdirectories... > > Thanks in advance. > > Here is my test file: > > > <?xml version="1.0" encoding="UTF-8"?> <project > name="resource-collection-delete-sample" default="tryit"> > > <property name="test-dir" value="${basedir}/testdata"/> > > <target name="setup-files"> > <delete dir="${test-dir}"/> > <mkdir dir="${test-dir}"/> > <mkdir dir="${test-dir}/xxfile1"/> > <mkdir dir="${test-dir}/1"/> > <touch file="${test-dir}/1/test"/> > <sleep milliseconds="100" /> > <mkdir dir="${test-dir}/2"/> > <touch file="${test-dir}/2/test"/> > <sleep milliseconds="100" /> > <mkdir dir="${test-dir}/3"/> > <touch file="${test-dir}/3/test"/> > <sleep milliseconds="100" /> > <mkdir dir="${test-dir}/4"/> > <touch file="${test-dir}/4/test"/> > <sleep milliseconds="100" /> > <mkdir dir="${test-dir}/5"/> > <touch file="${test-dir}/5/test"/> > <sleep milliseconds="100" /> > <mkdir dir="${test-dir}/6"/> > <touch file="${test-dir}/6/test"/> > <sleep milliseconds="100" /> > <touch file="${test-dir}/44" /> > <sleep milliseconds="100" /> > <!-- create some files --> > </target> > > <target name="delete-files"> > <!-- delete all but last few old release directories --> > <resources id="resource-all-dirs"> > <dirset dir="${test-dir}" > > <filename regex="^\d+$" /> > </dirset> > </resources> > <resources id="resource-last-3-dirs"> > <last count="3"> > <sort> > <dirset dir="${test-dir}" > > <filename regex="^\d+$" /> > </dirset> > <date /> > </sort> > </last> > </resources> > <delete verbose="true"> > <difference> > <resources refid="resource-all-dirs"/> > <resources refid="resource-last-3-dirs" /> > </difference> > </delete> > </target> > > <target name="tryit" depends="setup-files, delete-files"> > </target> > > </project> > > > > > -----Original Message----- > From: Matt Benson [mailto:gudnabr...@gmail.com] > Sent: 11 February 2014 14:15 > To: Ant Users List > Subject: Re: Resource collections - Linux vs. windows > > Can you expand your example into a self-contained example that builds > up an appropriate structure first, then still fails on Linux? > > Matt > > > On Tue, Feb 11, 2014 at 2:21 AM, Kimpton, C (Chris) < > chris.kimp...@rabobank.com> wrote: > > > Hi, > > > > I have a target that is trying to delete some directories, all but > > the last few. It works as expected (I believe - it deletes files > > when > > expected) on my dev box (windows), but is not deleting anything on > > the build server (Linux): > > > > It builds up 2 resource collections - one for all directories and > > one for the last few and then does a delete based on the difference. > > > > <resources id="resource-all-dirs"> > > <dirset dir="${release-base-dir}" > > > <filename regex="^\d+$" /> > > </dirset> > > </resources> > > > > <resources id="resource-last-3-dirs"> > > <last count="4"> > > <sort> > > <dirset dir="${release-base-dir}" > > > <filename regex="^\d+$" /> > > </dirset> > > <date /> > > </sort> > > </last> > > </resources> > > > > <delete verbose="true"> > > <difference> > > <resources refid="resource-all-dirs"/> > > <resources refid="resource-last-3-dirs" /> > > </difference> > > </delete> > > > > I have tried running with debug and/or verbose but that does not > > seem to add anything. Using version 1.9.3. > > > > Any tips on how to track down the issue? > > > > Cheers, > > Chris > > > > _____________________________________________________________ > > > > This email (including any attachments to it) is confidential, > > legally privileged, subject to copyright and is sent for the > > personal attention of the intended recipient only. If you have > > received this email in error, please advise us immediately and > > delete it. You are notified that disclosing, copying, distributing > > or taking any action in reliance on the contents of this information > > is strictly prohibited. Although we have taken reasonable > > precautions to ensure no viruses are present in this email, we > > cannot accept responsibility for any loss or damage arising from the > > viruses in this email or attachments. We exclude any liability for > > the content of this email, or for the consequences of any actions > > taken on the basis of the information provided in this email or its > > attachments, unless that > information is subsequently confirmed in writing. > > _____________________________________________________________ > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For additional > commands, e-mail: user-h...@ant.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@ant.apache.org For additional commands, e-mail: user-h...@ant.apache.org