IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ANT Java Discussion :

Stocker timestamp dans une property (avec tstamp)


Sujet :

ANT Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Points : 29
    Points
    29
    Par défaut Stocker timestamp dans une property (avec tstamp)
    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 :
    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>
    getProject est exécutée plusieurs fois via une liste de modules à traiter.
    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.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Bon j'ai fini par trouver, cela venait du <foreach>, que je n'avais pas pu tester dans un petit script bidon que j'avais utilisé pour les différentes hypothèses.

    Il faut utiliser l'attribut inheritall
    inheritall If true, pass all properties to the called target. Defaults to false.

    => http://ant-contrib.sourceforge.net/t...s/foreach.html


    Et là ça marche, la valeur de ma property ne bouge pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2014, 22h07
  2. Initilaliser une variable dans une jsp avec <s: property>
    Par saloua2200 dans le forum Struts 2
    Réponses: 1
    Dernier message: 06/06/2011, 21h12
  3. Tabulation dans une form avec entrée
    Par Cl@rk dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 12h09
  4. TForm dans une DLL avec utilisation d'Interface
    Par guedelmalin dans le forum Langage
    Réponses: 13
    Dernier message: 17/06/2005, 11h58
  5. navigation dans une jsp avec javascript
    Par petitelulu dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/11/2004, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo