2011-11-10 14 views
14

Mam dwa profile, które są prawie identyczne. Zamiast duplikować konfigurację w każdym z nich, chciałbym, aby jeden profil "dziedziczył" od drugiego, ale nie widzę oczywistego sposobu, aby to zrobić przy użyciu maven 3.Czy profil maven może dziedziczyć z innego profilu maven?

Czy dziedziczenie profilu jest możliwe w przypadku maven?

Odpowiedz

16

Nie, profile nie mogą być dziedziczone.

Jednak możesz mieć wiele aktywnych profili, które pozwolą ci osiągnąć mniej więcej to samo, przez rozłożenie wspólnych elementów w dwóch profilach na trzeci profil, który aktywujesz za każdym razem, gdy aktywujesz jeden z dwóch pozostałych profili.

1

Ściśle mówiąc profile nie są dziedziczone w ten sposób, że profile zdefiniowane w macierzystej pompce nie są dostępne w zabawkach dla dzieci, zgodnie z dokumentacją. JEDNAK, właściwości i wbudowane wtyczki (nie pluginManagement), które są określone w rodzicach poms, mogą zostać aktywowane, a zatem zmodyfikować środowisko kompilacji dla potomnych poms. Na przykład jeśli mam rodzic pom A, która ma następującą sekcję anonse:

</profiles> 
     <profile> 
      <id>integrationTest</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <configuration> 
          <parallel>none</parallel> 
          <excludes> 
           <exclude>**/*Test.java</exclude> 
          </excludes> 
         </configuration> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-failsafe-plugin</artifactId> 
         <configuration> 
          <includes 
           <include>**/*IT.java</include> 
          </includes> 
          <!-- need to exclude nothing as it is possible that some by default some tests are excluded and we need to override that --> 
          <excludes> 
           <exclude>none</exclude> 
          </excludes> 
          <parallel>none</parallel> 
         </configuration> 
        </plugin>    
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

a potem pom dziecko B, która nie posiada wtyczki failsafe skonfigurowany w domyślnej kompilacji ale dziedziczy Pom za pośrednictwem nadrzędny tag, a następnie uruchomię "mvn clean install -P integrationTest" z katalogu pom dziecko, zajmie informacje wtyczki określone w A.

Powiązane problemy