Saya punya aplikasi boot musim semi.
Saya memiliki tiga profil dalam aplikasi saya - pengembangan, pementasan dan produksi . Jadi saya punya 3 file
- application-development.yml
- application-staging.yml
- application-production.yml
Application.yml saya berada di dalam src/main/resources
. Saya telah menetapkan profil aktif di application.yml sebagai:
spring:
profiles.active: development
3 file konfigurasi khusus profil lainnya ada di C:\config
folder.
Saya menggunakan plugin gradle untuk gerhana. Ketika saya mencoba melakukan " bootRun ", saya mengatur argumen baris perintah dalam konfigurasi gradle saya di gerhana sebagai
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Namun, properti baris perintah tidak tercermin dan profil aktif saya selalu ditetapkan sebagai pengembangan (yang merupakan yang saya sebutkan dalam file application.yml). Juga C: \ Config folder tidak mencari file konfigurasi khusus profil.
Saya pikir saya kehilangan sesuatu di sini. Saya telah mencoba mencari tahu selama 2 hari terakhir. Tapi tidak berhasil. Saya sangat menghargai setiap bantuan.
bootRun
baris perintah Anda jugaJawaban:
Ada dua cara berbeda yang bisa Anda tambahkan / timpa properti pegas di baris perintah.
Opsi 1: Properti Sistem Java (Argumen VM)
Penting bahwa parameter -D ada sebelum aplikasi Anda. Jika tidak, mereka tidak dikenali.
Opsi 2: Argumen program
java -jar application.jar --spring.profiles.active = prod --spring.config.location = c: \ configsumber
SPRING_PROFILES_ACTIVE
diekspor 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
Praktik terbaik saya adalah mendefinisikan ini sebagai argumen VM "-D". Harap perhatikan perbedaan antara spring boot 1.x dan 2.x.
Profil yang akan diaktifkan dapat ditentukan pada baris perintah:
Spring-Boot 2.x
Spring-Boot 1.x
contoh penggunaan dengan pakar:
Spring-Boot 2.x
Spring-Boot 1.x
Pastikan untuk memisahkannya dengan koma untuk beberapa profil:
sumber
-Dspring-boot.run.profiles=local
tidak berhasil,-Dspring.profiles.active=local
berfungsi.-Dspring-boot.run.profiles
dan-Dspring.profiles.active
Saya harus menambahkan ini:
Dan sekarang bootRun mengambil profil dan mengkonfigurasi lokasi.
Terima kasih banyak @jst untuk penunjuknya.
sumber
bootRun { systemProperties = System.properties }
. Perintah ini akan menyalin semua parameter yang diteruskan dengan-D
sakelar dengan tombol yang sama untuksystemProperty
dipetakan.tidak benar.
seharusnya:
sumber
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
ATAUjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
Anda dapat menggunakan baris perintah berikut:
sumber
Ada cara lain dengan mengatur variabel OS , SPRING_PROFILES_ACTIVE .
untuk misalnya:
Referensi: Cara mengatur profil Spring aktif
sumber
Saat mengatur profil melalui plugin Maven, Anda harus melakukannya via
run.jvmArguments
Dengan opsi debug:
Saya telah melihat perjalanan ini banyak orang. Semoga ini membantu
sumber
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
, lihat: 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"
Saya pikir masalah Anda kemungkinan terkait dengan spring.config.location Anda tidak mengakhiri jalan dengan "/".
Kutip dokumen
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
sumber
Jawaban Michael Yin benar tetapi penjelasan yang lebih baik tampaknya diperlukan!
Banyak dari Anda menyebutkan itu
-D
adalah cara yang benar untuk menentukan parameter JVM dan Anda benar sekali. Tetapi Michael juga benar seperti yang disebutkan dalam dokumentasi Spring Boot Profiles .Apa yang tidak jelas dalam dokumentasi, adalah seperti apa parameternya:
--spring.profiles.active
bukan parameter JVM standar jadi jika Anda ingin menggunakannya dalam IDE Anda, isilah bidang yang benar (mis. Argumen program)sumber
Jika Anda menggunakan Gradle:
sumber