How do you package a Spring Boot application as a JAR?
Table of Contents
- Introduction
- How to Package a Spring Boot Application as a JAR
- Customizing the JAR Packaging
- Conclusion
Introduction
Packaging a Spring Boot application as a JAR (Java ARchive) is one of the simplest and most common ways to build and deploy a Spring Boot application. An executable JAR file allows you to bundle all your application code, resources, and dependencies into a single file that can be easily run on any system with a Java runtime.
This guide will walk you through the process of packaging your Spring Boot application as an executable JAR file, which can be easily run using the java -jar
command. We will cover packaging with Maven and Gradle, the two most popular build tools used in Spring Boot projects.
How to Package a Spring Boot Application as a JAR
1. Using Maven to Package as a JAR
Maven is the most commonly used build tool for Spring Boot applications. To package a Spring Boot application as an executable JAR, you need to include the Spring Boot Maven Plugin in your pom.xml
.
Step 1: Configure the pom.xml
File
In your pom.xml
, make sure you have the following configuration:
- Include
spring-boot-starter-parent
as the parent POM for simplified configuration management. - Add the
spring-boot-maven-plugin
in the<plugins>
section for packaging and running the application.
Here’s an example pom.xml
for packaging a Spring Boot application as a JAR:
**pom.xml**
Example:
Step 2: Build the JAR File
Once your pom.xml
is configured, you can build the JAR file using the following Maven command:
This command will:
- Clean the project (remove any previously compiled files).
- Compile the source code.
- Package the application into an executable JAR file.
The resulting JAR file will be placed in the target/
directory, usually with a name like spring-boot-application-1.0.0.jar
.
Step 3: Run the JAR
To run the generated JAR file, use the java -jar
command:
This will start your Spring Boot application, and it will be accessible at the default port (e.g., http://localhost:8080
).
2. Using Gradle to Package as a JAR
If you're using Gradle as your build tool, you can similarly package your Spring Boot application as an executable JAR by applying the Spring Boot Gradle Plugin.
Step 1: Configure the build.gradle
File
In your build.gradle
, add the following configuration:
- Apply the
spring-boot
plugin for Gradle to handle the packaging. - Use the
bootJar
task to create an executable JAR file.
**build.gradle**
Example:
Step 2: Build the JAR File
Once the build.gradle
file is configured, run the following Gradle command to build the JAR:
This will:
- Clean the project (remove previous builds).
- Build the executable JAR file.
The JAR file will be created in the build/libs/
directory, with a name like spring-boot-application-1.0.0.jar
.
Step 3: Run the JAR
To run the generated JAR, use the same java -jar
command:
Customizing the JAR Packaging
In both Maven and Gradle, you can further customize the JAR packaging, such as:
- Including additional resources: Add non-code files (like configuration files) to your JAR.
- Changing the main class: Specify a custom main class for the Spring Boot application.
- Enabling additional build tasks: Create custom build steps or modify the JAR creation process.
Example (Maven):
To specify a different main class for the application, you can modify the spring-boot-maven-plugin
configuration like this:
Example (Gradle):
In Gradle, you can specify the main class in the bootJar
task:
Conclusion
Packaging a Spring Boot application as a JAR file simplifies the deployment process by creating an executable JAR that contains all the necessary dependencies, application code, and resources. Whether you are using Maven or Gradle, Spring Boot offers seamless integration to handle the JAR packaging process.
To package your Spring Boot application:
- Maven: Use the
spring-boot-maven-plugin
in yourpom.xml
and runmvn clean package
. - Gradle: Use the
spring-boot
plugin in yourbuild.gradle
file and run./gradlew clean build
.
After building the JAR, you can run the application using the java -jar
command, making it easy to deploy your Spring Boot application across different environments.