In meiner Anwendung habe ich Bohnen mit @Profile("prod")
und kommentiert @Profile("demo")
. Die erste wird, wie Sie sich vorstellen können :), für Beans verwendet, die eine Verbindung zur Produktions-DB herstellen, und die zweite kommentiert Beans, die eine gefälschte DB ( HashMap
oder was auch immer) verwenden, um die Entwicklung zu beschleunigen.
Was ich haben möchte, ist das Standardprofil ( "prod"
), das immer verwendet wird, wenn es nicht von " etwas anderem " überschrieben wird .
Perfekt wäre in meinem web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
und überschreibe dies dann mit, -Dspring.profiles.active="demo"
damit ich tun kann:
mvn jetty:run -Dspring.profiles.active="demo".
Aber leider funktioniert das nicht. Irgendeine Idee, wie ich das erreichen könnte? Das Einstellen -Dspring.profiles.active="prod"
in allen meinen Umgebungen ist keine Option.
Definieren Sie Ihre Produktionsumgebung als Standardprofil in Ihrer web.xml
und wenn Sie ein anderes Profil verwenden möchten, übergeben Sie es als Systemeigenschaft
quelle
spring.profiles.default=prod
inapplication.properties
, dannapplication-prod.properties
wird nicht geladen werden. Dies ist nicht intuitiv.application.properties
Datei fest. Um zu wissen, dassapplication-prod.properties
dies verwendet werden soll, müssen Sie das Profil kennen. Genau das macht dieser Ansatz. Es definiert Profile außerhalb des Federkontexts entweder alsweb.xml
(Standard) oder über die Umgebungsvariable (überschreibt den Standard).application-default.properties
ich geladen werde, erwarte ich auch, dassapplication-newdefault.properties
das auch geladen wird. Es ist kein Problem mit Ihrer Lösung, es ist ein Problem mit Spring ...Ich habe das gleiche Problem, verwende jedoch WebApplicationInitializer, um den ServletContext programmgesteuert zu konfigurieren (Servlet 3.0+). Also mache ich folgendes:
quelle
Sie können auch das PROD-Profil entfernen und @Profile ("! Demo") verwenden.
quelle
Informationen zum Festlegen des bereits veröffentlichten Standardproduktionsprofils @andih
Der einfachste Weg, das Standardprofil für das Maven Jetty Plugin festzulegen, besteht darin, das folgende Element in Ihre Plugin-Konfiguration aufzunehmen:
quelle
Spring bietet zwei separate Eigenschaften, wenn Sie bestimmen, welche Profile aktiv sind:
spring.profiles.active
und
spring.profiles.default
Wenn
spring.profiles.active
gesetzt, bestimmt sein Wert, welche Profile aktiv sind. Aber wennspring.profiles.active
nicht eingestellt, dann sieht Spring nachspring.profiles.default.
Wenn weder
spring.profiles.active
noch festgelegtspring.profiles.default
ist, gibt es keine aktiven Profile, und es werden nur die Beans erstellt, die nicht als in einem Profil definiert definiert sind. Jede Bean, die kein Profil angibt, gehört zumdefault
Profil.quelle
Sie können Ihre web.xml als gefilterte Ressource einrichten und diesen Wert von maven aus den Maven-Profileinstellungen ausfüllen lassen - genau das tun wir.
im POM-Filter alle Ressourcen (Sie können dies tun, wenn Sie keine $ {} -Markierung haben)
in web.xml setzen
In Pom erstellen Sie Maven-Profile
Jetzt können Sie verwenden
oder einfach
-P DEMO
mit einem beliebigen Maven-Befehlquelle