So why is spring-boot-dependencies to be included as dependencyManagement?

Let's say you have a project named projectA and you add the spring-boot-dependencies to the dependencyManagement section in your pom.xml.

<project>
  <groupId>com.iovation.service</groupId>
  <artifactId>projectA</artifactId>
  <version>1.0.0-SNAPSHOT</version>

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

  <dependencies>
    <!-- Spring Boot Dependencies -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
      </dependency>
  ...
</project>

If you notice closely, you will find that all the Spring Boot dependencies declared under the dependencies section don't need to specify the version. It derives the version from the version of spring-boot-dependencies specified in the dependencyManagement section.

Advantages of Dependency Management

  • It centralizes dependency information by specifying the Spring Boot version at one place. It really helps during upgrade from one version to another.

  • Subsequent declaration of Spring Boot dependencies just mentions the library name without any version. Especially helpful in multi-module projects

  • It avoids mismatch of different versions of spring boot libraries in a project.

  • No Conflicts.

Answer from Indra Basak on Stack Overflow
🌐
Maven Repository
mvnrepository.com › artifact › org.springframework.boot › spring-boot-dependencies
Maven Repository: org.springframework.boot » spring-boot-dependencies
4 days ago - Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run ... Scalable Proxy Network. Reliable connection for high-volume data projects View Solution ... aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven ...
🌐
Maven Repository
mvnrepository.com › artifact › org.springframework.boot
Maven Repository: org.springframework.boot
Spring Boot auto-configuration attempts to automatically configure your Spring application based on the jar dependencies that you have added.
🌐
Maven Central
central.sonatype.com › artifact › org.springframework.boot › spring-boot-dependencies
Maven Central: org.springframework.boot:spring-boot-dependencies
... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>4.1.0-M4</version> </dependency> ... <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>4.1.0-M4</version> <packaging>pom</packaging> <name>spring-b
🌐
GeeksforGeeks
geeksforgeeks.org › springboot › spring-boot-dependency-management
Spring Boot - Dependency Management - GeeksforGeeks
July 29, 2025 - It is the auto-configuration that makes managing dependencies supremely easy for us. We have to add the dependencies in the pom.xml/build.gradle file. These added dependencies will then get downloaded from Maven Central.
🌐
Maven Repository
mvnrepository.com › artifact › org.springframework.boot › spring-boot
Maven Repository: org.springframework.boot » spring-boot
4 days ago - Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run · Links · Application Servers · Maven Plugins · Testing · Android Packages · Language Runtime · JVM Languages · Logging Frameworks · JSON Libraries · Java Specifications · Core Utilities · Mocking · Annotation Libraries · Web Assets · HTTP Clients · Logging Bridges · Dependency Injection ·
Top answer
1 of 3
8

So why is spring-boot-dependencies to be included as dependencyManagement?

Let's say you have a project named projectA and you add the spring-boot-dependencies to the dependencyManagement section in your pom.xml.

<project>
  <groupId>com.iovation.service</groupId>
  <artifactId>projectA</artifactId>
  <version>1.0.0-SNAPSHOT</version>

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

  <dependencies>
    <!-- Spring Boot Dependencies -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
      </dependency>
  ...
</project>

If you notice closely, you will find that all the Spring Boot dependencies declared under the dependencies section don't need to specify the version. It derives the version from the version of spring-boot-dependencies specified in the dependencyManagement section.

Advantages of Dependency Management

  • It centralizes dependency information by specifying the Spring Boot version at one place. It really helps during upgrade from one version to another.

  • Subsequent declaration of Spring Boot dependencies just mentions the library name without any version. Especially helpful in multi-module projects

  • It avoids mismatch of different versions of spring boot libraries in a project.

  • No Conflicts.

2 of 3
1

It's definitely correct. Please see Using Spring Boot without the parent POM!

