2011-03-26 10 views
27

Tengo algunos plugins de Maven configurados en mi pom.xml. Solo quiero ejecutar estos complementos si las pruebas se están ejecutando (las pruebas se pueden omitir usando -Dmaven.test.skip=true o -DskipTests).ejecutar condicionalmente los plugins de maven

Uno de estos complementos está vinculado a la fase del ciclo de vida de compilación process-classes y el otro está vinculado a la fase pre-integration-test.

+0

Tuve una situación similar en la que quería tener un complemento _ (tomcat7-maven -plugin) _ disponible para su uso en desarrollo local, pero no se hace referencia en una compilación CI _ (TeamCity, utilizando solo artefactos aprobados de un repositorio de Artifactory) _. Agregué un elemento 'profile' con' id = localhost-server' según lo sugerido por @tenshi, pero excluí el elemento 'activation'. Luego agregué un elemento 'activeProfile' a mi' settings.xml' para que solo estuviera activo en mi entorno local. –

+0

Por favor, mira mi publicación con un ejemplo detallado. http://stackoverflow.com/questions/7513319/maven-command-line-arguments/33807842#33807842 – Abhishek2k6

Respuesta

38

Puede usar el perfil con condiciones especiales de activación de esta manera:

<project> 
    ... 
    <profiles> 
    <profile> 
     <id>my-test-plugins</id> 

     <activation> 
     <property><name>!maven.test.skip</name></property> 
     <property><name>!skipTests</name></property> 
     </activation> 
     <build> 
     <plugins> 

     <!-- define your plugins here --> 

     </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 

Más información se puede encontrar aquí:

http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html

+0

Gracias por el enlace al libro de Maven. Realmente útil para aprender más allá de lo que se preguntó/respondió aquí. –

+3

¿Cómo uso las condiciones IF sin usar perfil, ya que no son adecuadas para mí? Básicamente, tengo un conjunto de perfiles para todo el proyecto. Para un submódulo, necesito elegir la configuración para el complemento aspect-j basado en el perfil actual. ¿Cómo puedo hacer eso con el modelo propuesto, no estoy seguro ... – Zorkus

+1

¿Esto realmente funciona? Parece que solo puede tener un elemento dentro de . – Marplesoft

-2

el último ejemplo sólo funcionaba cuando me puse también valor:

<property> 
    <name>wsdl2java</name> 
    <value>true</value> 
</property> 
+1

Esto no es ** una respuesta a la pregunta original. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – DavidPostill

Cuestiones relacionadas