È possibile impostare le opzioni Java per Maven in diversi punti e livello (a livello globale o tramite configurazione plugin):
configurazione del plugin: solo per Compilation
Utilizzando la configurazione Maven Compiler Plugin per la compilazione del codice dell'applicazione e il codice di prova, è possibile impostare le opzioni Xmx, Xms, Xss richieste tramite la voce di configurazione compileArgs
, disponibile per entrambi gli obiettivi compile e testCompile. Un esempio ufficiale è disponibile here e su altre risposte SO come this one.
Un esempio è mostrato di seguito sul terzo punto.
configurazione del plugin: solo per le prove di esecuzione
Utilizzando la configurazione Maven Surefire Plugin per test esecuzioni, è possibile impostare le opzioni Java che devono essere utilizzate in fase di esecuzione tramite la voce di configurazione argLine
del test obiettivo. Un esempio ufficiale è disponibile here.
Un esempio è mostrato di seguito sul terzo punto.
configurazione del plugin: via Properties (e profili)
è possibile combinare le due opzioni di cui sopra (in caso di opzioni Java comuni) come valore della proprietà di passare sia voce di configurazione compileArgs
e argLine
o hanno proprietà diverse per configurazione (in base alle tue esigenze).
<property>
<jvm.options>-Xmx256M</jvm.options>
</property>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<compilerArgs>
<arg>${jvm.options}</arg>
</compilerArgs>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>${jvm.options}</argLine>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
Uso delle proprietà ti dà anche un due vantaggi in più (in cima accentramento): è possibile utilizzare profiles poi di personalizzarlo in base a diversi comportamenti desiderati (e l'esempio in this SO answer) e li si può ignorare tramite linea di comando pure, come:
mvn clean install -Djvm.options=-Xmx512
configurazione globale/progetto: il file opzioni
Dal Maven 3.3.1, è possibile specify le opzioni in un file .mvn/jvm.config
per progetto. È un'alternativa a MAVEN_OPTS e un ambito più ristretto (per progetto). Tuttavia, poiché si tratta di una nuova funzione di Maven, le persone dovrebbero esserne a conoscenza, altrimenti la risoluzione dei problemi e la manutenzione potrebbero risentirne.
configurazione globale/Env: MAVEN_OPTS
Maven variabile well-known ambiente per impostare opzioni di esecuzione globali, ma applicata a tutti Maven build scambio che ambiente (cioè per ogni utente connesso).
Quando si esegue Maven utilizza l'opzione -X
(debug abilitato), si avrà il seguente output come parte della vostra generazione:
[DEBUG] properties used {java.vendor=Oracle Corporation, ... , env.MAVEN_OPTS=-Xmx256M, ...
Aggiornamento
Dopo tutto, il eseguito mvn
di comando è uno script del sistema operativo. Dando un'occhiata a Windows, ho trovato la possibilità di usare l'opzione MAVEN_BATCH_ECHO
che, se abilitata (valore impostato su on
), farà eco a qualsiasi comando eseguito dallo script e come tale anche l'invocazione del comando java
, dove è possibile verificare se le opzioni (MAVEN_OPTS
) vengono rilevate correttamente insieme all'elenco completo dei parametri passati.
Ecco un'esecuzione ho testato su Windows:
set MAVEN_BATCH_ECHO=on
set MAVEN_OPTS=-Xmx256M
mvn compile > output.txt
NOTA: il output.txt
conterrà un bel po 'di testo, fornendo ulteriore costruire echo
s esecuzioni di uscita e. Come parte di esso, ha fornito:
>"path_to_\jdk1.7\bin\java.exe" -Xmx256M -classpath "path_to\apache-maven-3.1.1\bin\..\boot\plexus-classworlds-2.5.1.jar" "-Dclassworlds.conf=path_to\apache-maven-3.1.1\bin\..\bin\m2.conf" "-Dmaven.home=path_to\apache-maven-3.1.1\bin\.." org.codehaus.plexus.classworlds.launcher.Launcher compile
Come si può vedere, l'opzione -Xmx256M
è stato preso in modo corretto. Se lo script Maven per altri SO non fornisce questa opzione, puoi semplicemente aggiungerlo allo script (un semplice echo
prima che l'esecuzione di java
, mostrando il comando, sia anche sufficiente).
È possibile trovare lo script maven nella cartella di installazione di Maven, sotto la sottocartella bin
.
Update2
Inoltre, dal momento che Maven è uno strumento di Java, dopo tutto e come si può vedere dalla sua scrittura si invoca il comando java, si poteva vedere tutte le opzioni disponibili come suggerito in questo SO answer leggermente cambiando lo script Maven e utilizzare il comando jinfo
che dovrebbe davvero dare la risposta in base a questo altro SO answer.
Possibile duplicato di [Come stampare l'effettivo MAVEN \ _OPTIONS che si sta utilizzando?] (Http://stackoverflow.com/questions/3167364/how-to-print-the-actual-maven-options-that- sono-essere-usati) – Tunaki
Sei interessato solo a vedere come controllare quali opzioni usate da Maven o anche in altri modi di impostazioni le stesse opzioni? –
sì Sono anche interessato ad altri modi, grazie – Vituel