Maintenant, je veux développer un service de courrier commun pour nos systèmes. En tant que concepteur, nous souhaitons développer un producteur et consommateur RabbitMQ
. Du côté des consommateurs, nous pourrions développer et déployer un Spring Boot
ou Spring Cloud
_ application, mais du côté du producteur, nous voulons donner un client de messagerie commun tel que l’interface ci-dessous et créer une dépendance de jar pour un autre système.
interface MailClient {
ListentableFuture send(Message message);
}
Mais je vois Spring Boot et Spring Cloud en utilisant de nombreuses méthodes déclaratives et semble devoir utiliser une classe d’application, mais je veux juste une référence de classe et ne pas avoir besoin de déployer. Je ne sais pas comment le mettre en œuvre.
Spring Lemon serait un bon exemple pour cela. Il utilise Spring Boot et doit être inclus dans d'autres applications Spring Boot. Voici ce que nous avons fait pour le créer:
spring-boot-maven-plugin
, c'est-à-dire les sections build et pluginRepositories de pom.xml . (Voir à quoi ressemblerait un pom.xml sans ces sections).La documentation de Spring répond exactement à cette préoccupation et montre comment implémenter une bibliothèque commune avec/pour Spring Boot:
https://spring.io/guides/gs/multi-module/
Comme indiqué dans la documentation: Bien que le plug-in Spring Boot Maven ne soit pas utilisé, vous souhaitez tirer parti de la gestion des dépendances Spring Boot .
J'avais un besoin similaire au vôtre. Jusqu'à présent, j'ai réussi à construire une bibliothèque utilisable sur d'autres projets avec la configuration suivante:
`
<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>
`
Il est important de mentionner que j'ai sauté la tâche repackage
car ma bibliothèque n'avait pas de classe principale, émettant alors le mvn install
La tâche n'échoue pas.