J'ai une application de démarrage de printemps.
J'ai trois profils dans mon application-> développement, mise en scène et production. Donc j'ai 3 fichiers
Mon application.yml réside dans src/main/resources
. J'ai défini le profil actif dans application.yml comme suit:
spring:
profiles.active: development
Les 3 autres fichiers de configuration spécifiques au profil sont présents dans le dossier C:\config
.
J'utilise le plugin Gradle pour Eclipse. Lorsque j'essaie de faire un "bootRun", je configure les arguments de ligne de commande dans la configuration de gradle dans Eclipse en tant que
-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é dans les fichiers de configuration spécifiques à un profil.
Je pense que je manque quelque chose ici. J'essaie de comprendre cela depuis 2 jours. Mais pas de chance. J'apprécierais vraiment toute aide.
Je devais ajouter ceci:
bootRun {
String activeProfile = System.properties['spring.profiles.active']
String confLoc = System.properties['spring.config.location']
systemProperty "spring.profiles.active", activeProfile
systemProperty "spring.config.location", "file:$confLoc"
}
Et maintenant, bootRun récupère les emplacements de profil et de configuration.
Merci beaucoup @jst pour le pointeur.
Vous pouvez ajouter/remplacer des propriétés de ressort de deux manières différentes en ligne de commande.
Il est important que les paramètres -D soient avant votre application.jar sinon ils ne sont pas reconnus.
Java -jar -Dspring.profiles.active=prod application.jar
Java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
n'est pas correcte.
devrait être:
--spring.profiles.active=staging --spring.config.location=C:\Config
vous pouvez utiliser la ligne de commande suivante:
Java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar
Il existe un autre moyen de définir la variable OS, SPRING_PROFILES_ACTIVE .
pour par exemple:
SPRING_PROFILES_ACTIVE=dev gradle clean bootRun
Lors de la configuration du profil via le plugin Maven, vous devez le faire via run.jvmArguments
mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"
Avec l'option de débogage:
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"
J'ai vu ce voyage beaucoup de gens jusqu'à .. espérons que cela aide
Ma meilleure pratique consiste à définir cela comme un argument VM "-D". Veuillez noter les différences entre les bottes à ressort 1.x et 2.x.
Les profils à activer peuvent être spécifiés sur la ligne de commande:
Spring-Boot 2.x
-Dspring-boot.run.profiles=local
Spring-Boot 1.x
-Dspring.profiles.active=local
exemple d'utilisation avec maven:
Spring-Boot 2.x
mvn spring-boot:run -Dspring-boot.run.profiles=local
Spring-Boot 1.x
mvn spring-boot:run -Dspring.profiles.active=local
Assurez-vous de les séparer par une virgule pour plusieurs profils:
mvn spring-boot:run -Dspring.profiles.active=local,foo,bar
mvn spring-boot:run -Dspring-boot.run.profiles=local,foo,bar
Je pense que votre problème est probablement lié au fait que votre spring.config.location ne termine pas le chemin avec "/".
Citer les docs
Si spring.config.location contient des répertoires (par opposition à des fichiers), ceux-ci doivent se terminer par/(et seront ajoutés aux noms générés à partir de spring.config.name avant d'être chargés).
La réponse de Michael Yin est correcte mais une meilleure explication semble être requise!
Beaucoup d'entre vous ont mentionné que -D
est la manière correcte de spécifier les paramètres de la machine virtuelle Java et vous avez absolument raison. Mais Michael a également raison, comme mentionné dans la documentation Spring Boot Profiles .
La nature de ce paramètre n’est pas claire: --spring.profiles.active
n’est pas un paramètre JVM standard, donc si vous souhaitez l’utiliser dans votre IDE remplissez les champs appropriés (c.-à-d. arguments du programme)