

Table of Contents
1. Overview
In this article, we learn how we can include or configure maven dependency without parent pom. In some organization might have their own parent pom so we can not use multiple parent pom in the same maven project. Using parent pom is automatically maintaining versions of dependencies, for example in the below example, we have added spring-boot-starter-web
but haven’t specified the version but still, spring boot will automatically take an appropriate version of spring-boot-starter-web.
Spring also provides advantages without parent pom as well.
2. Without parent pom configurations
We require two updates in pom.xml as like:
- Include
spring-boot-dependencies
with the appropriate version and make sure thatscope=import
which help us to maintain dependency management. - Add
repackage
in the executiongoals
to generate jar or war based on spring boot packaging format. Otherwise, it may generate an error likeno main manifest attribute, in spring-boot-example-1.0-SNAPSHOT.jar
when we try to run the application usingjava -jar spring-boot-example-1.0-SNAPSHOT.jar
<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spring-boot-example</groupId> <artifactId>spring-boot-example</artifactId> <version>1.0-SNAPSHOT</version> <description>Spring boot without parent pom</description> <!-- Inherit defaults from Spring Boot --> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <spring.boot.version>2.1.5.RELEASE</spring.boot.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!-- Package as an executable jar --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
3. Conclusion
In this article, we learned that we can configure spring boot application without spring-boot-starter-parent
parent pom. We also learned that the main advantage of parent pom for dependency and it’s version management.