Введення інформації про Git у весну

1. Огляд

У цьому підручнику ми покажемо, як вводити інформацію про сховище Git у додаток, створений Maven Spring Boot.

Для цього ми будемо використовувати maven-git-commit-id-plugin - зручний інструмент, створений виключно для цієї мети.

2. Залежності Мейвена

Давайте додамо плагін до розділ нашого файлу pom.xml нашого проекту:

 pl.project13.maven git-commit-id-plugin 2.2.1 

Останню версію ви можете знайти тут. Майте на увазі, що для цього p- модуля потрібна принаймні версія 3.1.1 Maven.

3. Конфігурація

Плагін має безліч зручних прапорів та атрибутів, які розширюють його функціональність. У цьому розділі ми коротко опишемо деякі з них. Якщо ви хочете ознайомитись із усіма ними, відвідайте сторінку maven-git-commit-id-plugin, а якщо ви хочете перейти безпосередньо до прикладу, перейдіть до розділу 4 .

Наступні фрагменти містять приклади атрибутів плагіна; вкажіть їх у aрозділ відповідно до ваших потреб.

3.1. Відсутнє сховище

Ви можете налаштувати його, щоб пропустити помилки, якщо репозиторій Git не знайдено:

false

3.2. Розташування сховища Git

Якщо ви хочете вказати власне розташування сховища .git , використовуйте атрибут dotGitDirectory :

${project.basedir}/submodule_directory/.git

3.3. Вихідний файл

Для того, щоб створити файл властивостей із власним іменем та / або каталогом, використовуйте наступний розділ:

 ${project.build.outputDirectory}/filename.properties 

3.4. Багатослівність

Для більш щедрого використання лісозаготівель:

true

3.5. Властивості Генерація файлів

Ви можете вимкнути створення файлу git.properties :

false

3.6. Префікс властивостей

Якщо ви хочете вказати власний префікс властивості, використовуйте:

git

3.7. Тільки для батьківського сховища

При роботі з проектом з підмодулями, встановлення цього прапора переконуєсь, що плагін працює лише для батьківського сховища:

true

3.8. Виключення властивостей

Ви можете виключити деякі конфіденційні дані, такі як інформація про користувача сховища:

 git.user.* 

3.9. Включення властивостей

Також можна включити лише вказані дані:

 git.commit.id 

4. Зразок заявки

Давайте створимо зразок контролера REST, який поверне основну інформацію про наш проект.

Ми створимо зразок програми за допомогою Spring Boot. Якщо ви не знаєте, як налаштувати програму Spring Boot, перегляньте вступну статтю: Налаштування веб-програми Spring Boot.

Наш додаток буде складатися з 2 класів: Application та CommIdController

4.1. Застосування

CommIdApplication буде виконувати функції кореня нашого додатка:

@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; } }

Окрім налаштування кореневої частини нашого додатку, ми створили компонент PropertyPlaceHolderConfigurer, щоб мати можливість отримати доступ до файлу властивостей, створеного плагіном.

Ми також встановили деякі прапори, щоб програма працювала безперебійно, навіть якщо Spring не може вирішити файл git.properties .

4.2. Контролер

@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; } }

Як бачите, ми вводимо властивості Git у поля класу.

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.

Як ви можете прочитати в документації, GitInfoContributor підбере файл git.properties , якщо такий є. Отже, із конфігурацією плагіна за замовчуванням, інформація про Git повертається під час виклику / кінцевої інформації :

{ "git": { "branch": "commit_id_plugin", "commit": { "id": "7adb64f", "time": "2016-08-17T19:30:34+0200" } } }

6. Висновок

У цьому посібнику ми показали основи використання maven-git-commit-id-plugin та створили просту програму Spring Boot, яка використовує властивості, створені плагіном.

Представлена ​​конфігурація не охоплює всіх доступних прапорів та атрибутів, але охоплює всі основи, необхідні для початку роботи з цим плагіном.

Ви можете знайти приклади коду на Github.