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

Maven Java Discussion :

remplacer le contenu d'un fichier dans target avant la creation du war


Sujet :

Maven Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 710
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 710
    Points : 936
    Points
    936
    Par défaut remplacer le contenu d'un fichier dans target avant la creation du war
    Bonsoir

    J'ai un fichier web.xml dans Web-inf/lib qui utilise le fichier datas/dev.txt
    <param-value>/data/dev.txt</param-value>
    Cette valeur de fichier me sert dans Rad pour le deboggage

    Je creer un war avec maven et je souhaite que /data/dev.txt soit remplacé par /data/val.txt

    J'aiu essayé sans succes
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    mvn clean install
     
    <plugin>
    				<artifactId>maven-antrun-plugin</artifactId>
    				<executions>
    					<execution>
    						<phase>package</phase>
    						<configuration>
    							<tasks>
    								<echo>
    									*** Remplacement dans web.xml de target
    								</echo>
    									<replace
    									file="target/${artifactId}-${version}/WEB-INF/web.xml" token="data/dev.txt"
    									value="data/val.txt" />
    				</tasks>
    						</configuration>
    						<goals>
    							<goal>run</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>
    => Cela fait bien un remplacement dans le repertoire target MAIS apres la creation du WAR ??? donc mon fichier dans le war est mauvais.
    J'ai essayé le prepare-package, mais le repertoire target n'existe pas a ce moment la !
    => Je ne souhaite pas modifié le web.xml d'origine car il foncrtionne en mode deboggage dans RAD, et faire un deuxieme fichier template me gene, car dans ce cas j'aurais 2 fichiers web.xml à gérer !


    Une idee ?
    Merci d'avance
    Philippe

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Points : 794
    Points
    794
    Par défaut
    Premièrement, je déconseillerais de mettre des variables dans ton fichier de déploiement web.xml. C’est un anti pattern. L’objectif est vraiment d’avoir une web archive portable et c’est a l’environnement final de fournir les spécificités.
    Techniquement, tu dois utiliser les propriétés systèmes (que ton programme sera interprété), JNDI, …
    Ainsi, mettre une valeur spécifique dans ton web.xml pour ton debugging dans ton outil de développement, ce n’est pas trop la solution.

    Ensuite, si c’est vraiment ce que tu veux faire, je te conseillerais d’utiliser la puissance des plugins Maven et de son cycle vie afin de supprimer l’appel a une tache Ant (cette solution est la aussi a proscrire et a utiliser vraiment en dernier recours).

    Un exemple de solution consiste a mettre une propriété au niveau de ton fichier web.xml qui sera filtre au début du cycle de Maven.
    Afin d’éviter tes problèmes de répertoire de localisation, je met le fichier web.xml dans un répertoire src/nain/config et je demande au plugin Maven de packaging de l’application Web (maven-war-plugin) d’utiliser l’emplacement du résultat du filtering de ce fichier.
    La valeur de la propriété pourra varier en fonction de profil.

    Fichier pom.xml:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <build>
       <plugins>
     
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.4.1</version>
            <executions>
              <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target/webresources</outputDirectory>
                  <resources>          
                    <resource>
                      <directory>${basedir}/src/main/config</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>              
                </configuration>            
              </execution>
            </executions>
          </plugin>
     
        <plugin>
           <artifactId>maven-war-plugin</artifactId>
           <configuration>
            <webXml>${basedir}/target/webresources/web.xml</webXml>
           </configuration>
        </plugin>
     
       </plugins>
    </build>
     
       <properties>
         <val>/data/val.txt</val>
       </properties>

    Avec dans le fichier web.xml:

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 710
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 710
    Points : 936
    Points
    936
    Par défaut
    Bonjour

    Je n'ai pas utilisé cette technique pour deux raisons
    1 avec RAD7 je souhaite pouvoir debogguer mon appli donc mon web.xml ne comporte pas de variable a remplacer pour que le websphere local a RAD puisse fonctionner.

    2 j'utilise SPRING pour log4j dans mon web.xml avec la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <context-param>
             <param-name>log4jConfigLocation</param-name>
             <param-value>file:${user.dir}/Properties/App1_log4j.properties</param-value>
    	</context-param>
    et comme dans mon websphere local a rad cette variable n'a pas la meme valeur que sur le serveur de prod, je ne tiens pas a ce qu'elle soit remplacé.
    Si je met un / devant afin d'éviter le remplacement de cette variable, je ne pourrais plus l'utiliser en mode deboggage mon fichier web.xml

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 03/05/2006, 17h06
  2. injecter le contenu d'un fichier dans un tableau
    Par rogerio dans le forum C++
    Réponses: 5
    Dernier message: 03/05/2006, 16h37
  3. [VB6]Lire le contenu d'un fichier dans une listbox
    Par gizmorambo dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 11/04/2006, 12h51
  4. Réponses: 4
    Dernier message: 26/01/2006, 14h37
  5. [LG]Ecrire le contenu d'un fichier dans un autre
    Par lucke dans le forum Langage
    Réponses: 10
    Dernier message: 26/04/2003, 20h48

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