J'ai une application de démarrage à ressort.
J'ai trois profils dans mon application -> développement, mise en scène et production . Donc j'ai 3 fichiers
- application-development.yml
- application-staging.yml
- application-production.yml
Mon application.yml réside à l'intérieur src/main/resources
. J'ai défini le profil actif dans application.yml comme:
spring:
profiles.active: development
Les 3 autres fichiers de configuration spécifiques au profil sont présents dans le C:\config
dossier.
J'utilise le plugin gradle pour eclipse. Lorsque j'essaye de faire un " bootRun ", je règle les arguments de ligne de commande dans ma configuration gradle dans eclipse comme
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Cependant, la propriété de ligne de commande n'est pas reflétée et mon profil actif est toujours défini comme développement (qui est celui que j'ai mentionné dans le fichier applications.yml). De plus, le dossier C: \ Config n'est pas recherché pour les fichiers de configuration spécifiques au profil.
Je pense qu'il me manque quelque chose ici. J'essaye de le comprendre depuis 2 jours. Mais pas de chance. J'apprécierais vraiment n'importe quelle aide.
bootRun
ligne de commande aussiRéponses:
Il existe deux façons différentes d'ajouter / remplacer les propriétés du ressort sur la ligne de commande.
Option 1: Propriétés système Java (arguments VM)
Il est important que les paramètres -D soient avant votre application.jar sinon ils ne sont pas reconnus.
Option 2: arguments du programme
java -jar application.jar --spring.profiles.active = prod --spring.config.location = c: \ configla source
SPRING_PROFILES_ACTIVE
exportée via~/.bash_profile
.export SPRING_PROFILES_ACTIVE=e2e
java -Dspring.profiles.active=$ENV -Dspring.config.location=file:///aws-secrets-manager/properties/application-$ENV.properties /code/app.jar
Ma meilleure pratique consiste à définir cela comme un argument VM "-D". Veuillez noter les différences entre la botte à ressort 1.x et 2.x.
Les profils à activer peuvent être spécifiés sur la ligne de commande:
Spring-Boot 2.x
Spring-Boot 1.x
exemple d'utilisation avec maven:
Spring-Boot 2.x
Spring-Boot 1.x
Assurez-vous de les séparer par une virgule pour plusieurs profils:
la source
-Dspring-boot.run.profiles=local
n'a pas fonctionné, a-Dspring.profiles.active=local
fonctionné.-Dspring-boot.run.profiles
et-Dspring.profiles.active
J'ai dû ajouter ceci:
Et maintenant, bootRun récupère le profil et les emplacements de configuration.
Merci beaucoup @jst pour le pointeur.
la source
bootRun { systemProperties = System.properties }
. Cette commande copiera tous les paramètres passés avec le-D
commutateur avec les mêmes clés àsystemProperty
mapper.n'est pas correcte.
devrait être:
la source
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
OUjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
vous pouvez utiliser la ligne de commande suivante:
la source
Il existe un autre moyen en définissant la variable OS , SPRING_PROFILES_ACTIVE .
par exemple:
Référence: Comment définir les profils Spring actifs
la source
Lors de la configuration du profil via le plugin Maven, vous devez le faire via
run.jvmArguments
Avec l'option de débogage:
J'ai vu beaucoup de gens monter ce voyage ... j'espère que ça aide
la source
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
, voir: docs.spring.io/spring-boot/docs/current/maven-plugin/examples/…springmvn="mvn clean spring-boot:run -Dspring.profiles.active=local -Dspring-boot.run.profiles=local"
Je pense que votre problème est probablement lié au fait que votre spring.config.location ne termine pas le chemin par "/".
Citer les documents
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
la source
La réponse de Michael Yin est correcte mais une meilleure explication semble s'imposer!
Beaucoup d'entre vous ont mentionné que
-D
c'était la bonne façon de spécifier les paramètres JVM et vous avez absolument raison. Mais Michael a également raison, comme mentionné dans la documentation de Spring Boot Profiles .Ce qui n'est pas clair dans la documentation, c'est de quel type de paramètre il s'agit: ce
--spring.profiles.active
n'est pas un paramètre JVM standard donc si vous voulez l'utiliser dans votre IDE remplissez les champs corrects (c'est-à-dire les arguments du programme)la source
Si vous utilisez Gradle:
la source