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 MapgetCommitId() { 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 .