Een Spring Boot-applicatie gebruiken als afhankelijkheid

1. Overzicht

In deze tutorial zullen we zien hoe je een Spring Boot-applicatie kunt gebruiken als afhankelijkheid van een ander project.

2. Spring Boot verpakking

De Spring Boot Maven- en Gradle-plug-ins verpakken onze applicatie beide als uitvoerbare JAR's - zoals een bestand kan niet in een ander project worden gebruikt omdat er klassebestanden in BOOT-INF / lessen. Dit is geen bug, maar een feature.

Om klassen te delen met een ander project, is de beste aanpak om maak een aparte pot met gedeelde klassen, en maak er vervolgens een afhankelijkheid van van alle modules die ervan afhankelijk zijn.

Maar als dat niet mogelijk is, kunnen we de plug-in configureren om een ​​aparte jar te genereren die als afhankelijkheid kan worden gebruikt.

2.1. Maven-configuratie

Laten we de plug-in configureren met een classifier:

... ... ... org.springframework.boot spring-boot-maven-plugin exec 

De configuratie voor Spring Boot 1.x zou echter een beetje anders zijn:

... org.springframework.boot spring-boot-maven-plugin repackage exec 

Hierdoor ontstaan ​​twee potten, een met het achtervoegsel exec als een uitvoerbare pot, en een ander als een meer typische pot die we in andere projecten kunnen opnemen.

3. Verpakken met Maven Assembly-plug-in

We kunnen ook de maven-assembly-plugin om de afhankelijke jar te maken:

 org.apache.maven.plugins maven-assembly-plugin jar-with-dependencies make-assembly pakket enkel 

Als we deze plug-in samen met de exec classifier in spring-boot-maven-plugin, het genereert drie potten. De eerste twee zullen dezelfde zijn die we eerder zagen.

De derde krijgt het achtervoegsel dat we in de tag en bevat alle transitieve afhankelijkheden van het project. Als we het in een ander project opnemen, hoeven we Spring-afhankelijkheden niet afzonderlijk op te nemen.

4. Conclusie

In dit artikel hebben we een aantal benaderingen laten zien om een ​​Spring Boot-applicatie te verpakken voor gebruik als afhankelijkheid in andere Maven-projecten.

Zoals altijd is de code die het artikel ondersteunt, beschikbaar op GitHub.