web-dev-qa-db-fra.com

Utilisation des propriétés Maven dans application.properties dans Spring Boot

J'essaie de charger les propriétés de pom.xml dans application.properties. Je veux créer deux profils: dev et prod pour utiliser différentes URL de base de données. J'utilise Jenkins en tant que CI. Toutes mes applications (principalement Spring MVC, sans projet Boot) utilisent des profils Maven pour se déployer sur Tomcat. Il y a aucune possibilité de faire cela en utilisant des propriétés maven? J'ai essayé quelque chose comme ça: spring.datasource.url=${jdbc.url}

17
Jakub Pomykała

Avant de le faire, pensez à externaliser le fichier de propriétés à partir de votre package déployable. De cette façon, vous pouvez déployer la même compilation sur chaque environnement. Cela épargnera à votre Jenkins des travaux inutiles. La meilleure pratique consiste à créer votre application une seule fois. Toutefois, si vous n’êtes pas convaincu, voici comment procéder.

  1. Dans votre pom.xml, définissez les profils avec les valeurs appropriées pour la propriété.

    <profile>
        <id>dev</id>
       <properties>
           <jdbc.url>your_dev_URL</jdbc.url>
       </properties>
    </profile>
    
  2. Configurez le Maven Resources Plugin pour filtrer le répertoire qui contient votre fichier application.properties.

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
    
  3. Si vous utilisez Spring Boot version 1.3 ou supérieure, sachez que pour éviter les conflits entre les espaces réservés Spring Boot et les jetons filtrés par le plug-in Maven Resources, le framework introduit une solution nécessitant l'utilisation d'une syntaxe différente pour filtré valeurs.

    Maintenant, au lieu de ${property.key}, vous devriez utiliser @property.key@. Dans ce cas, votre application.properties doit contenir l'exemple suivant pour fonctionner comme prévu:

    [email protected]@
    

Vous pouvez également consulter un article sur la séparation des fichiers de propriétés Spring pour différents profils Maven . De cette façon, vous externaliserez les valeurs de votre pom.xml.

43
Daniel Olszewski

Bien sûr il y a. Utilisez simplement Maven Filtering sur votre fichier application.properties et Maven écrira les valeurs de votre profil dans le fichier.

Cependant, vous devez comprendre que si les profils Maven fonctionnent au moment de la compilation/de la compilation de l'application, ceux de Spring Boot le sont au moment de l'exécution. En d'autres termes, avec les profils Maven, vous obtiendrez des versions immuables spécifiques à chaque profil, tandis que lorsque vous utiliserez ceux de Spring Boot, vous pourrez modifier la configuration de votre application avant de la lancer ou même pendant son exécution .

Voir également:

1
Xtreme Biker