If you use Spring Boot and Gradle, you might sometimes find yourself in a homicidal rage when looking stuff up in the Spring Boot Reference Manual and encounter lines like ‘or specify on the command line using the switch –spring.profiles.active=dev,hsqldb.‘ because command line switches don’t bloody work in Gradle.
You can overcome this problem by adding the parameters to you application.properties file and reverting it before commit. It is a terrible solution that should be tied up and shot with arrows.
Better yet, you can use this dirty little trick to provide your own properties and it works with the Gradle command line.
Let’s say you want to provide your own value to spring.profiles.active, all you need to do is capitalize the letters and change the dots to underscores and Spring Boot will pick up the change.
./gradlew bootRun --spring.profiles.active=dev,hsqldb
does nothing, but
SPRING_PROFILES_ACTIVE=dev,hsqldb ./gradlew bootRun
works like a charm.
The reason this works is that while Gradle won’t pass along system properties to Spring Boot, it does pass along environment variables. Spring Boot is able to pick up the environment variable when it resolves the property and the last ten months of changing property files by hand makes me look like a total and absolute moron.
You can use this mechanism to set server ports,
SERVER_PORT=9000 ./gradlew bootRun
Set your own properties
MY_SERVER_URL=http://www.springtoot.com/ ./gradlew bootRun
And specify the name of the config you want to use:
SPRING_CONFIG_NAME=killmenow ./gradlew bootRun
Yipikaye!