![](/img/trans.png)
[英]convert application.yml file to application.properties
[英]How to edit the content of an application.properties or application.yml file inside an existing jar on a remote Linux server
如何編輯遠程Linux服務器上現有jar文件中的屬性文件(如application.properties
)。
想象一下jar位於/home/user/my-spring-boot.jar
,我想更改application.propertires
的用戶名
username=foo
至
username=bar
如何打開文件並更改屬性?
.jar
文件只是一個擴展名不同的.zip
文件, vim
可以直接編輯zip文件及其內容! 只要vim
你.jar
,使用文件導航找到你的屬性文件並修改它。 vim
將使用您的編輯維護zip。
有關詳細信息,請參見此處
可能的路線可能是將jar復制到zip文件,解壓縮,更改屬性,壓縮到zip並重命名為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
您可以使用emacs
(在復制文件進行備份之后):
$ cp /home/user/bigExecutableJar.jar /home/user/bigExecutableJar.jar.bak
$ emacs /home/user/bigExecutableJar.jar
Cs
進行搜索。 RET
。 Cx Cs
保存。 Cx Cc
關閉Emacs。 更改現有的JAR工件不是一個好主意。 相反,Spring Boot允許您以多種方式輕松地使用外部值覆蓋捆綁屬性。
例如,您可以在JAR旁邊放置一個application.properties
文件,其中包含您要覆蓋的值。 您甚至不需要復制整個屬性文件,只需要復制要更改的屬性,因為它仍然會回退到捆綁的默認值。
詳細信息請記錄在這里:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
使用emacs編輯jar文件中的內容
emacs jarfile
打開jar后,您可以瀏覽文件夾和文件。 搜索jdbc.properties並進行編輯。 然后使用cx cs保存更改。
注意:必須安裝zip並解壓縮
您可以使用jar xf bigExecutableJar.jar
命令解壓縮jar
檔案。 如果可以的話,我建議安裝atool
因為它提供了一個更好的命令行來打包/解壓縮檔案。
除非您知道如何處理vi
,否則請使用nano
作為編輯器。 某些系統還安裝了mc
,它是一個基於控制台的文件瀏覽器,具有內置編輯器。
更改文件后,您可以使用jar cf bigExecutableJar-new.jar -C .
再次打包存檔jar cf bigExecutableJar-new.jar -C .
(或atool --add
)
如果你真的想/需要使用jar
,我建議首先在新目錄中嘗試該命令,因為它有時不會像你期望的那樣運行。 切勿在原始文件上使用它!
我發現Java(或者更確切地說是Spring Boot)可能對JAR中的文件順序很挑剔(引入了循環庫依賴:“應用程序上下文中某些bean的依賴關系構成了一個循環”)。 因此,需要一種保存訂單的方法。
通過unzip 1.jar
解壓縮原始JAR 1.jar
並在生成的目錄樹中進行更改。 然后生成一個新的存檔2.jar
同時使用原始1.jar
作為參考保留文件的順序。
## -r = --recurse-paths
## -Z = --compression-method
zip -r -Z store 2.jar $(unzip -l 1.jar |tr -s ' ' |cut -d' ' -f5 |grep -v /$ )
zip -r -Z store 2.jar $(unzip -l 1.jar |tr -s ' ' |cut -d' ' -f5 |grep /$ )
這會將目錄放在文件之后 ,這很奇怪,但是我找到工作的唯一方法(關於循環依賴問題)。 這兩行可以組合成一個zip
調用,但我把它們分開來整理。
為了使訂單保存起作用,新的存檔2.jar
可能是新鮮的(尚未存在)。
Java要求嵌套的JAR文件無需進一步壓縮即可歸檔。 實現此目的的最簡單方法是對寫入新存檔的所有文件使用-Z store
。 這可能導致新存檔大於原始存檔。
您可以使用以下內容查看存檔的內部順序(插入您最喜歡的圖形差異實用程序)
diff <(unzip -t 1.jar) <(unzip -t 2.jar)
在Ubuntu 18.04上測試過。
sed -i "s/\(customAuthHeaderName=\).*\$/\1${customAuthHeaderName}/" configuration.properties
sed -i "s/\(logoutPage=\).*\$/\1${logoutPage}/" configuration.properties
第二個customAuthHeaderName
值來自屬性文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.