Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    5.5. Trucs et Astuces

    Les profils encouragent la portabilité du build. Si vous avez besoin de configurer avec délicatesse votre build pour qu'il puisse s'exécuter sur différentes plateformes ou pour construire différents artefacts selon la plateforme cible, alors les profils peuvent améliorer sa portabilité. Les profils définis dans les fichiers settings.xml diminuent la portabilité d'un build puisque les développeurs doivent échanger cette information supplémentaire. Les sections qui vont suivre présentent des guides et des suggestions pour l'utilisation de profils Maven dans votre projet.

    5.5.1. Environnements communs

    Une des principales raisons à l'utilisation de profils Maven est de fournir la configuration spécifique à un environnement. Dans un environnement de développement, vous voudrez produire du bytecode avec les informations nécessaires pour le débogage et vous voudrez configurer votre système pour qu'il utilise une base de données de développement. Dans un environnement de production, vous souhaiterez produire un JAR signé et configurer votre système pour qu'il utilise la base de données de production. Dans ce chapitre, nous avons défini un certain nombre d'environnements avec des identifiants comme dev et prod. Il est possible de simplifier tout cela en définissant des profils qui seront activés par des propriétés de l'environnement et en utilisant ces mêmes propriétés pour l'ensemble de vos projets.

    Par exemple, si chaque projet a un profil development activé par une propriété appelée environment.type ayant pour valeur dev, et si ces mêmes projets avaient un profil production activé par la présence d'une propriété environment.type ayant pour valeur prod, vous pourriez alors passer la valeur appropriée en ligne de commande selon l'environnement cible. Vous pouvez ensuite utiliser cette propriété pour activer les profils définis dans le fichier pom.xml du projet comme nous allons le voir. Regardons comment serait défini dans un fichier pom.xml un profil activé par le fait que la propriété environment.type ait pour valeur dev.

    Exemple 5.6. Profil d'un projet activé quand environment.type vaut 'dev'

    <project>
      ...
      <profiles>
        <profile>
          <id>development</id>
          <activation>
            <activeByDefault>true</activeByDefault>
            <property>
              <name>environment.type</name>
              <value>dev</value>
            </property>
          </activation>
          <properties>
            <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
            <database.url>
              jdbc:mysql://localhost:3306/app_dev
            </database.url>
            <database.user>development_user</database.user>
            <database.password>development_password</database.password>
          </properties>
        </profile>
        <profile>
          <id>production</id>
          <activation>
            <property>
              <name>environment.type</name>
              <value>prod</value>
            </property>
          </activation>
          <properties>
            <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
            <database.url>jdbc:mysql://master01:3306,slave01:3306/app_prod</database.url>
            <database.user>prod_user</database.user>
          </properties>
        </profile>
      </profiles>
    </project>
    


    Ce projet définit de nouvelles propriétés comme database.url et database.user qui pourraient être utilisées pour configurer un plugin Maven ailleurs dans le fichier pom.xml. Il existe de nombreux plugins qui peuvent manipuler une base de données, exécuter du SQL, ou comme le plugin Maven Hibernate3, peuvent générer un ensemble d'objets annotés utilisés par les frameworks de persistance. Certains de ces plugins peuvent être configurés dans un fichier pom.xml grâce à ces propriétés. Ces propriétés peuvent aussi être utilisées pour filtrer des ressources. Dans cet exemple, comme nous avons défini un profil dans le fichier ~/.m2/settings.xml qui spécifie la valeur dev pour environment.type, le profil de développement sera toujours actif à chaque exécution de Maven sur cette machine. Par contre, si nous voulions modifier ce comportement par défaut, nous pourrions préciser la valeur de cette propriété en ligne de commande. Si nous avons besoin d'activer le profil de production, nous pourrions exécuter Maven avec la commande :

    ~/examples/profiles $ mvn install -Denvironment.type=prod

    Comme le profil de développement est activé par défaut et puisqu'il n'y a aucun autre profil activé, l'exécution de la commande mvn help:active-profiles indiquera que le profil de développement est actif. Attention, l'option activeByDefault ne fonctionnera que si aucun autre profil n'est activé. Si vous voulez être sûr que le profil de développement sera actif pour un build donné vous pouvez passer explicitement la variable environment.type de la manière suivante :

    ~/examples/profiles $ mvn install -Denvironment.type=dev

    De même, si nous devons activer le profil de production, nous pouvons exécuter Maven ainsi :

    ~/examples/profiles $ mvn install -Denvironment.type=prod

    Pour connaitre l'ensemble des profils activés pour un build donné, utilisez la commande : mvn help:active-profiles.