Memasukkan Informasi Git Ke Musim Semi

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.