De-activate a maven profile from command line

后端 未结 3 568
我在风中等你
我在风中等你 2021-01-31 13:09

I have a profile activated by default in my maven setting file ~/.m2/settings.xml.

Is it possible to deactivate it from the command lin

相关标签:
3条回答
  • 2021-01-31 13:56

    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. Refer Maven Doc

    Because ! Exclamation mark is a special character for most of the command line tools, you might need to escape it refer here.

    0 讨论(0)
  • 2021-01-31 14:03

    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'
    

    Or, as Shaun Morris suggested below, use - instead of !, but without whitespace between -P and the profiles:

    mvn groupId:artifactId:goal -P-profile-1,-profile2
    
    0 讨论(0)
  • 2021-01-31 14:06

    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
    
    0 讨论(0)
提交回复
热议问题