Ich habe standardmäßig ein Profil in meiner Maven-Einstellungsdatei ~ / .m2 / settings.xml aktiviert .
Ist es möglich, es über die Befehlszeile zu deaktivieren, indem Sie Folgendes tun:
mvn -P!profileActivatedByDefault
Antworten:
Ja, Sie haben den richtigen Weg. Aus dem Benutzerhandbuch für Maven-Profile
Profil deaktivieren
Ab Maven 2.0.10 können ein oder mehrere Profile über die Befehlszeile deaktiviert werden, indem ihrem Bezeichner entweder das Zeichen '!' Vorangestellt wird. oder '-' wie unten gezeigt:
mvn groupId:artifactId:goal -P !profile-1,!profile-2Dies kann verwendet werden, um Profile zu deaktivieren, die als activeByDefault markiert sind, oder Profile, die andernfalls über ihre Aktivierungskonfiguration aktiviert würden.
Wie von @Calfater in den Kommentaren angegeben, muss das Ausrufezeichen in den meisten Shells (bash, zsh und andere unter Linux und MacOS) maskiert werden, jedoch nicht in der Windows-Befehlszeile.
Die Escape-Mechanismen sind Shell-abhängig, aber normalerweise können Sie Folgendes tun:
mvn groupId:artifactId:goal -P \!profile-1
Oder
mvn groupId:artifactId:goal -P '!profile-1'
zsh. Ich habe nur -Pzwischen einfache Anführungszeichen wie dieses gesetzt:-P '!dev'
Auf einem Mac wurde beim Versuch, '!'
mvn groupId:artifactId:goal -P!profile-1
-bash: !profile: event not found
Folgendes funktioniert mit dem '-':
mvn groupId:artifactId:goal -P-profile1
Alternativ können Sie Folgendes tun:
mvn groupId:artifactId:goal -P\!profile1
Ab Maven 2.0.10 können ein oder mehrere Profile über die Befehlszeile deaktiviert werden, indem ihrem Bezeichner entweder das Zeichen '!' Vorangestellt wird. oder '-' wie unten gezeigt:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
Dies kann verwendet werden, um Profile zu deaktivieren, die als activeByDefault markiert sind, oder Profile, die andernfalls über ihre Aktivierungskonfiguration aktiviert würden. Siehe Maven Doc
Da das !Ausrufezeichen für die meisten Befehlszeilentools ein Sonderzeichen ist, müssen Sie es möglicherweise hier verweisen .
-Pandere Profile (z. B. activeByDefaultoder <Aktivierung>) ignoriert werden. Wenn Sie jedoch nur / ausschließlich die Deaktivierungssyntax ( !Präfix) verwenden, werden diese Profile nur deaktiviert und die Deklarationen activeByDefaultoder<activation>
-Pfügen jetzt zusätzlich zu den ActiveByDefault-Profilen die Profile hinzu: "Diese Option verwendet ein Argument, das eine durch Kommas getrennte Liste der zu verwendenden Profil-IDs ist. Wenn diese Option angegeben ist, werden die in der Option angegebenen Profile angegeben Argument wird zusätzlich zu allen Profilen aktiviert, die durch ihre Aktivierungskonfiguration oder den Abschnitt <activeProfiles> in settings.xml aktiviert werden "
mvn groupId:artifactId:goal -P \!profile-name