Comment spécifier l'argument JVM pour Maven construit exécutable JAR
Lors de l'utilisation de Maven pour générer un exécutable JAR, comment puis-je spécifier la JVM arguments qui sont utilisés quand le BOCAL est exécuté?
Je peux spécifier la classe principale à l'aide de <mainClass>
. Je présume qu'il en est de même attribut pour les arguments JVM. Spécialement j'ai besoin de spécifier la quantité maximale de mémoire (par exemple Xmx500m).
Voici mon 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>
Modifier/Suivi: Il semble qu'il pourrait ne pas être possible de spécifier des arguments JVM pour un exécutable JAR selon cette et cette post.
OriginalL'auteur Steve Kuo | 2008-10-11
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas du tout ce mécanisme. La configuration de la JVM est spécifié par l'appel de la commande java.
Voici le fichier jar de spécification qui visiblement ne parle pas de tout attribut d'une autre Classe pour stand-alone exécution:
http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html
OriginalL'auteur Alex Miller
Tout d'abord, permettez-moi de dire que rien de ce délicat est sans doute difficile pour une raison.
Cette approche qui peut travailler pour vous si vous en avez vraiment besoin. Comme l'a écrit, il assume "java" est sur l'appelant chemin.
Vue d'ensemble:
Déclarer un programme d'Amorçage de la classe comme la classe principale dans le pot manifeste.
Le programme d'amorçage engendre un autre processus que nous appelons java (en passant en argument de ligne de commande que vous voulez) sur la "vraie" classe principale.
Rediriger l'enfant du processus de Système.et du Système.euh pour le programme d'amorçage respectifs des flux
D'attente pour le processus de l'enfant à terminer
Voici un bon article de fond.
src/main/java/scratch/Bootstrap.java - cette classe est définie dans pom.xml comme
le pot de l'mainclass:
<mainClass>scratch.Bootstrap</mainClass>
src/main/java/scratch/App.java - ce qui est le point d'entrée de votre programme
Appel:
java -jar scratch-1.0-SNAPSHOT-jar-with-dependencies.jar
Retourne:
OriginalL'auteur David Carlson
En réponse à David Carlson répondre, vous pouvez le rendre moins cassant en utilisant le java.la maison de la propriété du système pour localiser le fichier exécutable java au lieu de compter sur le chemin d'accès utilisateur à trouver. En outre, vous devriez probablement être rediriger l'entrée standard du processus enfant.
OriginalL'auteur jgibson
Je pense que cela peut être fait si vous pensez de cette façon.
Générer un
.bat
fichier qui va avoir une commande:> java .. yourClass.. -D<jvmOption1> -D<jvmOption2>...
Vous pouvez essayez de regarder sur ce app assembleur plugin pour maven.
Je l'ai essayé, et cela semble fonctionner. Je ne suis pas encore clair comment faire .le fichier bat pour être généré avec le peu de contenu différents, mais je pense que c'est faisable.
Comme autre option, vous pouvez toujours essayer de créer la .fichier bat dans la ressource sous-dossier de votre projet et de l'inclure sous-dossier avec votre distribution.
OriginalL'auteur Dmitriy Ryabin
Question très ancienne, mais il est venu sur ma recherche Google pour ce problème donc je suis à répondre.
Essayer
OriginalL'auteur Leonard Hagger