现在我想为我们的系统开发一个通用的邮件服务。
在我们设计时,我们希望开发一个RabbitMQ
生产者和消费者。在消费者方面,我们可以开发和部署Spring Boot
或Spring Cloud
应用程序,但在生产者方面,我们希望提供一个像下面的接口这样的公共邮件客户端,并为其他系统创建一个jar依赖。
interface MailClient {
ListentableFuture send(Message message);
}
但我看到使用许多声明方法的spring boot和spring cloud,似乎必须使用应用程序类,但我只想要一个类引用而不需要部署。我不知道如何实现它。
答案 0 :(得分:67)
Spring Lemon就是一个很好的例子。它使用Spring Boot,并且包含在其他Spring Boot应用程序中。这就是我们创建它所做的:
spring-boot-maven-plugin
,即 build 和pom.xml中的 pluginRepositories 部分。 (如果没有这些部分,请查看pom.xml的外观。)答案 1 :(得分:23)
Spring文档准确地解决了这个问题,并展示了使用/ for Spring boot实现公共库的正确方法:
https://spring.io/guides/gs/multi-module/
正如文档所述:虽然没有使用Spring Boot Maven插件,但您确实希望利用Spring Boot依赖关系管理。
答案 2 :(得分:3)
我有类似的需求,到目前为止,我设法构建了一个可用于其他项目的库,具有以下配置:
`
<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
任务不会失败。
答案 3 :(得分:-1)
Spring Boot可以轻松创建独立, 生产等级 基于Spring的应用程序,您可以“直接运行”。
但Spring Boot不是适合所有情况的银弹。如果要创建库,可以创建一个常规的spring项目,该项目构建一个jar并将其存储在公司的存储库中(如果有的话)。