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 :

maven & fichier properties


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut maven & fichier properties
    Bonjour,
    j'aurai une petite question sur maven !

    j'ai un fichier properties (url.properties) :

    toto = fille:///C:/test/Projet1/src/properties/fichier1.properties
    toto1 = fille:///C:/test/Projet2/src/properties/fichier2.properties

    J'aimerai avec maven lorsque je compile, modifier le fichier url.properties afin que lorsqu'un développeur installe l'environennement ne soit pas obligé d'installer le projet dans C:/test mais C:/monprojet ou C:/titi etc.....

    En gros l'arboresence rouge reste toujours comme ça, mais c'est juste le c:test qui doit changer selon où nous sommes.

    Donc j'ai un pom parent qui se trouve dans test, et des pom enfants dans les sous projets.

    le fichier url.properties se trouve dans un sous projet (Projet1)
    et à l'intérieur de ce pom enfant, j'ai rajouté ça :
    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
     
    <filters>
          		<filter>${basedir}/url.properties</filter>
        	</filters>
    	<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    		    	<artifactId>maven-antrun-plugin</artifactId>
            		<executions>
              			<execution>
    			        	<id>Adaptation des properties</id>
                			<phase>process-resources</phase>
    			            	<configuration>
    			    		      <tasks>
    			    		        <echo message="Adaptation des properties"/>
    			    		        <echo message="${project.parent.basedir}"/>
    			    		        <replaceregexp file="${basedir}\\url.properties" 			match="file:///C:/test" 	replace="${project.parent.basedir}"  	byline="true"/>
    			    		      </tasks>
    			    			</configuration>   
        			        <goals>
    			            	<goal>run</goal>
    			            </goals>         
    					</execution>                
            		</executions>
            		<dependencies>
            	  		<dependency>
      			     		<groupId>ant</groupId>
      			     		<artifactId>ant-optional</artifactId>
      			     		<version>1.5.3-1</version>
      		    		</dependency>
    		    	</dependencies>
    			</plugin>
    ça fonctionne bien..... mais le souci,c'est si je change de répertoire parent, ça ne marchera plus..... car le matching n'existera plus....

    n'y a-til pas un moyen plus efficace de changer le fichier properties ?

    merci (en espérant que mon explication a été claire)

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    Je en suis pas sûr d'avoir compris.
    Le problème se situe au niveau de la localisation du fichier url.properties ou de son contenu?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    son contenu..

    en gros, lorsque je fais mvn compile, le fichier url.properties est modifié avec la bonne arborescence du poste du développeur...

    je suis entrain de modifier le fichier url.properties :

    toto = ${basedir}/Projet1/src/properties/fichier1.properties

    Dans le maven, j'ai essaie de modifier le basedir par sa valeur (par ex : c:\monprojet)

    Je sais pas si je suis dans la bonne voie, mais j'essaie.... :s

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Le ${basedir} me semble une bonne piste.
    Par contre, tu ne dois pas inclure Projet1 car il sera contenu dans le basedir (puisque ton filtre est dans ce projet).

    L'héritage des propriétés et des filtres est quelque chose de délicat. tiens-nous au courant.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    en mettant ça :
    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
     
    <build>	
    		<sourceDirectory>JavaSource</sourceDirectory>
    		<resources>
    			<resource>
    				<directory>JavaSource</directory>
    				<excludes>
    					<exclude>**/*.java</exclude>
    					<exclude>**/*.jar</exclude>
    				</excludes>
    				<filtering>true</filtering>
    			</resource>
    			<resource>
    			   <directory>JavaSource/ressources</directory>
    			   <filtering>true</filtering>	
          </resource>
     
      </resources>
    .....
     
    <profiles>
        <profile>
          <id>developpement</id>
          <properties>
            <prj.basedir>${basedir}</prj.basedir>
          </properties>
        </profile>  
      </profiles>
     
    et dans mon url.properties : 
     
    toto = ${prj.basedir}/Projet1/src/properties/fichier1.properties
    ça marche mais ça met dans le dossier target...
    j'aimerai aussi qu'il le mette dans le dossier source pour pouvoir utiliser ça dans le développement

    avez-vous une solution ?

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Je vais peut-être dire une connerie, mais ça, il me semble que ça ne sert à rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <prj.basedir>${basedir}</prj.basedir>
    Autant utiliser directement basedir.

    Après, c'est normal de retrouver les fichiers générés par Maven dans target, c'est la logique (lecture sur src, lecture/ecriture sur target).

    Mais en quoi cela te dérange?
    Ton fichier est un filtre, il sera utilisé avec les propriétés remplacées, sans toucher au fichier original (c'est mieux pour éviter un commit malheureux).

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ekremyilmaz Voir le message

    ça marche mais ça met dans le dossier target...
    j'aimerai aussi qu'il le mette dans le dossier source pour pouvoir utiliser ça dans le développement
    Même en test/développement, le code ne devrais pas utiliser le dossier source. Tout ce dont il a besoin est dans target, qui est une image de ce qui se trouvera dans le jar. Sinon, comment être sur que le code marchera encore une fois mis en production

    De plus, si ce fichier est spécifique à chaque développeur, une solution alternative est de l'exclure du "svn/cvs/autre type de code repository" et de laisser chaque développeur mettre sa propre version du fichier directement sur le filesystem une fois pour toutes

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    Oui, mais en fait, si je vous dit cela, c'est qu'ensuite, je crée les projets eclipses et je démarre le projet à partir d'éclipse, donc je n'utiliserai pas le dossier target.

    En gros, le but est que le développeur récupère les sources du cvs, lancer mvn eclipse:clean eclipse:eclipse,

    puis lance eclipse, et import les projets crée à l'aide de maven.

    Et ensuite, lancer l'appli par eclipse et donc (si j'ai bien compris), le dossier target ne servira à rien lorsque je vais lancer l'appli par eclipse.

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ekremyilmaz Voir le message
    Et ensuite, lancer l'appli par eclipse et donc (si j'ai bien compris), le dossier target ne servira à rien lorsque je vais lancer l'appli par eclipse.
    par défaut eclipse met les classes compilée dans bin/ Mais si tu utilise un plugin eclipse de synchronisation avec maven, normalement tout ca doit etre cohérent. Ainsi, eclipse utilise alors target/ plutot que bin et donc tes ressources modifiées sont visibles. Aussi, en cas de synchro, un build maven est effectué avant de lancer test et autre code avec le "run as" de eclipse, les dépendances sont maintenues à jour, etc.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 358
    Par défaut
    Mais si tu utilise un plugin eclipse de synchronisation avec maven, normalement tout ca doit etre cohérent
    Connais tu un plugin eclipse ?

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

Discussions similaires

  1. Maven et fichier properties
    Par CheepCheep dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 15/01/2014, 10h35
  2. Réponses: 14
    Dernier message: 28/05/2013, 10h52
  3. problème maven fichiers properties UTF8
    Par friedamichelle dans le forum Maven
    Réponses: 3
    Dernier message: 10/03/2011, 09h15
  4. fichiers .properties non presents dans un Jar Maven.
    Par scratch_1 dans le forum Maven
    Réponses: 1
    Dernier message: 14/10/2009, 17h25
  5. [struts] utiliser plusieurs fichiers properties
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 7
    Dernier message: 03/10/2003, 17h02

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