2011-09-23 9 views
10

Mi chiedevo se è possibile specificare i limiti di memoria Maven con una sintassi simile a:parametro di memoria Specifica Maven senza impostare MAVEN_OPTS variabile di ambiente

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

ho provato un paio di variazioni fino ad ora, senza successo.
Sono consapevole della variabile di ambiente MAVEN_OPTS, ma vorrei evitarlo.

correlati alla domanda di cui sopra, sarebbe bello sapere se c'è la possibilità di specificare il comportamento della memoria del infallibile plug in un modo simile, in modo che si biforca la JVM utilizzando la quantità di memoria sovrascritto (alla fine sovrascrivere il parametro <argLine> nella configurazione del plugin pom, se presente)

risposta

7

È possibile configurare il plugin surefire per utilizzare più memoria. Dai uno sguardo allo Strange Maven out of memory error.

Aggiornamento: Se si desidera impostare il parametro da riga di comando un'occhiata su {{mvn.bat}} (o {{}} mvn script di shell) nella directory di installazione Maven. Utilizza con opzioni aggiuntive specificate nella riga di comando.

La prossima possibilità è di impostare il plugin surefire e utilizzare le proprietà specificate in riga di comando, ad es. mvn ... -Dram=512

e

<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

ciao amra, grazie per la tua risposta. Come accennato nel mio post, sono interessato a specificare l'impostazione della memoria come argomento del comando mvn. Sia per mvn stesso, o il plugin per il surf, se possibile. Cheers – Ghiro

+0

Vedere il mio aggiornamento ... – amra

31

Per specificare la memoria massima (non tramite MAVEN_OPTS come inizialmente richiesto), è possibile effettuare le seguenti operazioni:

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

Questo in realtà non è vero. Se usi un [jvisualvm] (https://visualvm.java.net/), che hai già nel tuo JDK (sotto la directory bin), vedrai che l'argomento non è applicato sulla JVM, ma come un proprietà di sistema argLine = -Xmx1524m. – user2241895

+0

Questo non è vero, 'argLine' ha effetto solo su un processo biforcuto creato per eseguire test (Surefire), non sul processo effettivo usato per compilare ecc. Considerando che' MAVEN_OPTS' ha effetto su tutto. – Kidburla

Problemi correlati