web-dev-qa-db-fra.com

Comment modifier le contenu d'un fichier application.properties ou application.yml dans un fichier jar existant sur un serveur Linux distant

Comment éditer un fichier de propriétés (comme application.properties) à l'intérieur d'un fichier jar existant sur un serveur Linux distant.

Imaginez que le pot se trouve dans /home/user/my-spring-boot.jar et que je souhaite changer le nom d'utilisateur à l'intérieur de application.propertires à partir de

username=foo

à

username=bar

Comment ouvrir le fichier et changer la propriété?

27
d0x

Un fichier .jar est simplement un fichier .Zip avec une extension différente, et vim peut éditer directement les fichiers Zip et leur contenu! Simplement vim votre .jar, utilisez le navigateur de fichiers pour trouver votre fichier de propriétés et le modifier. vim maintiendra le zip avec vos modifications.

Voir ici pour plus de détails.

53
Brian Agnew

La route possible pourrait être de copier le fichier jar dans un fichier Zip, de l'extraire, de modifier vos propriétés, de le compresser en Zip et de le renommer en jar.

cp myJar.jar myJar.Zip
unzip myJar.Zip
vim myProperties.properties (doing the change here)
Zip allMyFiles into myJar.Zip
cp myJar.Zip myModifiedJar.jar
3
gtgaxiola

Vous pouvez le faire avec emacs (après avoir copié votre fichier pour la sauvegarde):

$ cp /home/user/bigExecutableJar.jar /home/user/bigExecutableJar.jar.bak 
$ emacs /home/user/bigExecutableJar.jar
  • S'il est gros, il vous demandera si vous voulez vraiment ouvrir le fichier. 
  • Vous pouvez ensuite rechercher le fichier que vous souhaitez modifier dans la mémoire tampon répertoriant tous les fichiers du fichier jar; utilisez C-s pour faire une recherche si nécessaire. 
  • Ouvrez le fichier en le sélectionnant et appuyez sur RET.
  • Apportez vos modifications et enregistrez avec C-x C-s
  • Enfin, fermez Emacs avec C-x C-c.
2

La modification d'un artefact JAR existant n'est pas une bonne idée. Spring Boot vous permet de remplacer facilement les propriétés fournies avec des valeurs externes de plusieurs manières.

Par exemple, vous pouvez placer un fichier application.properties à côté du fichier JAR avec les valeurs que vous souhaitez remplacer. Vous n'avez même pas besoin de copier le fichier de propriétés complet, uniquement les propriétés que vous souhaitez modifier, car il reprend toujours les valeurs par défaut fournies.

Les détails sont documentés ici:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

1
Natix

Utiliser emacs pour modifier du contenu sur un fichier jar

emacs jarfile

Après avoir ouvert le fichier jar, vous pouvez parcourir les dossiers et les fichiers. Recherchez le fichier jdbc.properties et modifiez-le. Enregistrez ensuite les modifications avec c-x c-s.

Remarque: est-il nécessaire d’installer Zip et décompresser

1
Jhonathan

Vous pouvez décompresser les archives jar avec la commande jar xf bigExecutableJar.jar. Si vous le pouvez, je suggère d'installer atool car il offre une meilleure ligne de commande pour compresser/décompresser les archives.

Sauf si vous savez manipuler vi, utilisez nano en tant qu'éditeur. mc est également installé sur certains systèmes. Il s'agit d'un explorateur de fichiers basé sur une console doté d'un éditeur intégré.

Après avoir modifié le fichier, vous pouvez à nouveau compresser l’archive en utilisant jar cf bigExecutableJar-new.jar -C . (ou atool --add).

Si vous voulez vraiment/devez utiliser jar, je vous suggère d’essayer d’abord la commande dans un nouveau répertoire car il ne se comporte parfois pas comme prévu. Ne l'utilisez jamais sur le fichier d'origine!

0
Aaron Digulla