¿Cómo puedo obtener maven-release-plugin para omitir mis pruebas?


177

¿Cómo puedo hacer que el complemento maven-release se ejecute sin activar las pruebas?

Yo he tratado

-Dmaven.test.skip=true 

y

-DskipTests 

y

-DpreparationGoals=clean

... pero ninguno funciona.

Sí, sé que no debería liberar si las pruebas no pasan, pero no tengo control sobre cómo hacer que mis compañeros escriban pruebas confiables.

Respuestas:


406

-Darguments="-DskipTests" es lo que desea, o configurar explícitamente las ejecuciones bifurcadas en el pom.


1
A mí me funciona, gracias y +1 pero ... ¿Qué es esto necesario?
javamonkey79

55
Es necesario porque el proceso de lanzamiento bifurca un nuevo proceso maven, y los tpical -DskipTests no se pasan como propiedades del sistema.
Eddie

44
Ojalá pudiera votarte 2. Pasé horas tratando de hacerlo bien ... pero 1. ¿Me perdí algo en la documentación o falta algo en la documentación de mvn? 2. Había <skipTests>true</skipTests>configurado en mi empresa POM. Todavía no funcionó. Lo que funcionó fue tu solución.
Pulak Agrawal

¿Necesita alguna configuración específica en el pom para que esto funcione?
DenCowboy

42

-Darguments="..."pasa argumentos al proceso bifurcado maven, pero es importante darse cuenta de que aquí se utilizan dos interruptores diferentes. Las -DskipTestsfuerzas obligan a no ejecutar ninguna prueba, pero las pruebas aún se compilan (esto es importante si tiene alguna dependencia en un tipo de prueba-jar). Las -Dmaven.test.skip=truefuerzas requieren que ni siquiera compilen las pruebas, lo que significa que no se generarán frascos de prueba.

Por lo tanto, debe usar -Darguments, pero para omitir las pruebas en ejecución, use solo skipTests, para detener su compilación maven.test.skip.


21

Si solo quiere omitir las pruebas de integración, esto lo hará:

-Darguments="-DskipITs"

3

tiene opciones muy diferentes para evitar y omitir pruebas con el complemento de lanzamiento

  • El primero es pasar como argumento en cli al objetivo o fases de lanzamiento proporcionando un -Dargumentos:

ejemplo: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-El segundo es realizar estos argumentos en su pom.xml en la compilación de esta manera:

<plugin>    
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <preparationGoals>clean validate</preparationGoals>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release-mode</releaseProfiles>
                    <tagNameFormat>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

Tenga en cuenta que el segundo método anula el primero.

Le recomendé que prepare el lanzamiento primero en una sola acción y luego puede editar el archivo release.properties en el director de trabajo y ver las exec.additionalArgumentspropiedades si sus argumentos están allí. Se parece a: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

Después de que pueda realizar el lanzamiento.


2

Para omitir la prueba unitaria completa, utiliza argumentos

-Dmaven.test.skip = true

así que si quieres saltarte la prueba de la Unidad esto resolverá

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

o también puede definir skipTests en maven-surefire-plugin en

pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12.4</version>
      <configuration>
         <skipTests>true</skipTests>
      </configuration>
</plugin>

2
Esta pregunta es específicamente sobre el complemento de lanzamiento de Maven, por lo que estos no son los objetivos de Maven que se utilizarán.
Jaap

-2

Ningún complemento de Maven literalmente activa la compilación o ejecución de pruebas. Son las fases del ciclo de vida de Maven las que desencadenan la ejecución de uno o más complementos, cuando estos tienen objetivos limitados a una fase específica.

Por lo tanto, solo ejecutar un solo objetivo de complemento sería suficiente sin ejecutar pruebas:

mvn release:perform

o combinar con la construcción y empaque del proyecto:

mvn clean package release:perform
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.