2012-02-14 11 views
7

¿Es posible ejecutar una compilación de prueba maven (mvn clean test) en un proyecto maven de varios módulos y omitir/ignorar la prueba de un módulo en particular? como -Dmaven.test.skip=true pero para un módulo particular y no para todos los módulos? No quiero cambiar el seguro <configuration> para incluir <skipTests>true</skipTests> para el módulo que quiero omitir para las pruebas. Quería saber si esto se puede hacer desde la línea de comandos. Lo necesito porque en mi proyecto tengo muchos módulos y una o dos tomas en particular son muy largas para ejecutar la prueba, así que cuando quiero probar solo dos módulos, me gustaría omitir estos módulos de tiempo que no he usado. hizo algún cambio.Ignora un módulo durante la construcción de prueba maven para el proyecto maven de varios módulos

+1

Sí. Necesita leer en [perfiles de maven] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) –

Respuesta

5

¿Es realmente un problema para usted cambiar la configuración del plugin surefire? Ya que podría cambiarlo por una sola vez en el módulo ...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip.foo.module.tests}</skipTests> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

... y delegar el valor verdadero/falso de la etiqueta skipTests a una propiedad experto, activado por un perfil específico:

<properties> 
    <skip.foo.module.tests>false</skip.foo.module.tests> 
</properties> 

<profiles> 
    <profile> 
     <id>SKIP_FOO_MODULE_TESTS</id> 
     <properties> 
      <skip.foo.module.tests>true</skip.foo.module.tests> 
     </properties> 
    </profile> 
</profiles> 

Así que usted podría desactivar las pruebas de módulo de Foo con la línea de comandos:

mvn ensayo limpio -P SKIP_FOO_MODULE_TESTS

+0

Gracias Yanflea. Aunque esto no era exactamente lo que quería, pero esto funciona para mí. Con este enfoque puedo tener un perfil a la vez, por lo que en caso de que quiera saltear pruebas para más de un módulo, no puedo. Pero de todos modos eso sería poco demasiado. – Jay

+0

Sus módulos pueden compartir el mismo pom principal, en el que define sus perfiles. ¿Qué le impide usar el mismo perfil para omitir las pruebas en varios módulos secundarios al mismo tiempo? – Yanflea

+0

Eso funcionará solo si quiero omitir los mismos módulos todo el tiempo. Cuando estoy desarrollando, en algún momento cambio al módulo-1, que no afecta al módulo-7 y al módulo-9, por lo que me gustaría omitir esos, pero en otro momento si realizo cambios en el módulo-3, lo que afecta módulo-7, pero no módulo-9, en ese caso me gustaría omitir solo el módulo-9. Para tales escenarios, compartir perfiles en el padre no funcionará. Ahora no quiero contaminar mi pom padre con todo tipo de perfiles omitiendo pruebas para diferentes módulos y combinaciones. – Jay

0

Puede lograr eso con un perfil que tenga la configuración de seguridad para omitir. Eso le permitiría mantener la prueba ejecutándose la mayor parte del tiempo, pero cuando alguna vez deseaba omitir las pruebas para uno de los módulos, podía invocar ese perfil. A continuación, puede excluir todas las pruebas mediante las pruebas de omisión o puede usar la opción de exclusión para excluir solo una o dos pruebas que se ejecutan durante mucho tiempo.

Cuestiones relacionadas