2013-09-05 2 views
19

Ist es möglich, Moduleigenschaften vom übergeordneten Pom zu überschreiben, ohne das Modul pom zu ändern?Überschreiben von Moduleigenschaften vom übergeordneten POM in Maven

Zum Beispiel:

Modul pom (ich kann es nicht ändern):

<properties> 
    <someProperty>some value to be replaced</properties> 
</properties> 

Mutter pom:

<properties> 
    <someProperty>strongValue</someProperty> <!-- some magic here --> 
</properties> 

wirksame Modul pom:

<properties> 
    <someProperty>strongValue</someProperty> 
</properties> 

Wenn ja, wie geht das?

Antwort

8

Ich weiß nur, um dies sicher zu tun ist, die Eigenschaft in der Befehlszeile zu definieren, z. mvn -DsomeProperty=strongValue <mvn goals/phases here>.

Sie könnten mit Profilen experimentieren, die im Eltern definiert sind; Ich vermute, das wird nicht helfen.

+1

thx, aber ich muss es von der Eltern POM überschreiben, nicht von der Kommandozeile (als Frage angegeben) – zacheusz

+1

Ich denke, Sie sind dann Pech gehabt. – user944849

+1

Das Definieren von Eigenschaften in einem Profil im übergeordneten Element und das Aktivieren des Profils scheinen die Eigenschaften im untergeordneten Projekt nicht zu aktivieren. –

8

Nein, das geht nicht. Die Idee ist, dass, wenn es nicht möglich sein sollte, einen Wert zu überschreiben, keine Eigenschaft verwenden. Wenn Sie keine andere Option haben, können Sie sie mit http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html erzwingen, wodurch der Build unterbrochen wird, wenn eine Eigenschaft einen anderen Wert als erwartet aufweist.

+1

Was meinst du, du kannst nicht? Wir machen das die ganze Zeit und es funktioniert. Natürlich können Sie Eltern Pom Eigenschaften überschreiben. Ich habe gerade mein Elternpaar nach einem Projekt gefragt, wo ich genau das gemacht habe, weil du mich zweifeln ließest. Und es funktioniert. Mein effektiver Pom zeigt den überschriebenen Wert an. – Lawrence

+2

Ich denke, du hast die Frage missverstanden. Versuchen Sie es wie folgt zu lesen: Kann eine Eigenschaft endgültig sein (wie in Java), so dass sie nicht von einem Kind überschrieben werden kann? Auf diese Frage lautet die Antwort "Nein". –

Verwandte Themen