java - tutorial - Cómo editar el contenido de un archivo application.properties o application.yml dentro de un contenedor existente en un servidor Linux remoto
spring config server eureka (7)
Cómo editar un archivo de propiedades (como application.properties
) dentro de un archivo jar existente en un servidor Linux remoto.
Imagina que el jar se encuentra en /home/user/my-spring-boot.jar
y me gusta cambiar el nombre de usuario dentro de application.propertires
desde
username=foo
a
username=bar
¿Cómo abrir el archivo y cambiar la propiedad?
Cambiar un artefacto JAR existente no es una buena idea. En cambio, Spring Boot le permite anular fácilmente las propiedades agrupadas con valores externos de varias maneras.
Por ejemplo, puede colocar un archivo application.properties
junto al JAR con los valores que desea anular. Ni siquiera necesita copiar todo el archivo de propiedades allí, solo las propiedades que desea cambiar, ya que todavía recae en los valores predeterminados agrupados.
Los detalles están documentados aquí:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
La posible ruta podría ser copiar el archivo jar en un archivo zip, extraer, cambiar sus propiedades, comprimir a zip y cambiar el nombre a 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
Puede descomprimir archivos jar
con el comando jar xf bigExecutableJar.jar
. Si puede, sugiero instalar atool
porque ofrece una mejor línea de comandos para empaquetar / desempaquetar archivos.
A menos que sepa cómo manejar vi
, use nano
como editor. Algunos sistemas también tienen mc
instalado, que es un explorador de archivos basado en consola que tiene un editor incorporado.
Después de cambiar el archivo, puede empaquetar el archivo nuevamente usando jar cf bigExecutableJar-new.jar -C .
(o atool --add
)
Si realmente desea o necesita usar jar
, le sugiero que pruebe el comando en un nuevo directorio primero porque a veces no se comporta como espera. ¡Nunca lo uses en el archivo original!
Puede hacerlo con emacs
(después de haber copiado su archivo para copia de seguridad):
$ cp /home/user/bigExecutableJar.jar /home/user/bigExecutableJar.jar.bak
$ emacs /home/user/bigExecutableJar.jar
- Si es grande, le preguntará si realmente desea abrir el archivo.
- Luego, puede buscar el archivo que desea modificar en el búfer con una lista de todos los archivos en el contenedor; use
Cs
para hacer una búsqueda si es necesario. - Abra el archivo seleccionándolo y presione
RET
. - Realice sus cambios y ahorre con
Cx Cs
. - Finalmente cerrar Emacs con
Cx Cc
.
Un archivo .jar
es simplemente un archivo .zip
con una extensión diferente, y vim
puede editar archivos zip y sus contenidos directamente. Simplemente vim
su .jar
, use el navegador de archivos para encontrar su archivo de propiedades y cambiarlo. vim
mantendrá la cremallera con tus ediciones.
Vea here para más detalles.
Use emacs para editar contenido en un archivo jar
emacs jarfile
Después de abrir el jar, puede navegar por las carpetas y archivos. Busca en jdbc.properties y edítalo. Luego guarda los cambios con cx cs.
Nota: Es necesario instalar zip y descomprimir.
sed -i "s//(customAuthHeaderName=/).*/$//1${customAuthHeaderName}/" configuration.properties
sed -i "s//(logoutPage=/).*/$//1${logoutPage}/" configuration.properties
El segundo valor de customAuthHeaderName
proviene del archivo de propiedades