Menggunakan Aplikasi Spring Boot sebagai Dependensi

1. Ikhtisar

Dalam tutorial ini, kita akan melihat bagaimana menggunakan aplikasi Spring Boot sebagai dependensi dari proyek lain.

2. Kemasan Spring Boot

Plugin Spring Boot Maven dan Gradle mengemas aplikasi kita sebagai JAR yang dapat dieksekusi - file seperti itu tidak dapat digunakan dalam proyek lain karena file kelas dimasukkan ke dalam BOOT-INF / kelas . Ini bukan bug, tapi fitur.

Untuk berbagi kelas dengan proyek lain, pendekatan terbaik yang dapat dilakukan adalah membuat jar terpisah yang berisi kelas bersama , kemudian menjadikannya sebagai ketergantungan semua modul yang bergantung padanya.

Tetapi jika itu tidak memungkinkan, kita dapat mengonfigurasi plugin untuk menghasilkan jar terpisah yang dapat digunakan sebagai dependensi.

2.1. Konfigurasi Maven

Mari konfigurasikan plugin dengan pengklasifikasi:

...  ...  ...  org.springframework.boot spring-boot-maven-plugin  exec     

Padahal, konfigurasi untuk Spring Boot 1.x akan sedikit berbeda:

...  org.springframework.boot spring-boot-maven-plugin    repackage   exec    

Ini akan membuat dua botol, satu dengan akhiran exec sebagai botol yang dapat dieksekusi, dan satu lagi sebagai botol yang lebih umum yang bisa kita sertakan dalam proyek lain .

3. Kemasan dengan Plugin Majelis Maven

Kami juga dapat menggunakan maven-assembly-plugin untuk membuat jar dependen:

 org.apache.maven.plugins maven-assembly-plugin   jar-with-dependencies     make-assembly package  single    

Jika kita menggunakan plugin ini bersama dengan pengklasifikasi exec di spring-boot-maven-plugin, ini akan menghasilkan tiga botol. Dua yang pertama akan sama seperti yang kita lihat sebelumnya.

Yang ketiga akan memiliki sufiks apa pun yang kami tentukan di tag dan akan berisi semua dependensi transitif proyek. Jika kami memasukkannya ke dalam proyek lain, kami tidak perlu menyertakan dependensi Spring secara terpisah.

4. Kesimpulan

Dalam artikel ini, kami menunjukkan beberapa pendekatan untuk mengemas aplikasi Spring Boot untuk digunakan sebagai dependensi dalam project Maven lainnya.

Seperti biasa, kode yang mendukung artikel tersedia di GitHub.