This might very well be a duplicate of this question, but the answer there doesn't work.
In my POM file, I have several profiles defined similar to this:
<profiles>
<profile>
<id>dev</id>
<properties>
<activated-profile>dev</activated-profile>
</properties>
</profile>
...
</profiles>
activated-profile is a property used in the application.properties file to tell spring boot what profile to use:
...
spring.profiles.active=@activated-profile@
...
If I run mvn clean install package spring-boot:repackage -Pdev in a cmd prompt, I can see in the cmd prompt window The following profiles are active: dev, indicating that the correct profile is active.
If I try to launch and debug the app from Visual Studio Code, in the terminal I get The following profiles are active: @activated-profile@.
I tried setting args in launch.json:
{
...
"args": ["activated-profile=dev"],
"vmArgs": ["Dactivated-profile=dev"],
...
}
I also tried setting a custom environment variable for maven in settings.json, as well as the answer in the question which you will undoudbtedly tell me I duplicated:
{
...
"maven.executable.options": "-Pdev",
"maven.terminal.customEnv": [{
"environmentVariable": "activated-profile", "value": "dev"
}],
...
}
I also tried prepending activated-profile with -, --, D, -D or --D, as well as renaming activated-profile to activatedprofile in case the hyphen messes things up somehow.
Nothing works.
The only way I can get VS Code to start debugging is if I specify the default profile in the POM file:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
However, this is not ideal because everytime I want to build the app with a different profile, I have to remove that piece of code since maven, in it's infinite wisdom, decided not to override that profile if I specify it in the command line, rendering -Pdev or -Pint useless. In other words, if I want Jenkins to be able do build the app, the activeByDefault XML should not exist in the POM.