Bonjour,
j'ai un script de build et packaging automatisé, dans lequel je souhaiterais que les fichiers copiés ou générés (sources, zip, ear etc) soit regroupés dans un répertoire nommé comme ceci "build-AAAAMMJJ-HHMMSS" (on pourrait à la rigueur se passer des secondes mais c'est ce qui m'a permis de me rendre compte de mon problème)
Voici donc ce que j'ai :
getProject est exécutée plusieurs fois via une liste de modules à traiter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <project default="buildAll"> <tstamp> <format property="DATE-HOUR" pattern="yyyyMMdd-hhmmss" locale="en,UK"/> </tstamp> <!-- Issues d un fichier .properties automation.home=E:/Automation automation.builds=${automation.home}/dailybuilds --> <property environment="buildenv" /> <property name="build.directory" value="build-${DATE-HOUR}"/> <property name="packaging.root" value="${automation.builds}/${build.directory}" /> <property name="log.dir" value="${packaging.root}/logs" /> <property name="output.dir.zip" value="${packaging.root}/zip" /> <property name="output.dir.ear" value="${packaging.root}/ear" /> <property name="wid.work.dir" value="${packaging.root}/wid" /> <property name="source.dir" value="${packaging.root}/src" /> <!-- [...] --> <target name="getProject" description="Copy projects in SCA module Source Dir from ClearCase View Dir"> <echo message="Copy ${project.name} To ${source.dir}" /> <!-- Copy the updated view to the new directory --> <copy todir="${source.dir}\${project.name}"> <fileset dir="${svn.view}\${project.name}" /> </copy> </target> [...] <target name="createZip" depends="getDependencies" description="Create ZIP of the selected Integration module"> <echo message="Create zip for the module: ${module.name} (dependencies : ${dependency.list})" /> <echo message="pack root : ${packaging.root}"/> <propertyregex property="dependency.includes" input="${dependency.list}" regexp="\?" replace="\/\*\*," /> <echo message="Dependencies : ${dependency.includes}" /> <zip destfile="${output.dir.zip}/${module.name}.zip" basedir="${source.dir}" includes="${module.name}/**,${dependency.includes}" update="true" excludes="gen/**" /> </target>
On s'attendrait à ce que ${source.dir} dans la tâche getProject ait toujours la même valeur, initialisée via l'utilisation de property au début. Sauf que ce n'est pas le cas, les valeurs des secondes changent.
Ce qui fait que mes sources sont réparties dans plusieurs répertoires, et qu'ensuite la tâche chargée de les zipper va elle-même chercher dans un nouveau répertoire vide, puisque quelques secondes se sont écoulées.
Pourtant je croyais que les property étaient immutables, ça m'a bien embêté des fois d'ailleurs, et pour une fois que je voudrais qu'elle le soit ça change
Comment faire ? J'ai cherché partout dans la doc mais je n'ai pas trouvé d'exemple avec plusieurs utilisations d'un timestamp, y'a-t-il un moyen de le stocker quelque part et qu'il ne bouge plus ?
Merci
J'ajoute la trace du script :
Buildfile: build.xml
clean:
init:
[echo] Create folders
[mkdir] Created dir: E:\Automation\dailybuilds\build-20100222-014021\src
[mkdir] Created dir: E:\Automation\dailybuilds\build-20100222-014021\zip
[mkdir] Created dir: E:\Automation\dailybuilds\build-20100222-014021\ear
[mkdir] Created dir: E:\Automation\dailybuilds\build-20100222-014021\logs
[mkdir] Created dir: E:\Automation\dailybuilds\build-20100222-014021\wid
getProject:
[echo] Copy Dossier1 To E:/Automation/dailybuilds/build-20100222-014028/src
[copy] Copying 13 files to E:\Automation\dailybuilds\build-20100222-014028\src\Dossier1
[copy] Copied 7 empty directories to 1 empty directory under E:\Automation\dailybuilds\build-20100222-014028\src\Dossier1
getProject:
[echo] Copy Dossier2 To E:/Automation/dailybuilds/build-20100222-014029/src
[copy] Copying 25 files to E:\Automation\dailybuilds\build-20100222-014029\src\Dossier2
[copy] Copied 15 empty directories to 2 empty directories under E:\Automation\dailybuilds\build-20100222-014029\src\Dossier2
createZip:
[echo] Create zip for the module: Dossier1
[zip] Building zip: E:\Automation\dailybuilds\build-20100222-014026\zip\Dossier1.zip
BUILD FAILED
C:\build.xml:92: Problem creating zip: E:\Automation\dailybuilds\build-20100222-014026\zip\Dossier1.zip (The system cannot find the path specified) (and the archive is probably
corrupt but I could not delete it)
Edit :
au sein de la même tâche et du même appel, la valeur ne change pas (j'ai fait une petite tâche de test avec des sleeps et des echos, ça affiche tjrs la même valeur)
Sauf que moi j'ai plusieurs tâches qui doivent utiliser ces chemins (avec la date) et certaines sont appelées via des foreach(), donc comment faire ?
ça me semble pourtant être une opération basique de n'importe quel language
N'importe quelle piste serait la bienvenue, merci.
Partager