2016-04-21 4 views
1

Ich habe eine Eltern pom.xml mit Build/PluginManagement/Plugins/Plugin Abschnitt für maven-compiler-plugin. Es enthält eine Konfiguration, die auf der Eigenschaft ${targetJdk} beruht, die ebenfalls in der übergeordneten POM-Datei definiert ist.Funktioniert diese Eigenschaft in Maven3?

Und ich habe ein Kind pom.xml, die maven-compiler-plugin von Eltern verwendet. Aber die untergeordnete pom.xml überschreibt die Eigenschaft ${targetJdk} mit einem anderen Wert.

Parent:

<properties> 
    <targetJdk>1.8</targetJdk> 
</properties> 
<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>${targetJdk}</source> 
        <target>${targetJdk}</target> 
        <debug>true</debug> 
        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
        <fork>true</fork> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement>  
</build> 

Kind:

<properties> 
    <targetJdk>1.7</targetJdk> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

Die Frage ist also: wenn ich ein Kind Artefakt zu bauen, welche Eigenschaft Wert wird es verwendet?

+0

Es 'verwenden 1.7'. – Tunaki

+1

Ich erwarte es auch. Hast du das überprüft? – omickron

+0

Warum überschreibt das Kind es? – khmarbaise

Antwort

2

Wenn Sie das gleiche Plug-in und/oder die gleichen Eigenschaften in einem untergeordneten POM deklarieren, überschreiben Sie im Allgemeinen das übergeordnete Element.

Ihr Kind wird <targetJdk>1.7</targetJdk> verwenden.

Ich hoffe, das hilft.

2

für Sicherheit immer die effektive Pom

Hilfe: Effektiv-pom

+0

Großartig, danke! Ich bin mir jetzt sicher! – omickron