Utilizzo di un'applicazione Spring Boot come dipendenza

1. Panoramica

In questo tutorial vedremo come utilizzare un'applicazione Spring Boot come dipendenza di un altro progetto.

2. Pacchetto Spring Boot

I plug-in Spring Boot Maven e Gradle impacchettano entrambi la nostra applicazione come JAR eseguibili: un tale file non può essere utilizzato in un altro progetto poiché i file di classe vengono inseriti in BOOT-INF / classes . Questo non è un bug, ma una caratteristica.

Per condividere le classi con un altro progetto, l'approccio migliore da adottare è creare un jar separato contenente classi condivise , quindi renderlo una dipendenza di tutti i moduli che si basano su di loro.

Ma se ciò non è possibile, possiamo configurare il plug-in per generare un jar separato che può essere utilizzato come dipendenza.

2.1. Configurazione Maven

Configuriamo il plugin con un classificatore:

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

Tuttavia, la configurazione per Spring Boot 1.x sarebbe leggermente diversa:

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

Questo creerà due jar, uno con il suffisso exec come jar eseguibile e un altro come jar più tipico che possiamo includere in altri progetti .

3. Pacchettizzazione con Maven Assembly Plugin

Possiamo anche usare il plugin maven-assembly per creare il jar dipendente:

 org.apache.maven.plugins maven-assembly-plugin   jar-with-dependencies     make-assembly package  single    

Se usiamo questo plugin insieme al classificatore exec in spring-boot-maven-plugin, genererà tre jar. I primi due saranno gli stessi che abbiamo visto in precedenza.

Il terzo avrà qualunque suffisso da noi specificato nel file tag e conterrà tutte le dipendenze transitive del progetto. Se lo includiamo in un altro progetto, non avremo bisogno di includere separatamente le dipendenze di Spring.

4. Conclusione

In questo articolo, abbiamo mostrato un paio di approcci per impacchettare un'applicazione Spring Boot da usare come dipendenza in altri progetti Maven.

Come sempre, il codice che supporta l'articolo è disponibile su GitHub.