¿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.

Steven
fuente

Respuestas:

406

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

bmargulies
fuente
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.

Ingeniero de software
fuente
21

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

-Darguments="-DskipITs"
David Gilks
fuente
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.

idriss Eliguene
fuente
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>
Mfuon Leonard
fuente
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
Yannis Sermetziadis
fuente