mika-el
4/17/2018 - 11:22 AM

Profiles

Les profils permettent de créer des options dans le build Maven.

Vous pouvez par exemple envisager deux environnements cibles (un de test, un de production) et embarquer, dans le JAR généré, des fichiers de configurations différents en fonction de la cible. Pour cela, pas besoin de mettre à la main les bons fichiers dans le répeertoire src/main/resources avant le build. Il suffit de créer deux profils (test et prod), chacun définissant un répertoire de fichiers ressources différent :

<project>
    ...
    <!-- =============================================================== -->
    <!-- Profils -->
    <!-- =============================================================== -->
    <profiles>
        <!-- Profil pour l'environnement de test -->
        <profile>
            <id>test</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources/conf-test</directory>
                    </resource>
                </resources>
            </build>
        </profile>
        <!-- Profil pour l'environnement de production -->
        <profile>
            <id>prod</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources/conf-prod</directory>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>
    ...
</project>

Il ne vous reste plus qu'à mettre les fichiers de configuration de test et de production dans leur répertoire ressource respectif et d'activer le bon profil lors du lancement du build Maven grâce à l'option -P :

# Pour construire un livrable pour l'environnement de test :
mvn package -P test

# Pour construire un livrable pour l'environnement de production :
mvn package -P prod

Activation automatique des profils

Les profils peuvent également être activés automatiquement en fonction de certains critères définis dans la sous-balise : Vous pouvez activater des profils en fonction du système d'exploitation, de l'architecture, de la présence d'un fichier... https://maven.apache.org/guides/introduction/introduction-to-profiles.html

...
<!-- Profil activé automatiquement si la version du JDK est 1.8
     et sous-versions mineures (1.8.0_131 par exemple) -->
<profile>
    <activation>
        <jdk>1.8</jdk>
    </activation>
    ...
</profile>
<!-- Profil activé automatiquement si la propriété système "environnement" vaut "test" -->
<profile>
    <activation>
        <property>
            <name>environnement</name>
            <value>test</value>
        </property>
    </activation>
    ...
</profile>
...

Dans cet exemple, pour activer le deuxième profil, vous pouvez lancer Maven comme ceci :

mvn package -Denvironnement=test