Deaktivieren Sie ein Maven-Profil über die Befehlszeile

74

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
Kalbater
quelle

Antworten:

119

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-2

Dies 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'
GPI
quelle
28
Diese Lösung funktioniert, aber wir müssen dem '!' Zeichen auf Linux-Terminal: mvn groupId:artifactId:goal -P \!profile-name
Calfater
@Calfater: In der Tat ist es wert, den ursprünglichen Beitrag zu bearbeiten.
GPI
Der Fluchtcharakter hat mich umgebracht ... in Windows hat einwandfrei funktioniert Danke.
cabaji99
1
@Calfater hatte auch Probleme mit der Verwendung von Ausrufezeichen zsh. Ich habe nur -Pzwischen einfache Anführungszeichen wie dieses gesetzt:-P '!dev'
Kirill
@Derp: einfache Anführungszeichen deaktivieren die Interpolation von zsh / bash / ... Danke für den Trick.
Calfater
31

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
Shaun Morris
quelle
Gleiches gilt für Linux (MacOS ist ein UX-basiertes Betriebssystem)
Mirec
Wie unter Windows ist das Zeichen
5

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 .

SparkOn
quelle
6
Sie haben Recht, dass beim Aktivieren eines Profils durch -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>
GPI
Die geänderten Dokumente -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 "
Jacob van Lingen
Vielen Dank für die aktuellen Informationen. Ich weiß nicht, wie lange sich das geändert hat. @SparkOn: Dies ändert den Gültigkeitsbereich Ihrer Antwort. Sie möchten ihn möglicherweise bearbeiten, um dies widerzuspiegeln.
GPI