Saya mencoba mengatur profil aktif di aplikasi Spring Boot menggunakan Maven 3.
Dalam pom.xml saya, saya mengatur default active profile dan properti spring.profiles.active ke development:
<profiles>
<profile>
<id>development</id>
<properties>
<spring.profiles.active>development</spring.profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
tetapi setiap kali saya menjalankan aplikasi saya, saya menerima pesan berikut di log:
No active profile set, falling back to default profiles: default
dan profil SpringBoot diatur ke default (membaca application.properties, bukan application-development.properties); Apa lagi yang harus saya lakukan agar profil aktif SpringBoot saya diatur menggunakan profil Maven? Setiap bantuan sangat dihargai.
Profil Maven dan profil Spring adalah dua hal yang sangat berbeda. Pom.xml Anda mendefinisikan variabel spring.profiles.active
yang tersedia dalam proses build, tetapi tidak pada saat runtime. Itulah sebabnya hanya profil default yang diaktifkan.
Bagaimana cara mengikat profil Maven dengan Spring?
Anda perlu meneruskan variabel build ke aplikasi Anda sehingga tersedia saat aplikasi dimulai.
Tentukan placeholder di application.properties
Anda:
[email protected]@
Variabel @spring.profiles.active@
harus sesuai dengan properti yang dideklarasikan dari profil Maven.
Aktifkan pemfilteran sumber daya di pom.xml Anda:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</sumber daya>
</resources>
...
</build>
Ketika build dieksekusi, semua file di direktori src/main/resources
akan diproses oleh Maven dan placeholder di application.properties
akan diganti dengan variabel yang Anda definisikan di profil Maven Anda.
Untuk lebih jelasnya Anda dapat pergi ke posting saya di mana saya menjelaskan kasus penggunaan ini.
Anda dapat menjalankan menggunakan perintah berikut. Disini saya ingin menjalankan menggunakan spring profile local
:
spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=local"
Anda harus menggunakan Spring Boot Maven Plugin:
<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>