I have a profile activated by default in my maven setting file ~/.m2/settings.xml.
Is it possible to deactivate it from the command line by doing something like this:
mvn -P!profileActivatedByDefault
I have a profile activated by default in my maven setting file ~/.m2/settings.xml.
Is it possible to deactivate it from the command line by doing something like this:
mvn -P!profileActivatedByDefault
Yes indeed, you have the right way. From maven profiles user guide
Deactivating a profile
Starting with Maven 2.0.10, one or more profiles can be deactivated using the command line by prefixing their identifier with either the character '!' or '-' as shown below:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
This can be used to deactivate profiles marked as activeByDefault or profiles that would otherwise be activated through their activation config.
As noted by @Calfater in the comments, the exclamation mark needs to be escaped in most shells (bash, zsh, and others on Linux and MacOS), though not on the windows command line.
The escape mechanisms are shell-dependant, but usually you can do :
mvn groupId:artifactId:goal -P \!profile-1
Or
mvn groupId:artifactId:goal -P '!profile-1'
On a Mac, I got the following error attempting to use '!'
mvn groupId:artifactId:goal -P!profile-1
-bash: !profile: event not found
Doing the following works with the '-':
mvn groupId:artifactId:goal -P-profile1
Alternatively you can do:
mvn groupId:artifactId:goal -P\!profile1
mvn groupId:artifactId:goal -P profile-1,profile-2
Maven Doc says -This option takes an argument that is a comma-delimited list of profile-ids to use. When this option is specified, no profiles other than those specified in the option argument will be activated.
That means the with these commands only those profile specified in the arguments will act as an active profile