Kann ich ein Maven-Profil dazu bringen, ein anderes zu aktivieren?

70

Ich habe 2 maven2 Profile, Selen und jspc. Jetzt für "Selen" möchte ich eine implizite Aktivierung von "jspc" haben, damit ich nicht mvn -Pselenium, jspc über die Kommandozeile schreiben muss. Ist das möglich ?

Krosenvold
quelle

Antworten:

92

Sie können Profilaktivierungen nicht " verketten " ( Maven-Referenz ), aber Sie können beide über dieselbe Eigenschaft aktivieren:

<activation>
  <property>
    <name>profile.selenium</name>
  </property>
</activation>

Und der Lauf mvn -Dprofile.selenium

Robert Munteanu
quelle
5
stackoverflow.com/a/2248552/253686 enthält weitere Informationen dazu, warum Sie nicht verketten können.
Bradley.ayers
Sie können die Aktivierung auch basierend auf Eigenschaften definieren, die NICHT vorhanden sind. Auf diese Weise können Sie sich gegenseitig ausschließende Profile erstellen (es sei denn, Sie erzwingen beide aktiv). ZB <Profil> <ID> Test-Standard </ ID> <Aktivierung> <Eigenschaft> <Name>! Profile.externalAndContractTests </ Name> </ Eigenschaft> </ Aktivierung> ...
RobertG
1
Für meinen Fall habe ich profile1Erweiterungen profile2erweitert profile3, so dass die oben genannten nicht funktionieren würden, da die Aktivierung nur eine Eigenschaft verwenden kann. Stattdessen verwende ich nur maven-enforcer-pluginmit requirePropertyund der Paste mvn install -Dprofile1,profile2,profile3innerhalb der requireProperty-> Nachricht. Holen Sie sich also jedes Mal mvn install profile3die Warnung, kopieren Sie die Ausgabenachricht und führen Sie sie erneut aus.
Ng Sek Long
@ bradley.ayers immer jemand, der versucht zu rechtfertigen, warum. Ich kann 100 Möglichkeiten sehen, dies umzusetzen. Suchen Sie einfach nach passenden Profilen und vereinheitlichen Sie sie.
mmm