1. Ikhtisar
Dalam tutorial ini, kami akan menunjukkan cara memasukkan informasi repositori Git ke dalam aplikasi berbasis Spring Boot buatan Maven.
Untuk melakukan ini, kita akan menggunakan maven-git-commit-id-plugin - alat praktis yang dibuat hanya untuk tujuan ini.
2. Ketergantungan Maven
Mari tambahkan plugin ke file bagian dari file pom.xml kami dari proyek kami:
pl.project13.maven git-commit-id-plugin 2.2.1
Anda dapat menemukan versi terbaru di sini. Perlu diingat bahwa p lugin ini membutuhkan setidaknya versi 3.1.1 Maven.
3. Konfigurasi
Plugin memiliki banyak flag dan atribut yang memudahkan fungsinya. Di bagian ini kami akan menjelaskan secara singkat beberapa di antaranya. Jika Anda ingin mengetahui semuanya, kunjungi halaman maven-git-commit-id-plugin's, dan jika Anda ingin langsung ke contoh, buka bagian 4 .
Cuplikan berikut berisi contoh atribut plugin; tentukan mereka di abagian sesuai dengan kebutuhan Anda.
3.1. Repositori Hilang
Anda dapat mengkonfigurasinya untuk menghilangkan kesalahan jika repositori Git tidak ditemukan:
false
3.2. Lokasi Repositori Git
Jika Anda ingin menentukan lokasi repositori .git khusus , gunakan atribut dotGitDirectory :
${project.basedir}/submodule_directory/.git
3.3. Berkas keluaran
Untuk menghasilkan file properti dengan nama dan / atau direktori kustom, gunakan bagian berikut:
${project.build.outputDirectory}/filename.properties
3.4. Verbositas
Untuk penggunaan logging yang lebih murah hati:
true
3.5. Properti Pembuatan File
Anda dapat menonaktifkan pembuatan file git.properties :
false
3.6. Awalan Properti
Jika Anda ingin menentukan awalan properti khusus, gunakan:
git
3.7. Hanya untuk Repositori Induk
Saat bekerja dengan proyek dengan submodul, menyetel tanda ini memastikan, plugin itu hanya berfungsi untuk repositori induk:
true
3.8. Pengecualian Properti
Anda mungkin ingin mengecualikan beberapa data sensitif seperti info pengguna repositori:
git.user.*
3.9. Properti Inklusi
Menyertakan hanya data tertentu juga dimungkinkan:
git.commit.id
4. Contoh Penerapan
Mari buat contoh pengontrol REST, yang akan mengembalikan informasi dasar tentang proyek kita.
Kami akan membuat aplikasi sampel menggunakan Spring Boot. Jika Anda tidak tahu cara mengatur aplikasi Spring Boot, silakan lihat artikel pengantar: Mengkonfigurasi Aplikasi Web Spring Boot.
Aplikasi kita akan terdiri dari 2 kelas: Application dan CommitIdController
4.1. Aplikasi
CommitIdApplication akan berfungsi sebagai root dari aplikasi kita:
@SpringBootApplication(scanBasePackages = { "com.baeldung.git" }) public class CommitIdApplication { public static void main(String[] args) { SpringApplication.run(CommitIdApplication.class, args); } @Bean public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() { PropertySourcesPlaceholderConfigurer propsConfig = new PropertySourcesPlaceholderConfigurer(); propsConfig.setLocation(new ClassPathResource("git.properties")); propsConfig.setIgnoreResourceNotFound(true); propsConfig.setIgnoreUnresolvablePlaceholders(true); return propsConfig; } }
Selain mengkonfigurasi root aplikasi kami, kami membuat kacang PropertyPlaceHolderConfigurer sehingga kami dapat mengakses file properti yang dihasilkan oleh plugin.
Kami juga menyetel beberapa tanda, sehingga aplikasi akan berjalan dengan lancar meskipun Spring tidak dapat menyelesaikan file git.properties .
4.2. Kontroler
@RestController public class CommitInfoController { @Value("${git.commit.message.short}") private String commitMessage; @Value("${git.branch}") private String branch; @Value("${git.commit.id}") private String commitId; @RequestMapping("/commitId") public Map getCommitId() { Map result = new HashMap(); result.put("Commit message",commitMessage); result.put("Commit branch", branch); result.put("Commit id", commitId); return result; } }
Seperti yang Anda lihat, kami memasukkan properti Git ke dalam bidang kelas.
To see all properties available refer to git.properties file or author's Github page. We also created a simple endpoint which, on HTTP GET request, will respond with a JSON containing injected values.
4.3. Maven Entry
We'll first set up the execution steps to be carried out by the plugin, plus any other configuration property that we consider useful:
pl.project13.maven git-commit-id-plugin 2.2.1 get-the-git-infos revision validate-the-git-infos validateRevision
In order for our code to work properly, we need to end up with a git.properties file in our classpath. To achieve this, we have two options.
The first one is to leave it up to the plugin to generate the file. We can specify this by setting the generateGitPropertiesFile configuration property a true value:
true
The second option is to include a git.properties file in the resources folder ourselves. We can include only the entries that we'll use in our project:
# git.properties git.tags=${git.tags} git.branch=${git.branch} git.dirty=${git.dirty} git.remote.origin.url=${git.remote.origin.url} git.commit.id=${git.commit.id} git.commit.id.abbrev=${git.commit.id.abbrev} git.commit.id.describe=${git.commit.id.describe} git.commit.id.describe-short=${git.commit.id.describe-short} git.commit.user.name=${git.commit.user.name} git.commit.user.email=${git.commit.user.email} git.commit.message.full=${git.commit.message.full} git.commit.message.short=${git.commit.message.short} git.commit.time=${git.commit.time} git.closest.tag.name=${git.closest.tag.name} git.closest.tag.commit.count=${git.closest.tag.commit.count} git.build.user.name=${git.build.user.name} git.build.user.email=${git.build.user.email} git.build.time=${git.build.time} git.build.host=${git.build.host} git.build.version=${git.build.version}
Maven will replace the placeholders with the appropriate values.
Note: Some IDEs don't work well with this plugin, and might throw a ‘circular placeholder reference' error on bootstrap when we define the properties as we did above.
After booting and requesting localhost:8080/commitId you can see a JSON file with a structure similar to the following:
{ "Commit id":"7adb64f1800f8a84c35fef9e5d15c10ab8ecffa6", "Commit branch":"commit_id_plugin", "Commit message":"Merge branch 'master' into commit_id_plugin" }
5. Integration With Spring Boot Actuator
You can use the plugin with Spring Actuator easily.
Seperti yang dapat Anda baca di dokumentasinya, GitInfoContributor akan memilih file git.properties jika tersedia. Jadi, dengan konfigurasi plugin default, informasi Git akan dikembalikan saat memanggil / info endpoint:
{ "git": { "branch": "commit_id_plugin", "commit": { "id": "7adb64f", "time": "2016-08-17T19:30:34+0200" } } }
6. Kesimpulan
Dalam tutorial ini kami menunjukkan dasar penggunaan maven-git-commit-id-plugin dan membuat aplikasi Spring Boot sederhana, yang menggunakan properti yang dihasilkan oleh plugin.
Konfigurasi yang disajikan tidak mencakup semua flag dan atribut yang tersedia, tetapi mencakup semua dasar yang diperlukan untuk mulai bekerja dengan plugin ini.
Anda dapat menemukan contoh kode di Github.