Wie Sie angeben, JVM-argument für Maven gebaut ausführbare JAR-Datei
Bei der Verwendung von Maven zu bauen, um eine ausführbare JAR-Datei, wie kann ich festlegen der JVM-Argumente, die verwendet werden, wenn die JAR ausgeführt wird?
Kann ich geben Sie die Haupt-Klasse, die mit <mainClass>
. Ich vermute es ist ein ähnliches Attribut für die JVM-Argumente. Speziell brauche ich die Angabe der maximalen Speicher (Beispiel -Xmx500m).
Hier ist meine Montage plugin:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.me.myApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Bearbeiten/Follow-up: Es scheint, dass es möglicherweise nicht möglich sein, geben Sie die JVM-Argumente für eine ausführbare JAR-Datei nach diese und diese post.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kenne kein solcher Mechanismus. Die JVM-Konfiguration angegeben ist, die durch die aufrufende java-Befehl.
Hier ist die jar-Datei-Spezifikation, die auffälligerweise nicht erwähnt, alle anderen Attribut als Main-Klasse für den stand-alone-Ausführung:
http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html
First off, lassen Sie mich sagen, dass etwas so schwierig ist wahrscheinlich schwer für einen Grund.
Dieser Ansatz kann für Sie arbeiten, wenn Sie es wirklich brauchen. Wie geschrieben, es meint "java" ist auf den Anrufer Weg.
Überblick:
Erklären Bootstrapper Klasse als main-Klasse in der jar-manifest.
Den bootstrapper spawnt ein weiterer Prozess, in dem wir call-java (übergeben in der alle Kommandozeilen-Argumente, die Sie wollen) auf die "echten" main-Klasse.
Leiten Sie die Kind-Prozesse-System.out und System.err auf der bootstrapper die jeweiligen streams
Warten Sie, bis der Kind-Prozess zu beenden
Hier ein guter hintergrund-Artikel.
src/main/java/scratch/Bootstrap.java - diese Klasse ist definiert in pom.xml als
das Glas ist mainclass:
<mainClass>scratch.Bootstrap</mainClass>
src/main/java/scratch/App.java - dies ist der normale Einstiegspunkt für dein Programm
Aufruf:
java -jar scratch-1.0-SNAPSHOT-jar-with-dependencies.jar
Zurück:
In Reaktion auf David Carlson Antwort, Sie machen es weniger spröde mit der java.- home-system-Eigenschaft zu suchen, die ausführbare java-Datei, anstatt sich auf den Benutzer Pfad zu finden. Darüber hinaus sollten Sie wahrscheinlich umleiten von standard-Eingabe auf der Kind-Prozess als gut.
Ich denke, diese kann getan werden, wenn Sie denken, dass Sie es auf diese Weise.
Generieren Sie eine
.bat
- Datei, wird ein Befehl:> java .. yourClass.. -D<jvmOption1> -D<jvmOption2>...
Können Sie versuchen, Suche auf diesem app-assembler-plugin für maven.
Ich habe es versucht und scheint zu funktionieren. Ich bin immer noch nicht klar, wie zu machen .bat-Datei generiert werden, mit dem etwas anderen Inhalt, aber ich denke, es ist machbar.
Als weitere option können Sie immer versuchen, das zu schaffen .bat-Datei in der Ressource-sub-Ordner Ihres Projektes ein und schließen Sie die sub-Ordner, die mit Ihrer distribution.
Alte Frage, aber kam auf meine Google-Suche für genau dieses problem, also ich bin, Sie zu beantworten.
Versuchen