🌐
Stack Overflow
stackoverflow.com › questions › 79257090 › how-to-create-a-maven-dependency-and-use-it-in-spring-boot
How to create a maven dependency and use it in Spring boot - Stack Overflow
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.0</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>ir.com</groupId> <artifactId>sso</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sso</name> <description>Demo project for SSO</description> <properties> <java.version>21</java.version> </properties> <dependencies> <dependency> <groupId>ir.com</groupId> <artifactId>common</artifactId> <version>0.0.1-SNAPSHOT</version> <type>pom</type> </dependency> ...
Find elsewhere
🌐
Maven Central
central.sonatype.com › artifact › org.springframework.boot › spring-boot
org.springframework.boot:spring-boot - Maven Central
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot</artifactId> <version>4.1.0-M4</version> </dependency> Copy to clipboard · <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- This module was also published with a richer model, Gradle metadata, --> <!-- which should be used instead.
🌐
Maven Central
repo.maven.apache.org › maven2 › org › springframework › boot › spring-boot-dependencies
Central Repository: org/springframework/boot/spring-boot-dependencies
org/springframework/boot/spring-boot-dependencies · / 1.0.0.RELEASE/ 2014-04-01 12:59 - 1.0.1.RELEASE/ 2014-04-07 06:17 - 1.0.2.RELEASE/ 2014-04-24 10:32 - 1.1.0.RELEASE/ 2014-06-10 21:07 - 1.1.1.RELEASE/ 2014-06-11 19:06 - 1.1.10.RELEASE/ 2014-12-11 03:38 - 1.1.11.RELEASE/ 2015-02-26 22:12 ...
🌐
Spring
docs.spring.io › spring-boot › appendix › dependency-versions › index.html
Dependency Versions :: Spring Boot
This appendix provides details of the dependencies that are managed by Spring Boot.
🌐
Medium
medium.com › @AlexanderObregon › spring-boot-dependency-management-for-leaner-applications-basics-for-beginners-c72e7e726cf0
Spring Boot Dependency Management for Leaner Applications — Basics for Beginners
November 5, 2024 - The spring-boot-starter-parent is an integral tool in Spring Boot for handling dependencies in a consistent, centralized way. Acting as a parent POM (Project Object Model) in a Maven project, it not only manages the versions and configurations of dependencies but also reduces the complexity of managing different versions across the project.
Top answer
1 of 12
124

By default, Spring Boot repackages your JAR into an executable JAR, and it does that by putting all of your classes inside BOOT-INF/classes, and all of the dependent libraries inside BOOT-INF/lib. The consequence of creating this fat JAR is that you can no longer use it as a dependency for other projects.

From Custom repackage classifier:

By default, the repackage goal will replace the original artifact with the repackaged one. That's a sane behaviour for modules that represent an app but if your module is used as a dependency of another module, you need to provide a classifier for the repackaged one.

The reason for that is that application classes are packaged in BOOT-INF/classes so that the dependent module cannot load a repackaged jar's classes.

If you want to keep the original main artifact in order to use it as a dependency, you can add a classifier in the repackage goal configuration:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>1.4.1.RELEASE</version>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
      <configuration>
        <classifier>exec</classifier>
      </configuration>
    </execution>
  </executions>
</plugin>

With this configuration, the Spring Boot Maven Plugin will create 2 JARs: the main one will be the same as a usual Maven project, while the second one will have the classifier appended and be the executable JAR.

2 of 12
34

If you are using spring-boot-starter-parent, such execution is already pre-configured with a repackage execution ID so that only the plugin definition should be added.

Spring Boot 3.x

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Read more


Spring Boot 2.x

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <id>repackage</id>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

Read more


Spring Boot 1.x

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.20.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

Read more

🌐
Spring
spring.io › guides › gs › spring-boot
Getting Started | Building an Application with Spring Boot
This project is configured to fit the examples in this tutorial. ... Navigate to https://start.spring.io. This service pulls in all the dependencies you need for an application and does most of the setup for you.
🌐
Baeldung
baeldung.com › home › spring › spring boot › using a spring boot application as a dependency
Using a Spring Boot Application as a Dependency | Baeldung
January 8, 2024 - ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> </plugin> This will create two jars, one with the suffix exec as an executable jar, and another as a more typical jar that we can include in other projects. We may also use the maven-assembly-plugin to create the dependent jar:
🌐
Spring
docs.spring.io › spring-boot › docs › 1.1.4.RELEASE › reference › html › getting-started-first-application.html
10. Developing your first Spring Boot application
To create an executable jar we need to add the spring-boot-maven-plugin to our pom.xml. Insert the following lines just below the dependencies section:
🌐
Baeldung
baeldung.com › home › spring › spring boot › spring boot dependency management with a custom parent
Spring Boot Dependency Management with a Custom Parent | Baeldung
August 7, 2025 - Spring Boot provides the parent POM for an easier creation of Spring Boot applications. However, using the parent POM may not always be desirable, if we already have a parent to inherit from. In this quick tutorial, we’re going to take a look at how we can still use Boot without the parent starter. The parent pom.xml takes care of dependency and plugin management.
🌐
Spring
docs.spring.io › spring-boot › maven-plugin › index.html
Maven Plugin :: Spring Boot
It allows you to package executable jar or war archives, run Spring Boot applications, generate build information and start your Spring Boot application prior to running integration tests. To use it, you must use Maven 3.6.3 or later.
🌐
Spring
docs.spring.io › spring-data › jpa › reference › data-commons › dependencies.html
Dependencies :: Spring Data JPA
<dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> </dependency> <dependencies> Spring Boot selects a recent version of the Spring Data modules for you.