dszopa
dszopa

Reputation: 325

How to create a gradle task that will execute bootRun with a specific profile?

I essentially want to create a task in gradle that executes the command

gradle bootRun -Dspring.profiles.active=test

This command does exactly what I want it to do if executed from the command line but I have had no luck trying to use type:Exec on a task and also no luck passing in System properties

I don't really want to make this into an external command that the user needs to know about to run. I would like it to show up under tasks/other.

My closest attempt so far:

task bootRunTest() {
    executable "gradle"
    args "-Dspring.profiles.active=test bootRun"
 }

Upvotes: 8

Views: 10533

Answers (3)

Rothin Sen
Rothin Sen

Reputation: 484

You can also do it by setting the OS variable, SPRING_PROFILES_ACTIVE, to the specific profile.

For eg:

SPRING_PROFILES_ACTIVE=dev gradle clean bootRun

Upvotes: 2

Zergleb
Zergleb

Reputation: 2312

Here is how you set the properties for the task you wish to run, in this case bootRun

add inside of Build.gradle

bootRun {
        systemProperty "spring.profiles.active", "test,qa,ect"
}

Then from the command line

gradle bootRun

Upvotes: 2

dszopa
dszopa

Reputation: 325

The task I was trying to create wound up being this:

task bootRunTest(type: org.springframework.boot.gradle.run.BootRunTask, dependsOn: 'build') {
    group = 'Application'
    doFirst() {
        main = project.mainClassName
        classpath = sourceSets.main.runtimeClasspath
        systemProperty 'spring.profiles.active', 'test'
    }
}

Upvotes: 5

Related Questions