2016-01-12 15 views
5

Come posso trovare quali opzioni Java (Xmx, Xms, Xss, ecc.) Vengono utilizzate da Maven?Trova le opzioni Java utilizzate da Maven

Ho scoperto che un modo per impostare è tramite l'ambiente MAVEN_OPTS. Ora voglio un modo per essere sicuro che stia ottenendo le giuste impostazioni.

EDIT: Credo che sia diverso da this question perché non voglio vedere il valore di una variabile di ambiente. Voglio piuttosto vedere quali impostazioni vengono effettivamente utilizzate da Maven, sia che provenga da un file env var, settings.xml o altri mezzi.

EDIT2: Sono anche interessato a altri modi di impostazione delle opzioni Java per un Maven costruire

+0

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

+0

Sei interessato solo a vedere come controllare quali opzioni usate da Maven o anche in altri modi di impostazioni le stesse opzioni? –

+0

sì Sono anche interessato ad altri modi, grazie – Vituel

risposta

0

forse aiuta ad iniziare Maven con output di debug verbose (-debug, credo?). Altrimenti basta fare un ps aux | grep java e controllare gli argomenti del processo (supponendo * nix).

8

È 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.