Как использовать загрузку spring для создания общей библиотеки
Теперь я хочу создать общую почтовую службу для наших систем.
По мере разработки мы хотим разработать производителя и потребителя RabbitMQ
. Со стороны потребителя мы могли разработать и развернуть приложение Spring Boot
или Spring Cloud
, но на стороне производителя мы хотим предоставить общий почтовый клиент, такой как интерфейс ниже, и сделать зависимость jar для другой системы.
interface MailClient {
ListentableFuture send(Message message);
}
Но я вижу spring boot и spring облако с использованием многих декларативных методов и, похоже, должен использовать класс приложения, но мне просто нужна ссылка на класс и не нужно развертывать. я не знаю, как его реализовать.
Ответы
Ответ 1
В соответствии с документацией:
Spring Загрузка позволяет легко создавать автономные, производственные классы Spring Приложения, которые вы можете "просто запустить".
Но Spring Boot - это не серебряная пуля, которая соответствует всем ситуациям. Если вы хотите создать библиотеку, вы можете создать обычный проект Spring, который создает банку и сохраняет ее в репозитории вашей компании, если у вас ее есть.
Ответ 2
Spring Лимон был бы хорошим примером для этого. Он использует Spring Boot и предназначен для включения в другие приложения загрузки Spring. Это то, что мы сделали для его создания:
- Создал приложение загрузки Spring, используя мастер загрузки стартовой версии Spring STS.
- Удалено сгенерированное приложение и тестовый класс.
- Удалено
spring-boot-maven-plugin
, т.е. разделы build и pluginRepositories в pom.xml. (Посмотрите, как выглядит pom.xml без этих разделов).
Ответ 3
Документация Spring точно описывает эту проблему и показывает правильный способ реализации общей библиотеки с загрузкой/для Spring:
https://spring.io/guides/gs/multi-module/
Как указано в документации: Хотя плагин Spring Boot Maven не используется, вы хотите использовать Spring Управление зависимостями загрузки.
Ответ 4
У меня была такая же потребность, как и у вас, до сих пор мне удалось создать библиотеку, пригодную для использования в других проектах со следующей конфигурацией:
`
<modelVersion>4.0.0</modelVersion>
<groupId>mx.grailscoder</groupId>
<artifactId>library</artifactId>
<version>1.0-SNAPSHOT</version>
<name>My Custom Library built on Spring Boot</name>
<description>Spring Boot Project library</description>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<logentries-appender>RELEASE</logentries-appender>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
`
Важно отметить, что я пропустил задачу repackage
, так как в моей библиотеке не было никакого основного класса, а затем выполнение задачи mvn install
не прерывается.