2011-11-10 12 views

Respuesta

16

No, los perfiles no se pueden heredar.

Sin embargo, puede tener varios perfiles activos, lo que podría permitirle realizar más o menos lo mismo dividiendo los elementos comunes en los dos perfiles en un tercer perfil que active cada vez que active uno de los otros dos perfiles.

1

Estrictamente hablando, los perfiles no se heredan porque los perfiles definidos en un pom padre no están disponibles en los poms secundarios, según la documentación de maven. SIN EMBARGO, las propiedades y los complementos de compilación (no pluginManagement) que se especifican en los poms principales pueden activarse y, por lo tanto, modificar el entorno de compilación para los poms secundarios. Por ejemplo si tengo un pom matriz A, que tiene la sección siguiente perfiles:

</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> 

Y luego un pom niño B que no tiene el plugin configurado a prueba de fallos en la construcción defecto, pero se hereda de un pom a través de la la etiqueta principal y luego ejecuto 'mvn clean install -P integrationTest' desde el directorio child pom, tomará la información del complemento especificado en A.

Cuestiones relacionadas