Рубрики
Без рубрики

Введение Информации Git В Spring

Краткое и практическое руководство по извлечению и введению информации Git с помощью Spring и Maven

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы покажем, как внедрить информацию о репозитории Git в приложение на основе Spring Boot, созданное Maven.

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

2. Зависимости Maven

Давайте добавим плагин в раздел <плагины> вашего pom.xml файл вашего проекта:


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

Вы можете найти последнюю версию здесь . Имейте в виду, что для этого p lugin требуется как минимум 3.1.1 версия Maven.

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

Плагин имеет множество удобных флагов и атрибутов, которые расширяют его функциональность. В этом разделе мы кратко опишем некоторые из них. Если вы хотите познакомиться со всеми из них, посетите страницу плагина maven-git-commit-id-plugin и если вы хотите перейти прямо к примеру, перейдите к разделу 4 .

Следующие фрагменты содержат примеры атрибутов плагина; укажите их в разделе <конфигурация> в соответствии с вашими потребностями.

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 классов: Приложение и Контроллер идентификатора фиксации

4.1. Применение

Приложение Commit Id будет служить корнем нашего приложения:

@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 bean, чтобы мы могли получить доступ к файлу свойств, сгенерированному плагином.

Мы также установили некоторые флаги, чтобы приложение работало гладко, даже если 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 в поля класса.

Чтобы просмотреть все доступные свойства, обратитесь к git.properties файлу или авторскому Github странице . Мы также создали простую конечную точку, которая при запросе HTTP GET будет отвечать JSON , содержащим введенные значения.

4.3. Запись Maven

Сначала мы настроим шаги выполнения, которые будут выполняться плагином, а также любое другое свойство конфигурации, которое мы считаем полезным:


    pl.project13.maven
    git-commit-id-plugin
    2.2.1
    
        
            get-the-git-infos
            
                revision
            
        
        
            validate-the-git-infos
            
                validateRevision
            
        
    
    
        
    

Для того, чтобы наш код работал должным образом, мы должны в конечном итоге получить файл git.properties в нашем пути к классу. Для достижения этой цели у нас есть два варианта.

Первый - оставить это на усмотрение плагина для создания файла. Мы можем указать это, установив свойство generateGitPropertiesFile configuration a true value:


    true

Второй вариант-включить файл git.properties в папку ресурсов самостоятельно. Мы можем включить только те записи, которые будем использовать в нашем проекте:

# 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 заменит заполнители соответствующими значениями.

Примечание: Некоторые идеи не очень хорошо работают с этим плагином и могут вызвать ошибку "круговая ссылка на заполнитель" при начальной загрузке, когда мы определяем свойства, как мы делали выше.

После загрузки и запроса localhost:8080/commit Id вы можете увидеть файл JSON со структурой, подобной следующей:

{
    "Commit id":"7adb64f1800f8a84c35fef9e5d15c10ab8ecffa6",
    "Commit branch":"commit_id_plugin",
    "Commit message":"Merge branch 'master' into commit_id_plugin"
}

5. Интеграция С Приводом Пружинного Ботинка

Вы можете легко использовать плагин с пружинным приводом.

Как вы можете прочитать в documentation , Git Info Contributor выберет git.properties файл, если он доступен. Таким образом, при конфигурации плагина по умолчанию информация Git будет возвращена при вызове /info endpoint:

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

6. Заключение

В этом уроке мы показали основы использования maven-git-commit-id-plugin и создали простое приложение Spring Boot, которое использует свойства, созданные плагином.

Представленная конфигурация не охватывает все доступные флаги и атрибуты, но она охватывает все основы, необходимые для начала работы с этим плагином.

Примеры кода можно найти на Github .