Brug af en Spring Boot-applikation som en afhængighed

1. Oversigt

I denne vejledning ser vi, hvordan du bruger en Spring Boot-applikation som en afhængighed af et andet projekt.

2. Spring Boot Packaging

Spring Boot Maven og Gradle-plugins pakker begge vores applikation som eksekverbare JAR'er - sådan en fil kan ikke bruges i et andet projekt, da klassefiler indsættes BOOT-INF / klasser. Dette er ikke en fejl, men en funktion.

For at dele klasser med et andet projekt er den bedste tilgang at tage opret en separat krukke, der indeholder delte klasser, gør det derefter til en afhængighed af alle moduler, der er afhængige af dem.

Men hvis det ikke er muligt, kan vi konfigurere pluginet til at generere en separat jar, der kan bruges som en afhængighed.

2.1. Maven-konfiguration

Lad os konfigurere pluginet med en klassifikator:

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

Skønt konfigurationen til Spring Boot 1.x ville være lidt anderledes:

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

Dette vil skabe to krukker, en med suffikset udføre som en eksekverbar krukke, og en anden som en mere typisk krukke, som vi kan medtage i andre projekter.

3. Emballage med Maven Assembly Plugin

Vi kan også bruge maven-assemblage-plugin at oprette den afhængige krukke:

 org.apache.maven.plugins maven-assembly-plugin jar-med-afhængigheder make-assembly pakke single 

Hvis vi bruger dette plugin sammen med udføre klassifikator i spring-boot-maven-plugin, det genererer tre krukker. De to første vil være de samme, som vi så tidligere.

Den tredje vil have det suffiks, vi specificerede i tag og indeholder alle projektets transitive afhængigheder. Hvis vi inkluderer det i et andet projekt, behøver vi ikke separat inkludere forårsmængder.

4. Konklusion

I denne artikel viste vi et par fremgangsmåder til emballering af en Spring Boot-applikation til brug som en afhængighed i andre Maven-projekter.

Som altid er koden, der understøtter artiklen, tilgængelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found