Tambahkan Build Properties ke Aplikasi Spring Boot

1. Perkenalan

Biasanya, konfigurasi build proyek kita berisi cukup banyak informasi tentang aplikasi kita. Beberapa dari informasi ini mungkin diperlukan dalam aplikasi itu sendiri. Jadi, daripada membuat kode keras informasi ini, kita dapat menggunakannya dari konfigurasi build yang ada.

Di artikel ini, kita akan melihat cara menggunakan informasi dari konfigurasi build proyek di aplikasi Spring Boot.

2. Informasi Bangun

Katakanlah kita ingin menampilkan deskripsi dan versi aplikasi di halaman muka situs kita.

Biasanya, informasi ini ada di pom.xml :

 4.0.0 spring-boot spring-boot war This is simple boot application for Spring boot actuator test 0.0.1-SNAPSHOT ... 

3. Mereferensikan Informasi dalam File Properti Aplikasi

Sekarang, untuk menggunakan informasi di atas dalam aplikasi kita, pertama-tama kita harus mereferensikannya di salah satu file properti aplikasi kita:

[email protected]@ [email protected]@

Di sini, kita telah menggunakan nilai dari build property project.description untuk menyetel deskripsi-aplikasi properti aplikasi . Demikian pula, versi-aplikasi disetel menggunakan project.version .

Bagian yang paling penting di sini adalah penggunaan karakter @ di sekitar nama properti. Ini memberitahu Spring untuk memperluas properti bernama dari proyek Maven.

Sekarang, ketika kita membangun proyek kita, properti ini akan diganti dengan nilainya dari pom.xml .

Perluasan ini juga disebut sebagai pemfilteran sumber daya. Perlu dicatat bahwa jenis pemfilteran ini hanya diterapkan pada konfigurasi produksi . Akibatnya, kami tidak dapat menggunakan properti build dalam file di bawah src / test / resources .

Hal lain yang perlu diperhatikan adalah jika kita menggunakan flag addResources , tujuan spring-boot: run menambahkan src / main / resources langsung ke classpath. Meskipun berguna untuk tujuan hot reload, ini menghindari pemfilteran resource dan, akibatnya, fitur ini juga.

Sekarang, perluasan properti di atas bekerja di luar kotak hanya jika kita menggunakan spring-boot-starter-parent .

3.1. Memperluas Properti Tanpa pegas-boot-starter-induk

Mari kita lihat bagaimana kita dapat mengaktifkan fitur ini tanpa menggunakan dependensi spring-boot-starter-parent .

Pertama, kita harus mengaktifkan pemfilteran sumber daya di dalam file elemen di pom.xml kami :

  src/main/resources true  

Di sini, kami telah mengaktifkan pemfilteran sumber daya di bawah src / main / resources saja.

Kemudian, kita dapat menambahkan konfigurasi pembatas untuk maven-resources-plugin :

 org.apache.maven.plugins maven-resources-plugin   @  false  

Perhatikan bahwa kami telah menetapkan properti useDefaultDelimiters sebagai salah . Ini memastikan bahwa placeholder Spring standar seperti $ {placeholder} tidak diperluas oleh build.

4. Menggunakan Informasi Build dalam File YAML

Jika kita menggunakan YAML untuk menyimpan properti aplikasi, kita mungkin tidak dapat menggunakan @ untuk menentukan properti build . Ini karena @ adalah karakter yang dipesan di YAML.

Tapi, kita bisa mengatasinya dengan mengkonfigurasi pembatas yang berbeda di maven-resources-plugin :

 org.apache.maven.plugins maven-resources-plugin   ^  false  

Atau, cukup dengan mengganti properti resource.delimiter di blok properti pom.xml kami :

 ^ 

Kemudian, kita dapat menggunakan ^ di file YAML kita:

application-description: ^project.description^ application-version: ^project.version^

5. Kesimpulan

Di artikel ini, kami melihat bagaimana kami dapat menggunakan informasi proyek Maven dalam aplikasi kami. Ini dapat membantu kita menghindari hardcode informasi yang sudah ada dalam konfigurasi build proyek di file properti aplikasi kita.

Dan tentu saja, kode yang menyertai tutorial ini dapat ditemukan di GitHub.