Usando um aplicativo de inicialização Spring como uma dependência

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.