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 ?

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.