Подтвердить что ты не робот

Как использовать загрузку spring для создания общей библиотеки

Теперь я хочу создать общую почтовую службу для наших систем. По мере разработки мы хотим разработать производителя и потребителя RabbitMQ. Со стороны потребителя мы могли разработать и развернуть приложение Spring Boot или Spring Cloud, но на стороне производителя мы хотим предоставить общий почтовый клиент, такой как интерфейс ниже, и сделать зависимость jar для другой системы.

interface MailClient {
  ListentableFuture send(Message message);
}

Но я вижу spring boot и spring облако с использованием многих декларативных методов и, похоже, должен использовать класс приложения, но мне просто нужна ссылка на класс и не нужно развертывать. я не знаю, как его реализовать.

4b9b3361

Ответ 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 не прерывается.