application.properties
リモート Linux サーバー上の既存の jar ファイル内のプロパティ ファイル ( など) を編集する方法。
jarが配置されていると想像してください。/home/user/my-spring-boot.jar
内部のユーザー名を変更しapplication.propertires
たい
username=foo
に
username=bar
ファイルを開いてプロパティを変更する方法は?
ファイルは拡張子が異なる.jar
単純なファイルであり、 zip ファイルとその内容を直接編集できます。単純に、ファイルナビゲーターを使用してプロパティファイルを見つけて変更します。あなたの編集でzipを維持します。.zip
vim
vim
.jar
vim
詳しくはこちらをご覧ください。
可能なルートは、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
の値はプロパティ ファイルからのものです