En passant l'intégralité d'un fichier d'arguments JVM
J'ai plusieurs systèmes qui ont besoin de charger les mêmes propriétés à la JVM. Je peux l'option-D pour charger une propriété à un moment, mais je suis à la recherche de quelque chose qui va se charger de toutes les propriétés dans un fichier entier en une seule fois. Par exemple:
Je pourrais juste ajouter --options-file=bla.les propriétés de toutes les machines virtuelles sur mon réseau, une fois, et à partir de là seulement modifier les propriétés du fichier, ce qui pourrait être une centrale unique fichier sur un partage réseau.
Merci,
EDIT: Tous les arguments ou les commandes doivent aussi travailler dans un environnement windows. Par conséquent, toute bash script ou hacks spécifiques à unix ne fonctionnera pas.
Vous devez vous connecter pour publier un commentaire.
C'est à peu près la façon dont nous le faisons:
java $(tr '\n' ' ' < options_file) other args...
Ici
options_file
contient prêt-Dsomething
ou-Xsomething
valeurs, un par ligne. Letr
commande remplace chaque retour à la ligne avec un espace.for /S delim=...
, ne me souviens pas, mais windows fournit un moyen de lire un fichier ligne par ligne; vous ajoutez ces lignes à une variable d'environnement.Je ne pense pas que vous pouvez le faire via la ligne de commande (sans bash hacks, peut-être), mais on peut certainement le faire par programmation:
Suffit de définir une propriété
-DmyPropertiesFile=/your/properties/file.properties
puis de les lire qu'avec l'un desProperties.load()
les surcharges. Après cela,System.setProperties(yourProps)
devriez faire ce que vous attendez.Bien sûr, cela nécessite que vous pouvez accrocher ce code assez tôt afin que vos biens seront disponibles en cas de besoin (Par exemple, si le
main()
méthode est la vôtre, c'est parfait).Certaines options:
getClass().getResourceAsStream()
- Je résoudre ce problème normalement en utilisant de Printemps (utilisé pour d'autres raisons aussi) et un PropertyPlaceholderConfigurer. Ce qui me permet de spécifier un ou de plusieurs emplacements pour les fichiers de propriétés et modifie la configuration Spring en place.
Si vous utiliser Ant pour lanuch le processus Java, 9000 réponse (en plus de son commentaire de windows), et vous pouvez avoir le lanceur de traiter avec le système d'exploitation de la différence.
Il y a un StackOverflow fil ici qui explique comment déterminer le système d'exploitation de fourmi