web-dev-qa-db-fra.com

Comment utiliser une botte à ressort pour créer une bibliothèque commune

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.

41
GrapeBaBa

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:

  1. Création d'une application Spring Boot à l'aide de l'assistant de démarrage Spring Boot de [~ # ~] [~ # ~ ] .
  2. Suppression de l'application générée et de la classe de test.
  3. Supprimé spring-boot-maven-plugin, c'est-à-dire les sections build et pluginRepositories de pom.xml . (Voir à quoi ressemblerait un pom.xml sans ces sections).
74
Sanjay

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 .

32
java-addict301

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.

3
grails-coder