maven-2 surefire fork

maven 2 - Maven surefire plugin modo de horquilla



maven-2 fork (2)

Por defecto, el complemento seguro de archivo ejecuta las pruebas en un entorno aislado (bifurcado). Puede anular este comportamiento con la siguiente configuración:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkMode>never</forkMode> </configuration> </plugin> </plugins> </build>

Si necesita depurar sus pruebas, debe usar este fragmento de configuración. O simplemente puedes ejecutar maven build de la siguiente manera:

$ mvn -Dmaven.surefire.debug tests

Esto iniciará un depurador en el puerto 5005.

Mi pregunta es: ¿qué beneficios tiene la estrategia de forking y por qué se elige como estrategia predeterminada para la construcción de Maven? ¿La estrategia de no taladrado es más directa y, por lo tanto, se debe usar como predeterminada (maven es una herramienta de configuración más convencional)?


Mi pregunta es: ¿qué beneficios tiene la estrategia de forking y por qué se elige como estrategia predeterminada para la construcción de Maven?

De forma predeterminada, Surefire realiza las pruebas utilizando un JAR solo de manifiesto. En mi opinión, las principales ventajas son que:

  1. proporciona un entorno aislado con un classpath "correcto" de alguna manera.
  2. protege el propio proceso de Maven (lo cual es bueno, especialmente si Maven se está ejecutando incrustado en su IDE ).

¿La estrategia de no taladrado es más directa y, por lo tanto, se debe usar por defecto?

¿Directo para qué? ¿Fácil depuración dentro de un IDE? Creo que esa no era la intención inicial (y prefiero conectar un depurador remoto si es necesario y mantener seguro el proceso principal de Maven).

Ver también


el modo de bifurcación ayuda a cargar la ruta de clase del sistema si se establece en "verdadero" o "una vez". Pero a veces, establecer el modo de bifurcación = errores verdaderos como "línea de comando demasiado larga" o "hay fallas de prueba" si se usa el complemento maven-surefire 2.5. Para evitar este error, se recomienda utilizar forkmode = never whn using suefire plugin 2.5.