Saya memiliki 5 lingkungan:
- local (my development machine)
- dev
- qc
- uat
- live
- staging
Saya ingin properti aplikasi yang berbeda digunakan untuk masing-masing lingkungan, jadi saya memiliki file properti berikut yang masing-masing memiliki URL berbeda untuk sumber data:
- application.properties (containing common properties)
- application-local.properties
- application-dev.properties
- application-qc.properties
- application-uat.properties
- application-live.properties
Saya menggunakan IntelliJ dan menjalankan aplikasi saya menggunakan bootRun di plugin Gradle di mesin lokal saya. Saya akan menggunakan menyebarkan file perang aplikasi yang sama di semua lingkungan lain yang menjalankan Tomcat.
Saya sudah mencoba menambahkan:
--spring.profiles.active = lokal
untuk menjalankan konfigurasi di bawah parameter skrip.
Saya sudah mencoba menambahkan
-Dspring.profiles.active = lokal
untuk menjalankan konfigurasi di bawah opsi VM.
Tidak bekerja Saya terus melihat pesan INFO pada saat startup mengatakan: Tidak ada profil aktif yang diatur, kembali ke profil default: default
Jika saya menjalankan aplikasi saya dari baris perintah windows menggunakan
gradle bootRun
tapi saya pertama-tama mengatur variabel lingkungan
set SPRING_PROFILES_ACTIVE=local
Lalu semuanya bekerja.
Jadi pertanyaan saya adalah, bagaimana cara mengaktifkan profil booting semi lokal saya saat menjalankan bootRun dari IntelliJ?
sumber
Jawaban:
Saya menambahkan
-Dspring.profiles.active=test
ke Opsi VM dan kemudian menjalankan kembali konfigurasi itu. Itu bekerja dengan sempurna.Ini dapat diatur oleh
Run | Edit Configurations...
Configuration
tabEnvironment
bagian untuk mengungkapkanVM options
sumber
Jika Anda benar-benar menggunakan konfigurasi spring boot run (saat ini hanya didukung di Ultimate Edition), mudah untuk melakukan pra-konfigurasi profil di pengaturan "Profil Aktif".
sumber
args
AndaApplication.main()
SpringApplication.run( Application.class, args );
Coba tambahkan perintah ini di build.gradle Anda
Jadi untuk menjalankan konfigurasi bentuk itu:
sumber
Spring Boot tampaknya telah mengubah cara membaca opsi VM saat berevolusi. Berikut ini beberapa cara untuk dicoba ketika Anda meluncurkan aplikasi di Intellij dan ingin mengaktifkan beberapa profil:
1. Ubah opsi VM
Buka "Edit konfigurasi" di "Jalankan", dan di "opsi VM", tambahkan:
-Dspring.profiles.active=local
Ini sebenarnya bekerja dengan satu proyek saya dengan
Spring Boot v2.0.3.RELEASE
danSpring v5.0.7.RELEASE
, tetapi tidak dengan proyek lain denganSpring Boot v2.1.1.RELEASE
danSpring v5.1.3.RELEASE
.Juga, ketika berlari dengan Maven atau JAR, orang-orang menyebutkan ini:
atau
(Lihat di sini: cara menggunakan profil Spring Boot )
2. Melewati argumentasi JVM
Disebutkan di suatu tempat, bahwa Spring mengubah cara meluncurkan proses aplikasi jika Anda menentukan beberapa opsi JVM; itu fork proses lain dan tidak akan melewati arg yang diterima sehingga ini tidak berfungsi. Satu-satunya cara untuk memberikan argumen kepadanya, adalah:
Sekali lagi, ini untuk Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. Pengaturan (aplikasi) env var
Apa yang berhasil bagi saya untuk proyek kedua, adalah mengatur variabel lingkungan, seperti yang disebutkan dalam beberapa jawaban di atas: "Edit konfigurasi" - "Variabel lingkungan", dan:
sumber
SPRING_PROFILES_ACTIVE
.~/.profile
atau serupa, Anda harus menggunakanSPRING_PROFILES_ACTIVE
-spring.profiles.active
sepertinya hanya berfungsi sebagai argumen di baris perintah.Saya akhirnya menambahkan yang berikut ini ke build.gradle saya:
Jadi sekarang ketika menjalankan bootRun dari IntelliJ, defaultnya adalah profil "lokal".
Di lingkungan kami yang lain, kami hanya akan mengatur variabel lingkungan 'SPRING_PROFILES_ACTIVE' di Tomcat.
Saya mendapatkan ini dari komentar yang ditemukan di sini: https://github.com/spring-projects/spring-boot/pull/592
sumber
Kemungkinan penyebabnya adalah Anda tidak mengirimkan parameter baris perintah ke metode utama aplikasi. Saya melakukan kesalahan yang sama beberapa minggu yang lalu.
sumber
Application
kelas saya begitu juga dengan tangan dari memori. Ketinggalanargs
langkahnya, dan kotak "Profil Aktif" di konfigurasi run tidak berfungsi - saya harus masuk secara manual di-Dspring.profiles.active
kotak opsi VM.Saya menggunakan Intellij Community Edition. Buka "Run / Debug Configurations"> tab Runner> Variabel lingkungan> klik tombol "...". Tambahkan: SPRING_PROFILES_ACTIVE = lokal
spring.profiles.active
sumber
Untuk Spring Boot 2.1.0 dan yang lebih baru dapat Anda gunakan
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
sumber
spring-boot:run -Dspring-boot.run.profiles=local
Dalam kasus saya, saya menggunakan konfigurasi di bawah ini pada opsi VM di
IntelliJ
, itu tidak memilih konfigurasi lokal tetapi setelah restartIntelliJ
itu mengambil rincian konfigurasi dariIntelliJ
dan layanan mulai berjalan.sumber
Coba ini. Edit file build.gradle Anda seperti yang diikuti.
sumber
Anda dapat mencoba cara di atas untuk mengaktifkan profil
sumber
Set di
-Dspring.profiles.active=local
bawah argumen program.sumber