2010-11-18 11 views
3

J'ai un projet Maven d'emballage de guerre, dans lequel j'ai un fichier de propriétés Java appelé myapp.properties. Dans ce fichier de propriétés, je stocke certains paramètres, par exemple, les paramètres de connexion à la base de données, qui seront utilisés par la webapp. Dans un environnement d'intégration continue ou dans mon environnement de développement, je souhaite définir des paramètres de test dans myapp.properties pour me connecter à ma base de données de test, par exemple.Différents fichiers à empaqueter dans un projet de guerre Maven

  • Dans le même temps, je veux laisser ces paramètres vides dans mon paquet de guerre final afin que les utilisateurs puissent ajouter ces valeurs par eux-mêmes lors du déploiement dans leur environnement. Le paquet de guerre final doit être un artefact de génération généré dans l'environnement d'intégration continue. Pour l'essentiel, il existe deux versions du fichier myapp.properties que je souhaite utiliser dans différents cas. Ma question est, quelle est la façon Maven de résoudre ce problème? J'utilise Eclipse + WTP + m2eclipse dans mon environnement de développement et j'espère que la solution fonctionnera bien avec mes outils de développement.

  • Répondre

    0

    Je voudrais essayer avec

    pom.xml pour votre projet (ou pom parent)

     <build> 
          ... 
         <resource> 
          <directory>src/main/resources</directory> 
          <includes> 
           <include>**/*.properties</include> 
          </includes> 
          <filtering>true</filtering> 
         </resource> 
         ... 
         </build> 
    

    dans votre fichier de propriétés (s) par exemple

    db.url=${db.url} 
    

    et dans votre settings.xml (voir http://maven.apache.org/settings.html#Profiles)

    <db.url>jdbc:mysql://localhost:3306/testdb</db.url> 
    

    selon votre stade de développement (local, construire serveur, etc.), vous pouvez utiliser différentes valeurs db.url

    Cela ne laissera pas la propriété db.url vide, mais chaque fois que vous empaquetez l'artefact, vous ne voulez pas qu'il reste vraiment vide, n'est-ce pas?

    +0

    Ceci utilise le mécanisme de profil de Maven. Cependant, dans mon environnement CI, j'ai besoin de construire à la fois la guerre de test pour les tests et la guerre de production comme livrable si les tests sont bons. Dans ce cas, il semble que je ne puisse pas utiliser un profil différent pour les différencier dans le même environnement, et que je doive construire deux artefacts à des fins différentes? – nybon

    +0

    Je ne connais pas votre environnement de gestion de l'environnement, mais dans le nôtre, nous avons des configurations différentes pour le test, la production (intégration, etc.) cela inclut différents profils –