So steuern VM Argumente für Maven-Anlegesteg-Plugin?
-
18-09-2019 - |
Frage
Wie VM Argumente für Jetty setzen läuft von Maven-Anlegesteg-Plugin?
Zum Beispiel, ich brauche -Xmx
Argumente Jetty vom mvn jetty:run
Befehl ausführen zu übergeben.
Lösung
Die Umgebungsvariable MAVEN_OPTS ist die Antwort. Das String-Gehalt von MAVEN_OPTS wird weitergegeben JVM (java.exe).
- Linux: in Schale-Typ
export MAVEN_OPTS=....
- Fenster: in der Schale (cmd.exe) Typ
set MAVEN_OPTS=...
Zum Beispiel:. Auf Windows set MAVEN_OPTS="-Xmx1024m"
setzt die Heap-Größe des Maven Prozesses 1024mb
Aktualisieren (01.04.2013):. Direkt direkt an Jetty
Matthew Farwell (bitte upvote seine Antwort ihm Kredit zu geben) kommt mit der Lösung einen gegabelten JVM Prozess der Verwendung von Jetty zu laufen die eine neue Funktion der Jetty Plugin . Dies ist eine bessere Lösung als die früheren verläuft innerhalb derselben JVM-Prozess wie Maven (also Aktien Speicher).
Andere Tipps
Bei neueren Versionen der Maven-Anlegesteg-Plugin können Sie mvn:run-forked
verwenden. Die Option jvmArgs ermöglicht es Ihnen, -Xmx usw. einzustellen.
Weitere Informationen finden Sie unter: Anlegesteg: Lauf gegabelt: Ausführen eines nicht montierten Webapp in einem separaten jvm .
Ich denke, das ursprüngliche Problem wurde Jetty starten in separaten JVM .
Es scheint, wie Ihr aktueller Ansatz richtig ist - wenn Anlegestelle durch Maven läuft, Anlegestelle ein Thread innerhalb des Maven-Prozesses. So zunehmende Maven Haufen wird Anlegestelle Heap erhöhen.
Wie setzen Sie MAVEN_OPTS?
Ein Beispiel, das ich wie folgt aussieht gefunden: MAVEN_OPTS='-Xmx256m -Xms10m' mvn clean jetty:run
Beachten Sie, dass MAVEN_OPTS
eine Umgebungsvariable ist hier, und nicht an die JVM übergeben (wer würde nicht wissen, was damit zu tun).
Um vm Argumente über die Kommandozeile (wie ursprünglich angefragt) Sie können folgende Aktionen festlegen:
mvn clean install -DargLine="-Xmx1524m"
Die <jvmArgs>
param hier erwähnt: Maven Jetty Plugin
nicht für mich arbeiten.
Maven Version: Apache Maven 3.0.3
Jetty Maven Plugin-Version: Anlegestelle-Maven-Plugin: 8.1.10.v20130312
Das funktioniert:
MAVEN_OPTS='-Xmx4096m -Xms4096m'
export MAVEN_OPTS
mvn jetty:run &
Unter Linux / Unix
export MAVEN_OPTS="-Xmx256m" && mvn clean install jetty:run
den Trick
Das Plugin ermöglicht es Ihnen jvmArgs wie folgt angeben:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<jvmArgs>-Xmx1024</jvmArgs>
<scanIntervalSeconds>10</scanIntervalSeconds>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<webAppConfig>
<jettyEnvXml>jetty-env.xml</jettyEnvXml>
</webAppConfig>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run-exploded</goal>
</goals>
</execution>
</executions>
</plugin>
Sie können -Xmx Argument übergeben wie verwenden;
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version></version>
<configuration>
<jvmArgs>-Xmx -Xms -XX:PermSize= -XX:MaxPermSize= -XX:+HeapDumpOnOutOfMemoryError</jvmArgs>
<scanIntervalSeconds>1</scanIntervalSeconds>
<stopKey>stop-jetty</stopKey>
<stopPort>9999</stopPort>
<systemProperties>
<systemProperty>
<name>jetty.port</name>
<value>9090</value>
</systemProperty>
<systemProperty>
<name>spring.profiles.active</name>
<value></value>
</systemProperty>
</systemProperties>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
Es gibt keinen Weg, um die Kommandozeile verwenden. Aber man konnte die mvn.cmd
/ mvn.sh
kopieren Sie die Zeile mvnhp.cmd
und ändern
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
%MAVEN_JAVA_EXE% -Xmx1024m %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%