J'ai 5 environnements:
- local (my development machine)
- dev
- qc
- uat
- live
- staging
Je souhaite que différentes propriétés d'application soient utilisées pour chaque environnement, j'ai donc les fichiers de propriétés suivants, chacun ayant une URL différente pour la source de données:
- application.properties (containing common properties)
- application-local.properties
- application-dev.properties
- application-qc.properties
- application-uat.properties
- application-live.properties
J'utilise IntelliJ et j'exécute mon application en utilisant bootRun dans le plugin Gradle sur ma machine locale. J'utiliserai le déploiement du même fichier war d'application sur tous les autres environnements qui exécutent Tomcat.
J'ai essayé d'ajouter:
--spring.profiles.active = local
à la configuration d'exécution sous les paramètres de script.
J'ai essayé d'ajouter
-Dspring.profiles.active = local
à la configuration d'exécution sous les options de VM.
Aucun travail. Je continue de voir le message INFO au démarrage dire: Aucun profil actif défini, retour aux profils par défaut: par défaut
Si j'exécute mon application à partir de la ligne de commande Windows en utilisant
gradle bootRun
mais j'ai d'abord défini la variable d'environnement
set SPRING_PROFILES_ACTIVE=local
Ensuite, tout fonctionne.
Ma question est donc la suivante: comment activer mon profil Spring Boot local lors de l'exécution de bootRun depuis IntelliJ?
la source
Réponses:
J'ai ajouté
-Dspring.profiles.active=test
à VM Options, puis relancé cette configuration. Cela a parfaitement fonctionné.Cela peut être défini par
Run | Edit Configurations...
Configuration
ongletEnvironment
section pour révélerVM options
la source
Si vous utilisez réellement des configurations d'exécution de démarrage à ressort (actuellement uniquement prises en charge dans l'édition Ultimate), il est facile de préconfigurer les profils dans le paramètre «Profils actifs».
la source
args
dans votreApplication.main()
exSpringApplication.run( Application.class, args );
Essayez d'ajouter cette commande dans votre build.gradle
Donc, pour exécuter, configurez cette forme:
la source
Spring Boot semble avoir changé la façon de lire les options de la VM au fur et à mesure de son évolution. Voici un moyen d'essayer lorsque vous lancez une application dans Intellij et que vous souhaitez activer un profil:
1. Modifier les options de la VM
Ouvrez «Modifier la configuration» dans «Exécuter», et dans «Options VM», ajoutez:
-Dspring.profiles.active=local
Cela fonctionne en fait avec un de mes projets avec
Spring Boot v2.0.3.RELEASE
etSpring v5.0.7.RELEASE
, mais pas avec un autre projet avecSpring Boot v2.1.1.RELEASE
etSpring v5.1.3.RELEASE
.De plus, lors de l'exécution avec Maven ou JAR, les gens ont mentionné ceci:
ou
(Voir ici: comment utiliser les profils Spring Boot )
2. Transmission des arguments JVM
Il est mentionné quelque part, que Spring change la façon de lancer le processus des applications si vous spécifiez certaines options JVM; il crée un autre processus et ne transmettra pas l'argument qu'il a reçu, donc cela ne fonctionne pas. La seule façon de lui passer des arguments est:
Encore une fois, c'est pour Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. Réglage (application) env var
Ce qui fonctionne pour moi pour le deuxième projet, c'est de définir la variable d'environnement, comme mentionné dans une réponse ci-dessus: "Modifier la configuration" - "Variable d'environnement", et:
la source
SPRING_PROFILES_ACTIVE
.~/.profile
ou similaire, vous devez utiliserSPRING_PROFILES_ACTIVE
-spring.profiles.active
ne fonctionne probablement que comme argument sur la ligne de commande.J'ai fini par ajouter ce qui suit à mon build.gradle:
Alors maintenant, lors de l'exécution de bootRun à partir d'IntelliJ, il utilise par défaut le profil "local".
Sur nos autres environnements, nous allons simplement définir la variable d'environnement 'SPRING_PROFILES_ACTIVE' dans Tomcat.
Je l'ai obtenu à partir d'un commentaire trouvé ici: https://github.com/spring-projects/spring-boot/pull/592
la source
Une cause probable peut être que vous ne transmettez pas les paramètres de ligne de commande à la méthode principale des applications. J'ai fait la même erreur il y a quelques semaines.
la source
Application
classe, alors je l' ai fait à la main à partir de la mémoire.args
J'ai manqué l' étape, et donc la boîte "Profils actifs" dans la configuration d'exécution n'a pas fonctionné - j'ai dû passer manuellement-Dspring.profiles.active
dans la boîte d'options VM.J'utilise Intellij Community Edition. Allez dans "Configurations Exécuter / Déboguer"> onglet Runner> Variables d'environnement> cliquez sur le bouton "...". Ajouter: SPRING_PROFILES_ACTIVE = local
spring.profiles.active
la source
Pour Spring Boot 2.1.0 et versions ultérieures, vous pouvez utiliser
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
la source
spring-boot:run -Dspring-boot.run.profiles=local
Dans mon cas, j'ai utilisé la configuration ci-dessous dans les options de la VM dans
IntelliJ
, il ne sélectionnait pas les configurations locales, mais après un redémarrage,IntelliJ
il a choisi les détails de configurationIntelliJ
et le service a commencé à fonctionner.la source
Essaye ça. Modifiez votre fichier build.gradle comme suit.
la source
Vous pouvez essayer la méthode ci-dessus pour activer un profil
la source
Défini
-Dspring.profiles.active=local
sous les arguments du programme.la source