Usando um aplicativo de inicialização Spring como uma dependência
1. Visão geral
Neste tutorial, veremos como usar um aplicativo Spring Boot como uma dependência de outro projeto.
2. Empacotamento da bota de mola
Os plug-ins Spring Boot Maven e Gradle empacotam nosso aplicativo como JARs executáveis - como o arquivocan’t be used in another project since class files are put into BOOT-INF/classes. Isso não é um bug, mas um recurso.
Para compartilhar classes com outro projeto, a melhor abordagem é usarcreate a separate jar containing shared classes e torná-lo uma dependência de todos os módulos que dependem deles.
Mas se isso não for possível, podemos configurar o plug-in para gerar um jar separado que pode ser usado como uma dependência.
2.1. Configuração do Maven
Vamos configurar o plugin com um classificador:
...
...
...
org.springframework.boot
spring-boot-maven-plugin
exec
Porém, a configuração do Spring Boot 1.x seria um pouco diferente:
...
org.springframework.boot
spring-boot-maven-plugin
repackage
exec
Isso criará dois jars,one with the suffix exec as an executable jar,eanother as a more typical jar that we can include in other projects.
3. Empacotando com o Maven Assembly Plugin
Também podemos usarmaven-assembly-plugin para criar o jar dependente:
org.apache.maven.plugins
maven-assembly-plugin
jar-with-dependencies
make-assembly
package
single
Se usarmos este plugin junto com o classificadorexec emspring-boot-maven-plugin,, ele irá gerar três jars. Os dois primeiros serão os mesmos que vimos anteriormente.
O terceiro terá qualquer sufixo que especificamos no stag<descriptorRef> e conterá todas as dependências transitivas do projeto. Se o incluirmos em outro projeto, não precisaremos incluir separadamente as dependências do Spring.
4. Conclusão
Neste artigo, mostramos algumas abordagens para empacotar um aplicativo Spring Boot para uso como dependência em outros projetos Maven.
Como sempre, o código que sustenta o artigo está disponívelover on GitHub.