Windows, ClearCase og Ant: Hvordan håndterer du skråstreger?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et Windows-batch script, som jeg bruger til at opbygge et modul, og scriptet bruger i sin tur kommandoen ClearCase clearmake til at køre de faktiske kompileringer, mappeskabe og filmanipulationer, dvs. behandle Makefile-indholdet. Batch-scriptet virker fejlfrit, når det påberåbes ved hjælp af et DOS-vindue eller fra en 'cmd/c ...' kommandolinjeindkaldelse. Og det har været på den måde i nogle år.


Jeg har for nylig besluttet at flytte scriptet til Ant. Det første skridt, ud af enkelhed, var at blot bruge scriptet uændret ved hjælp af en Exec opgave (ved hjælp af cmd /c). Næsten øjeblikkeligt mislykkes myr mens man opretter en mappe. Fejlmeddelelsen rapporterer noget om:


mkdir: Cannot create the directory C:\fred\harry\joe


Jeg var i stand til at kontrollere, at kommandoen mkdir C:\fred\harry\joe fungerer ved at bruge kommandoen DOS, så jeg kan fortælle så langt, at Ant genererer dobbeltsidestrømsseparatorer kombineret med noget der er forbundet med clearmake og/eller noget i Makefile forårsager fejlen.


Det svar, jeg søger efter, er noget som følger: 'Ja, clearmake er bestemt skyldige fordi ...' eller 'Hvis du twiddle denne ting eller den ting i Ant, vil der kun blive genereret en enkelt tilbageslag ... '. Skulle der ikke være nogen enkel og hurtig forklaring, vil jeg bore ind i problemet for at afgøre, hvad der præcist forårsager fejlen.


Tak,

Bedste reference


Jeg har set lignende fejl med:



  • dynamiske visninger (mere fornuftige til ejerskab end et øjebliksbillede på C: \, hvilket er din sag)

  • ressourcehåndteringskonflikt (scriptet forsøger at opdatere en ressource, der allerede er taget af en anden proces, hvilket ikke bør være tilfældet her med scriptet, da det fungerede uden for Ant Exec-opgaven)

  • fejlmeddelelse (som om du opretter en mappe, der allerede eksisterer: fejlen ignoreres i et klassisk script, mens det kan afbryde ant-opgaven.



Mens den sidste årsag er en god kandidat, så prøv først at forenkle dit script (forlad kun mkdir for at kontrollere, at denne linje faktisk er problemet (ikke 'denne linje i forbindelse med andre handlinger, der tager sted lige før ')