2011-09-23 13 views
10

Me preguntaba si es posible especificar límites de memoria Maven con una sintaxis similar a:parámetro de memoria Especificación de Maven sin establecer la variable entorno MAVEN_OPTS

mvn -Dtest=FooTest -DXmx=512M clean test 

he intentado un par de variaciones hasta ahora, sin éxito.
Conozco la variable de entorno MAVEN_OPTS, pero me gustaría evitar eso.

relacionada a la pregunta anterior, sería bueno saber si hay la posibilidad de especificar el comportamiento de la memoria de la segura plug-in de manera similar, por lo que se bifurca la JVM utilizando la cantidad de memoria reemplazado (con el tiempo anulando el parámetro <argLine> en la configuración del plugin pom, si está presente)

Respuesta

7

Puede configurar el plugin surefire para usar más memoria. Eche un vistazo en Strange Maven out of memory error.

actualización: Si desea establecer el parámetro de línea de comandos echar un vistazo a {{}} mvn.bat (shell script o {{}} MVN) en el directorio de instalación experto. Se usa con opciones adicionales especificadas en la línea de comando.

La siguiente posibilidad es establecer surefire-plugin y usar las propiedades especificadas en la línea de comandos, p. Ej. mvn ... -Dram=512

y

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <forkMode>once</forkMode> 
     <argLine>-Xms${ram}m -Xmx${ram}m</argLine> 
    </configuration> 
</plugin> 
+1

hola amra, gracias por su respuesta. Como mencioné en mi publicación, estoy interesado en especificar la configuración de la memoria como argumentos para el comando mvn. Tanto para mvn en sí mismo, o sea, el complemento de surfire, si es posible. Cheers – Ghiro

+0

Ver mi actualización ... – amra

31

Para especificar el máximo de memoria (no a través MAVEN_OPTS conforme a lo solicitado originalmente) se puede hacer lo siguiente:

mvn clean install -DargLine="-Xmx1524m" 
+3

Esto no es verdad. Si usa un [jvisualvm] (https://visualvm.java.net/), que incluso ya tiene en su JDK (en el directorio bin), verá que el argumento no se aplica en la JVM, sino como una propiedad del sistema argLine = -Xmx1524m. – user2241895

+0

Esto no es cierto, 'argLine' solo afecta un proceso bifurcado creado para ejecutar pruebas (Surefire), no el proceso real utilizado para hacer compilaciones, etc. Considerando que' MAVEN_OPTS' afecta a todo. – Kidburla

Cuestiones relacionadas