Системы сборки и Spring Boot: использование Maven

При использовании Spring Boot настоятельно рекомендуется выбрать систему сборки, которая поддерживает управление зависимостями и может использовать артефакты, опубликованные в репозитории "Maven Central". Рекомендуется выбрать Maven или Gradle. Можно заставить Spring Boot работать с другими системами сборки (например, Ant), но они не особенно хорошо поддерживаются.

Управление зависимостями

Каждый релиз Spring Boot предоставляет курируемый список зависимостей, который он поддерживает. На практике вам не нужно предоставлять версию для какой-либо из этих зависимостей в конфигурации сборки, поскольку Spring Boot управляет этим для вас. При обновлении самого Spring Boot эти зависимости также обновляются согласованным образом.

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

Курируемый список содержит все модули Spring, которые вы можете использовать с Spring Boot, а также улучшенный список сторонних библиотек. Список доступен в виде стандартных ведомостей материалов (spring-boot-dependencies), которые можно использовать как с Maven, так и с Gradle.

Каждый выпуск Spring Boot связан с базовой версией Spring Framework. Настоятельно рекомендуется не указывать его версию.

Maven

Пользователи Maven могут наследовать от проекта spring-boot-starter-parent для получения разумных значений по умолчанию. parent проект предоставляет следующие возможности:

  • Java 1.8 как уровень компилятора по умолчанию.
  • Кодировка UTF-8 источника.
  • Раздел управления зависимостями, унаследованный от spring-boot-dependencies pom, который управляет версиями общих зависимостей. Это управление зависимостями позволяет вам опустить теги <version> для этих зависимостей при использовании в вашем pom.
  • Выполнение цели repackage с идентификатором выполнения repackage.
  • Разумная фильтрация ресурсов.
  • Разумная конфигурация плагина (exec plugin, Git commit ID и shade).
  • Разумная фильтрация ресурсов для application.properties и application.yml, включая специфичные для профиля файлы (например, application-dev.properties и application-dev.yml)

Обратите внимание, что, поскольку файлы application.properties и application.yml принимают заполнители в стиле Spring (${…}), фильтрация Maven изменяется на использование @..@ заполнителей. (Вы можете переопределить это, установив свойство Maven с именем resource.delimiter.)

Наследование parent стартера

Чтобы настроить ваш проект для наследования от spring-boot-starter-parent, установите parent следующим образом:

<!-- Inherit defaults from Spring Boot -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.4.RELEASE</version>
</parent>

Вы должны указать только номер версии Spring Boot для этой зависимости. Если вы импортируете дополнительные стартеры, вы можете спокойно пропустить номер версии.

С помощью этой настройки вы также можете переопределить отдельные зависимости, переопределив свойство в вашем собственном проекте. Например, чтобы перейти на другой релиз Spring Data, вы должны добавить следующее в ваш pom.xml:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

Использование Spring Boot без parent POM

Не всем нравится наследование от POM spring-boot-starter-parent. У вас может быть собственный корпоративный стандартный parent, который вам нужно использовать, или вы можете явно объявить всю свою конфигурацию Maven.

Если вы не хотите использовать spring-boot-starter-parent, вы все равно можете сохранить преимущества управления зависимостями (но не управления плагинами), используя зависимость scope=import следующим образом:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.4.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Предыдущий пример настройки не позволяет переопределять отдельные зависимости с помощью свойства, как описано выше. Чтобы достичь того же результата, вам нужно добавить запись в dependencyManagement вашего проекта перед записью spring-boot-dependencies. Например, чтобы перейти на другой релиз Spring Data, вы можете добавить следующий элемент в ваш файл pom.xml:

<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.4.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Использование плагина Spring Boot Maven

Spring Boot включает в себя плагин Maven, который может упаковать проект в виде исполняемого файла jar. Добавьте плагин в раздел <plugins>, если вы хотите его использовать, как показано в следующем примере:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Если вы используете Spring Boot parent pom starter, вам нужно добавить только плагин. Нет необходимости настраивать его, если вы не хотите изменять параметры, определенные в parent элементе.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки