El otro día me salto un OutOfMemoryError al ejecutarse un test automático desde maven. Teóricamente, para evitar problemas de memoria con maven basta con poner la variable de entorno MAVEN_OPTS con los parámetros que le queremos pasar a la máquina virtual de java, en concreto, los de aumento de memoria
set MAVEN_OPTS=-Xmx512m
De hecho, tengo esa variable puesta por defecto en el entorno y estaba correctamente inicializada. Pero el OutOfMemoryException persiste. Así que a buscar en google.
Al final encuentro que maven arranca una máquina virtual java separada para ejecutar los test y que el parámetro MAVEN_OPTS sólo afecta a la máquina virtual en la que corre maven y no a la máquina virtual en la que se ejecutan los test. El plugin de maven que se encarga de ejecutar los test automáticos se llama maven-surefire-plugin y tiene su propia configuración. La variable argLine permite indicar, entre otras cosas, la cantidad de memoria que queremos que se asigne a la máquina virtual java en la que se ejecutan los test. Para ello, debemos ejecutar así
mvn -DargLine=-Xmx512m test
o bien, configurarlo en el mismo pom.xml del proyecto
<project>
<build>
<plugins>
…
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx512m</argLine>
</configuration>
</plugin>
de esas cosas que te pueden marear, bueno es saberlo
Gracias hermano, esa info ahorra muchos dolores de cabeza
Hola,
Esa opción es muy útil si quieres, por ejemplo, monitorizar tus tests o hacer profiling de ellos, para lo cual normalmente hay que activar JMX, como mínimo. No interesa tener siempre esta configuración, sólo durante la ejecución de los test. De ahí que sea independiente de MAVEN_OPTS.
Un saludo.