Spring Boot via DependencyManagement

Geralmente quando usamos Spring Boot com Maven temos uma declaração muito parecida com essa em nosso arquivo pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>

Estamos herdando de outro arquivo pom.xml onde tem todas as dependências do Spring Boot declaradas com todas suas versões e etc.

Muitos projetos utilizam essa técnica de ter um projeto maven somente com o arquivo pom.xml  e nele todas as dependências declaradas para ser herdado em outros projetos, assim garantimos que não teremos dependências duplicadas ou em versões diferentes.

O que aconteceria se um projeto tem um pom.xml para ser herdado e queremos usar o Spring Boot? Aí deu ruim, pois não podemos ter duas declarações  no mesmo arquivo pom.xml.

Para resolver esse problema podemos usar o a tag dependencyManagement. Ela tem basicamente a mesma funcionalidade que a tag parent, ou seja ter um projeto com todas as dependências declaradas nele para serem usadas em outros projetos.

Nossa declaração no pom.xml ficaria assim:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

Esse projeto com as dependências pode ser projeto maven com pom.xml ou war entre outros. Por isso precisamos especificar o tipo.

A vantagem do dependencyManagement é que podemos ter mais de uma dependência dentro da tag dependencies.

Dessa forma podemos usar o Spring Boot em e ainda assim ter um parent no nosso projeto.

Essa é só uma outra forma de utilizar o Spring Boot no nosso projeto.

Você já conhecia essa forma de utilizar? O que vocês acharam?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s