application.propertiesリモート Linux サーバー上の既存の jar ファイル内のプロパティ ファイル ( など) を編集する方法。
jarが配置されていると想像してください。/home/user/my-spring-boot.jar内部のユーザー名を変更しapplication.propertiresたい
username=foo
に
username=bar
ファイルを開いてプロパティを変更する方法は?
ファイルは拡張子が異なる.jar単純なファイルであり、 zip ファイルとその内容を直接編集できます。単純に、ファイルナビゲーターを使用してプロパティファイルを見つけて変更します。あなたの編集でzipを維持します。.zipvimvim.jarvim
詳しくはこちらをご覧ください。
可能なルートは、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
既存の JAR アーティファクトを変更することはお勧めできません。代わりに、Spring Boot を使用すると、バンドルされたプロパティをいくつかの方法で外部値で簡単にオーバーライドできます。
たとえば、application.propertiesオーバーライドする値を含むファイルを JAR の隣に配置できます。プロパティ ファイル全体をそこにコピーする必要さえありません。変更したいプロパティだけをコピーする必要があります。
詳細は次の場所に文書化されています。
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
(バックアップ用にファイルをコピーしemacsた後):
$ cp /home/user/bigExecutableJar.jar /home/user/bigExecutableJar.jar.bak
$ emacs /home/user/bigExecutableJar.jar
C-sに応じて検索を行います。 RETます。C-x C-sます。 C-x C-cます。Java (または、より具体的には Spring Boot だったかもしれません) は、JAR 内のファイルの順序について気難しいことがわかりました (循環ライブラリ依存関係が導入されました: 「アプリケーションコンテキスト内の一部の Bean の依存関係がサイクルを形成します」)。したがって、順序を維持する方法が必要です。
1.jar元の JARを解凍unzip 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 /$ )
これはファイルの後にディレクトリを置きますが、これは奇妙ですが、私が見つけた唯一の方法です (循環依存の問題に関して)。これらの 2 つの行は、 への 1 つの呼び出しに結合できますがzip、整理するためにここでは分けています。
順序の保存が機能するためには、新しいアーカイブを新しく2.jar作成することが重要な場合があります (まだ存在していません)。
ネストされた JAR ファイルをさらに圧縮せずにアーカイブするという Java 要件があります。これを実現する最も簡単な方法は-Z store、新しいアーカイブに書き込まれたすべてのファイルに対して を使用することでした。これにより、新しいアーカイブが元のアーカイブよりも大きくなる場合があります。
次のような方法でアーカイブの内部順序を確認できます (お気に入りのグラフィカルな diff ユーティリティを挿入してください)。
diff <(unzip -t 1.jar) <(unzip -t 2.jar)
Ubuntu 18.04 でテスト済み。
jar ファイルの編集内容に emacs を使用する
emacs jarfile
jar を開いた後、フォルダーとファイルを参照できます。jdbc.properties を検索して編集します。次に cx cs で変更を保存します。
注: zip をインストールして解凍する必要があります
jarコマンドでアーカイブを解凍できますjar xf bigExecutableJar.jar。atool可能であれば、アーカイブをパック/アンパックするためのより優れたコマンドラインを提供するため、インストールすることをお勧めします.
の扱い方がわからない場合は、エディタとしてvi使用してください。nano一部のシステムmcには、エディターが組み込まれたコンソール ベースのファイル エクスプローラーもインストールされています。
jar cf bigExecutableJar-new.jar -C .ファイルを変更した後、 (またはatool --add)を使用してアーカイブを再度パッケージ化できます。
本当に を使用したい/使用する必要がある場合jarは、最初に新しいディレクトリでコマンドを試すことをお勧めします。これは、期待どおりに動作しない場合があるためです。元のファイルでは絶対に使用しないでください。
sed -i "s/\(customAuthHeaderName=\).*\$/\1${customAuthHeaderName}/" configuration.properties
sed -i "s/\(logoutPage=\).*\$/\1${logoutPage}/" configuration.properties
2 番目customAuthHeaderNameの値はプロパティ ファイルからのものです