/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Defekt Ant...
Fra : Michael Berg


Dato : 15-04-04 07:45

[ant 1.6.1]

Hvad er det med Ant's pattern matching der bare overhovedet ikke virker?

Tag fx. denne backup buildfil:

<target name="all" description="Backup" >
<copy todir="${dest.dir}\D">
<fileset dir="D:\">
<include name="Temp\**"/>
<include name="Test\**"/>

<include name="Data\**"/>
<exclude name="Data\Vmware\**\*REDO*"/>
<exclude name="Data\Vmware\**\*lck"/>
<exclude name="Data\Vmware\**\*sav"/>
</fileset>
</copy>
..

I min VMware folder har jeg flere filer der hedder fx:

Windows 2000 Professional.vmdk-s001.REDO_a03260
Windows 2000 Professional.vmx.sav
Windows 2000 Professional.vmx.lck

Jeg har prøvet ALLE tænkelige måder at matche lck og sav filerne, men det er
Ant total ligeglad med. Den kommer troeligt tilbage med en fejl hver eneste
gang:

"...D:\Data\Personal\Backup\usbbackup.xml:20: Failed to copy
D:\Data\Personal\VMWare\Windows XP Professional\Windows XP
Professional.vmx.lck to F:\Backup\D\Data\Personal\VMWare\Windows XP
Professional\Windows XP Professional.vmx.lck due to The process cannot
access the file because another process has locked a portion of the file..."

Hverken
<exclude name="Data\Vmware\**\*lck"/>
eller
<exclude name="Data\Vmware\**\*.lck"/>
eller
<exclude name="Data\Vmware\**\*lck*"/>

...kan matche lck filerne. Det er som om Ant stopper ved det første punktum i
et filnavn og siger "aha! filens endelse kommer lige bagefter kan jeg regne
ud" - det hænger jo bare overhovedet ikke sammen hvis en fil har to
"endelser". Jeg fatter i det hele taget ikke hvorfor pattern matching koden
prøver at gøre sig klog på hvad filens endelse er, i stedet for blot at
prøve at matche to tekstmønstre.

Er der da ikke et eller andet geni der kan fortælle mig hvordan jeg
overbeviser Ant om IKKE at tage lck filerne med?

Jeg har også prøvet at bruge Ant til at tage backup af mit C: drev. Filen
ntuser.dat selvfølgelig ikke åbnes, så derfor udelukker jeg den. Men også
her var jeg nødt til at eksperimentere mig frem, og nåede til følgende
løsning:

<exclude name="**\ntuser*.*"/>
<exclude name="**\NTUSER.DAT"/>

Ja, først en rimelig generisk lowercase udgave der matcher en
ntuser.dat.noget, og bagefter en anden der matcher selve dat filen. I
uppercase. Første pattern burde være nok, og det burde være nok at skrive
"*\ntuser*". En * har altid matchet enhver tekst, men det gør den bare ikke
i Ant. Der matcher den fx. et directory eller et filnavn (uden endelse), og
så har den et unødvendigt og forvirrende ** koncept der så matcher flere
directory niveauer. Man aner ikke hvornår man skal bruge det ene og det
andet.

Kan godt være der er meget ståhej omkring Ant, men jeg kan i hvert fald få
øje på ET sted hvor det virker fuldstændig totalt defekt.

/Michael



 
 
Thorbjoern Ravn Ande~ (15-04-2004)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 15-04-04 07:50

"Michael Berg" <michael.berg@bergconsult.dot.com (figure it out)> writes:

> <copy todir="${dest.dir}\D">

Prøv at skifte dine \ ud med /.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste