To start your application using a different Spring Boot version by configuring the pom.xml
, follow these steps:
Configuring pom.xml
for Runtime Spring Boot Version Switching
-
Set the Spring Boot Version as a Maven Property: Define the Spring Boot version using a property in the
pom.xml
, allowing it to be overridden at runtime.<properties> <spring.boot.version>2.5.15</spring.boot.version> <!-- Default Version --> </properties>
-
Use
dependencyManagement
for Spring Boot Dependencies: Import the Spring Boot BOM (Bill of Materials) using the defined version property. This ensures all Spring Boot dependencies use the specified version.<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>
-
Add Spring Boot Dependencies as Usual: Use Spring Boot dependencies without specifying their version, as the BOM ensures they inherit the correct version.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies>
-
Override the Version at Build or Runtime: You can specify a different Spring Boot version by overriding the property when building or running the application.
Build Time:
mvn clean package -Dspring.boot.version=2.3.12.RELEASE
Runtime (with Executable JAR): If you have already built the application but want to run it with a different version:
- Ensure the dependencies are not embedded in the JAR (
spring-boot-maven-plugin
configuration). - Provide the required version in the classpath at runtime.
java -Dspring.boot.version=2.3.12.RELEASE -jar target/your-app.jar
- Ensure the dependencies are not embedded in the JAR (
Example pom.xml
for Dynamic Version Switching
Here is a complete example of a pom.xml
that supports switching Spring Boot versions:
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>spring-boot-version-switch</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <properties> <!-- Define the Spring Boot version property --> <spring.boot.version>2.5.15</spring.boot.version> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <!-- Import Spring Boot dependencies dynamically --> <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> <!-- Add your Spring Boot dependencies without specifying versions --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build> </project>
How to Test Different Versions
-
Default Version:
mvn clean package
-
Different Version (e.g., 2.3.12.RELEASE):
mvn clean package -Dspring.boot.version=2.3.12.RELEASE
The dependencies will automatically switch to the specified version