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

  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2005
    Messages : 3 790
    Points : 7 700
    Points
    7 700

    Par défaut Filtrer des fichiers comme le fait Maven2

    Bonjour,

    J'ai un fichier properties qui contient des informations propres à un environnement donnés. Par exemple, dev.properties va contenir ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    application.version=1.0
    application.build=42
    user.name=foo
    user.password=bar
    ...
    J'ai, d'un autre côté, quelques fichiers de configuration qui contiennent ces clés de propriétés (${application.version}, ${user.name} par exemple). Je souhaiterais ainsi que ces fichiers soient filtrés. Autrement dit, que dans mon fichier trucmuche.conf, le ${user.name} soit remplacé par sa valeur dans dev.properties (foo donc).

    Avec Maven2, il suffit simplement d'indiquer que les ressources sont filtrées, et c'est tout.
    Sauf que là, j'ai besoin de le faire avec Ant.
    Comment puis-je faire ?

    J'ai regardé du côté du filterchain ou encore filterreader, mais je n'arrive pas à obtenir ce que je souhaite. Par défaut, Ant veut que les tokens à remplacer soient du format @xxx@ (@user.name@ par exemple), ce qui ne me convient absolument pas !

    Une idée ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2005
    Messages : 3 790
    Points : 7 700
    Points
    7 700

    Par défaut

    J'ai trouvé une solution, mais qui est franchement horrible tellement elle est pas belle :

    Code xml : 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
     
        <property file="dev.properties"/>
        <copy todir="${dist-files}" overwrite="true">
            <fileset dir="${src-files}">
                <include name="*.properties"/>
            </fileset>
            <filterchain>
                <filterreader classname="org.apache.tools.ant.filters.ReplaceTokens">
                    <param type="tokenchar" name="begintoken" value="$"/>
                    <param type="tokenchar" name="endtoken" value="}"/>
                    <param type="token" name="{application.version" value="${application.version}"/>
                    <param type="token" name="{user.name" value="${user.name}"/>
                    ...
                </filterreader>
            </filterchain>
        </copy>

    En gros, je charge mon fichier dev.properties. J'ai donc accès, dans mon fichier Ant aux différents ${user.name}, etc. Ensuite, j'utilise un ReplaceTokens. On peut lui définir le token de début et de fin (par défaut @), mais hélas, ces tokens sont des caractères et non des Strings. Du coup, au lieu de chercher des patterns du type ${...}, je me mets à chercher les patterns du type $...}.
    Ensuite, je définis un token par entrée dans mon fichier properties. Pour pallier le problème cité juste avant, je ne cherche pas un entrée du type user.name, mais {user.name.
    Heureusement, je n'ai qu'une petite vingtaine d'entrées dans mon fichier de properties, mais bon quand même !

    C'est laid, c'est moche, c'est pas beau, mais ça marche...



    Y a pas de solution plus simple, plus jolie pour régler un problème qui me paraissait pourtant pas compliqué ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

Discussions similaires

  1. [PowerShell] Comment filtrer des fichiers sur leur date de création
    Par Gusss dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 04/01/2010, 10h39
  2. filtrer des fichier par extention dans un repertoire
    Par tipon20 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 03/11/2008, 21h22
  3. des fichiers comme arguments dans le main
    Par adel.87 dans le forum Débuter
    Réponses: 1
    Dernier message: 27/12/2007, 14h42
  4. mettre des fichier comme arguments
    Par adel.87 dans le forum Débuter
    Réponses: 5
    Dernier message: 24/12/2007, 13h15
  5. Filtrer des fichiers excel
    Par nsimon70 dans le forum Excel
    Réponses: 13
    Dernier message: 23/12/2007, 20h01

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