Ich versuche, ein aktives Profil in Spring Boot-Anwendung mit Maven 3 zu setzen; In meiner pom.xml habe ich default active profile und die Eigenschaft spring.profiles.active auf development gesetzt:
<profiles>
<profile>
<id>development</id>
<properties>
<spring.profiles.active>development</spring.profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
aber jedes Mal, wenn ich meine Anwendung ausführe, erhalte ich die folgende Meldung in den Protokollen:
No active profile set, falling back to default profiles: default
und das SpringBoot-Profil ist auf Standard eingestellt (liest application.properties statt application-development.properties)
Was muss ich sonst noch tun, damit mein aktives SpringBoot-Profil mit dem Maven-Profil eingestellt wird?
Jede Hilfe wird sehr geschätzt.
Das Maven-Profil und das Spring-Profil sind zwei völlig verschiedene Dinge. Ihre pom.xml definiert die Variable spring.profiles.active
, die im Build-Prozess verfügbar ist, aber nicht zur Laufzeit. Aus diesem Grund ist nur das Standardprofil aktiviert.
**Wie binde ich ein Maven-Profil mit Spring?
Sie müssen die Build-Variable an Ihre Anwendung übergeben, damit sie beim Starten verfügbar ist.
Definieren Sie einen Platzhalter in Ihrer application.properties
:
[email protected]@
Die Variable @spring.profiles.active@
muss mit der deklarierten Eigenschaft aus dem Maven-Profil übereinstimmen.
Aktivieren Sie die Ressourcenfilterung in Ihrer pom.xml:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
Wenn der Build ausgeführt wird, werden alle Dateien im Verzeichnis src/main/resources
von Maven verarbeitet und der Platzhalter in Ihrer application.properties
wird durch die Variable ersetzt, die Sie in Ihrem Maven Profil definiert haben.
Für weitere Details können Sie zu meinem Beitrag gehen, wo ich diesen Anwendungsfall beschrieben habe.
Sie können mit dem folgenden Befehl ausgeführt werden. Hier möchte ich das Spring-Profil local
verwenden:
spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=local"
Sie sollten das Spring Boot Maven Plugin verwenden:
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.1.RELEASE</version>
<configuration>
<profiles>
<profile>foo</profile>
<profile>bar</profile>
</profiles>
</configuration>
...
</plugin>
...
</plugins>
...
</build>
...
</project>