A Comprehensive Guide to Running bootRun with Spring Profiles via Gradle Tasks

Nov 23, 2025 · Programming · 11 views · 7.8

Keywords: Spring Boot | Gradle | Profile Management | bootRun Task | Build Configuration

Abstract: This article provides an in-depth exploration of configuring and executing bootRun in Spring Boot projects with specific Spring Profiles activated through Gradle tasks. Based on Spring Boot official documentation and best practices, it systematically introduces the method of using --args parameter to pass Profile configurations, and compares alternative approaches such as environment variable settings and system property configurations. Through detailed code examples and configuration explanations, it helps developers understand the Profile management mechanism when integrating Gradle with Spring Boot, enabling flexible deployment across different environments.

Introduction

In Spring Boot application development, the Profile mechanism is a core feature for isolating configurations across different environments. Managing Spring Profile activation through the Gradle build tool can significantly improve efficiency in development, testing, and production deployment. This article delves into how to configure bootRun via Gradle tasks to activate specific Profiles and discusses related best practices.

Passing Profile Configuration Using --args Parameter

According to the Spring Boot official documentation, starting from Gradle 4.9, command-line arguments can be passed to the bootRun task using the --args parameter. This method is straightforward and aligns with Gradle's design philosophy, allowing dynamic specification of active Profiles without modifying the build script.

Example command:

$ ./gradlew bootRun --args='--spring.profiles.active=dev'

This command starts the Spring Boot application and activates the Profile named dev. To activate multiple Profiles, separate them with commas:

$ ./gradlew bootRun --args='--spring.profiles.active=dev,test'

The advantage of this approach lies in its simplicity and flexibility, enabling direct specification of Profiles via the command line without pre-modifying the Gradle build script.

Analysis of Alternative Approaches

Besides using the --args parameter, there are several other methods to set Spring Profiles in Gradle.

Environment Variable Configuration

Spring Boot supports specifying active Profiles through the environment variable SPRING_PROFILES_ACTIVE. On Unix-like systems, use the following command:

SPRING_PROFILES_ACTIVE=test gradle clean bootRun

On Windows systems, set it in steps:

SET SPRING_PROFILES_ACTIVE=test
gradle clean bootRun

This method relies on the operating system's environment variable mechanism and is suitable for use in CI/CD pipelines or containerized deployments.

Gradle Task Configuration

Another common approach is to define custom tasks in the Gradle build script that pass Profile configurations via system properties or arguments. For example, define a task to set a system property:

task setDevProperties {
    doFirst {
        System.setProperty('spring.profiles.active', 'dev')
    }
}

Then ensure it executes before bootRun via task dependencies:

bootRun.dependsOn setDevProperties

Alternatively, set arguments directly in the bootRun configuration:

bootRun {
    args = ["--spring.profiles.active=dev"]
}

This method is suitable for固化 certain environment configurations in the build script but offers less flexibility.

Conditional Configuration Based on Project Properties

For more complex multi-environment management, apply different configuration scripts conditionally using Gradle project properties. For example:

if (project.hasProperty('prod')) {
    apply from: 'gradle/profile_prod.gradle'
} else {
    apply from: 'gradle/profile_dev.gradle'
}

In each configuration file, define specific bootRun behaviors:

// profile_dev.gradle
bootRun {
    systemProperty "spring.profiles.active", "dev"
}

Use -Pprod at runtime to activate the production environment configuration.

Technical Details and Considerations

When using the above methods, consider the following points:

Conclusion

There are multiple methods to manage Spring Profile activation via Gradle, with using the --args parameter being the most direct and recommended approach, especially for development scenarios requiring frequent Profile switches. Environment variable configuration suits automated deployments, while custom tasks and conditional configurations fit projects with complex structures. Developers should choose the appropriate method based on specific needs and follow Gradle and Spring Boot best practices to ensure maintainability and flexibility in the build process.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.