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 :

Génération d'un war, et remplacement de propriétés dans les xml


Sujet :

ANT Java

  1. #1
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut Génération d'un war, et remplacement de propriétés dans les xml
    Bonjour,

    Je vais créer une tâche ANT pour générer un WAR.

    Je suis en développement et j'utilise une config de dev (ip, SQBD, chemins, etc...)

    Je vais avoir besoin à un moment d'avoir un déploiement pour une mise en production et j'aimerais automatiser la substitution de certaines propriétés.

    Par exemple pour une déclaration de DataSource dans un fichier /META-INF/monappli.xml j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	<Resource auth="Container" description="DB Connection"
    		name="webDataSource" type="javax.sql.DataSource"
    		driverClassName="oracle.jdbc.OracleDriver" password="password"
    		maxIdle="2" maxWait="5000" username="user"
    		url="jdbc:oracle:thin:@monip:1521:XE" maxActive="4" />
    Je souhaiterais paramétrer l'url, le nom, etc...

    Que me conseiller pour comme procédure pour arriver à ce résultat ?
    Quelles sont les tâches qui vont m'être utiles ?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Il existe plusieurs solutions plus ou moins faciles à utiliser. Pour ma part dans ce cas de figure j'utilise le remplacement par expression régulière; la tâche à utiliser est <ReplaceRegExp>.

    Jacques Desmazières

  3. #3
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    ok, je viens d'essayer mais je ne suis pas très fort apparement en expressions régulières.

    Je souhaiterais remplacer la chaine suivante :

    url="jdbc:oracle:thin:@ipdedev:1521:XE"

    en

    url="jdbc:oracle:thin:@ipdeproduction:1521:XE"

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Tout dépend de ce que tu veux changer dans l'url:
    - juste le nom du serveur
    - toute l'url

    Pour changer toute l'url, tu peux utiliser le pattern suivant:
    et l'expression serait
    en remplaçant @1@ par ta nouvelle url

    Sinon si tu veux plus de contrôle sur l'url, tu peux utiliser un pattern du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url="([^:]*):([^:]*):([^:]*):@([^:]*):([^:]*):([^:]*)"
    dans lequel tu auras
    \1=jdbc
    \2=oracle
    \3=thin
    \4=ipdedev
    \5=1521
    \6=XE

    A partir de là tu peux reconstruire entièrement ton url

    Pour info, j'utilise RegExCoach pour tester mes regexp en interactif

    Jacques Desmazières

  5. #5
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Merci bcp ça marche bien.

  6. #6
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Le plus simple est d'utiliser les filterset, ils permettent de remplacer des "tokens" à la volée lors d'une copie.
    Les filterset sont à utiliser avec la tâche copy.
    Voici comment cela fonctionne :
    1- Tu créés les fichiers dans lesquels tu veux remplacer des trucs dans un répertoire genre "ressources".
    2- Dans ces fichiers, tu mets des tokens sous cette forme @token1@, @token2@. Moi j'utilise une forme genre @type1.token1@, @type1.token2@, @type2.token1@,...
    3- Dans un répertoire dédié, genre contextes, tu crées des répertoires genre dev, integration, recette, production,...
    4- Dans ces répertoires tu crées un fichier de propriétés (context.properties) de la forme :
    type1.token1=<valeur XX pour le contexte>
    type1.token2=<valeur YY pour le contexte>
    type2.token2=<valeur ZZ pour le contexte>

    5- Tu lances toujours ANT avec la variable contexte positionnée à qq chose, genre ant -Dcontexte=dev, ou ant -Dcontexte=production (fais un script pour chaque contexte possible).
    6- Là où il faut, dans ton build.xml, tu recopie les fichiers du '1' en utilisant le filterset que tu vas chercher dans <...>/contextes/${contexte}/context.properties

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <copy todir="../dist/webapp1/WEB-INF">
       <fileset dir="../rep de mes fichiers à mettre dans WEB-INF"/>
       <filterset dir="../contextes/${contexte}">
               <include name="context.properties"/>
       </filterset>
    </copy>
    Tu peux ainsi gérer des contextes qui sont liés à ton cycle de validation = dev, int, recette, production mais aussi liés à des développeurs = un contexte pour chaque développeur si besoin pour accéder à "sa" propre base de données par exemple.

    Bonne chance

  7. #7
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Merci pour ce complément bien utile

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/08/2010, 11h19
  2. [RegEx] Remplacer des ',' seulement dans les '(' et ')'
    Par BakaOnigiri dans le forum Langage
    Réponses: 6
    Dernier message: 04/06/2010, 01h38
  3. [XPATH] génération d'un xpath pour faire des recherches dans un xml
    Par Spaceman Spiff dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/06/2007, 18h18
  4. Remplacement des espaces dans les valeur d'un tableau
    Par calimero642 dans le forum Langage
    Réponses: 10
    Dernier message: 12/05/2006, 18h56
  5. Remplacer "SECTEUR 1" dans les graphiques
    Par curt dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 13h56

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