Перейти к основному содержимому

Использование приложения Spring Boot в качестве зависимости

· 2 мин. чтения

1. Обзор

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

2. Упаковка Spring Boot

Плагины Spring Boot Maven и Gradle упаковывают наше приложение в виде исполняемых JAR-файлов — такой файл нельзя использовать в другом проекте, поскольку файлы классов помещаются в BOOT-INF/classes . Это не баг, а фича.

Чтобы использовать классы совместно с другим проектом, лучше всего создать отдельный jar-файл, содержащий общие классы , а затем сделать его зависимым для всех модулей, которые на них полагаются.

Но если это невозможно, мы можем настроить плагин для создания отдельного jar-файла, который можно использовать в качестве зависимости.

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

Давайте настроим плагин с помощью классификатора:

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

Однако конфигурация для Spring Boot 1.x будет немного другой:

...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>

Это создаст два jar-файла, один с суффиксом exec как исполняемый jar-файл, а другой — более типичный jar-файл, который мы можем включить в другие проекты .

3. Упаковка с помощью плагина сборки Maven

Мы также можем использовать maven-assembly-plugin для создания зависимой банки:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

Если мы используем этот плагин вместе с классификатором exec в spring-boot-maven-plugin, он сгенерирует три jar-файла. Первые два будут такими же, как мы видели ранее.

Третий будет иметь тот суффикс, который мы указали в теге <descriptorRef> , и будет содержать все транзитивные зависимости проекта. Если мы включим его в другой проект, нам не нужно будет отдельно включать зависимости Spring.

4. Вывод

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

Как всегда, код, поддерживающий статью, доступен на GitHub .