33

application.propertiesリモート Linux サーバー上の既存の jar ファイル内のプロパティ ファイル ( など) を編集する方法。

jarが配置されていると想像してください。/home/user/my-spring-boot.jar内部のユーザー名を変更しapplication.propertiresたい

username=foo

username=bar

ファイルを開いてプロパティを変更する方法は?

4

8 に答える 8

60

ファイルは拡張子が異なる.jar単純なファイルであり、 zip ファイルとその内容を直接編集できます。単純に、ファイルナビゲーターを使用してプロパティファイルを見つけて変更します。あなたの編集でzipを維持します。.zipvimvim.jarvim

詳しくはこちらをご覧ください。

于 2012-09-25T14:55:46.023 に答える
3

可能なルートは、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
于 2012-09-25T14:53:43.533 に答える
3

既存の JAR アーティファクトを変更することはお勧めできません。代わりに、Spring Boot を使用すると、バンドルされたプロパティをいくつかの方法で外部値で簡単にオーバーライドできます。

たとえば、application.propertiesオーバーライドする値を含むファイルを JAR の隣に配置できます。プロパティ ファイル全体をそこにコピーする必要さえありません。変更したいプロパティだけをコピーする必要があります。

詳細は次の場所に文書化されています。

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

于 2018-01-03T16:06:35.553 に答える
2

(バックアップ用にファイルをコピーしemacsた後):

$ cp /home/user/bigExecutableJar.jar /home/user/bigExecutableJar.jar.bak 
$ emacs /home/user/bigExecutableJar.jar
  • ファイルが大きい場合は、本当にファイルを開くかどうかを尋ねられます。
  • 次に、変更するファイルを、jar 内のすべてのファイルをリストするバッファーで検索できます。必要C-sに応じて検索を行います。
  • ファイルを選択して開き、 を押しRETます。
  • 変更を行い、 で保存しC-x C-sます。
  • 最後に Emacs を で閉じC-x C-cます。
于 2012-09-25T14:58:48.003 に答える
1

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 でテスト済み。

于 2019-05-20T06:53:55.653 に答える
1

jar ファイルの編集内容に emacs を使用する

emacs jarfile

jar を開いた後、フォルダーとファイルを参照できます。jdbc.properties を検索して編集します。次に cx cs で変更を保存します。

注: zip をインストールして解凍する必要があります

于 2012-09-25T14:57:58.283 に答える
0

jarコマンドでアーカイブを解凍できますjar xf bigExecutableJar.jaratool可能であれば、アーカイブをパック/アンパックするためのより優れたコマンドラインを提供するため、インストールすることをお勧めします.

の扱い方がわからない場合は、エディタとしてvi使用してください。nano一部のシステムmcには、エディターが組み込まれたコンソール ベースのファイル エクスプローラーもインストールされています。

jar cf bigExecutableJar-new.jar -C .ファイルを変更した後、 (またはatool --add)を使用してアーカイブを再度パッケージ化できます。

本当に を使用したい/使用する必要がある場合jarは、最初に新しいディレクトリでコマンドを試すことをお勧めします。これは、期待どおりに動作しない場合があるためです。元のファイルでは絶対に使用しないでください。

于 2012-09-25T14:56:36.247 に答える
-1
sed -i "s/\(customAuthHeaderName=\).*\$/\1${customAuthHeaderName}/" configuration.properties

sed -i "s/\(logoutPage=\).*\$/\1${logoutPage}/" configuration.properties

2 番目customAuthHeaderNameの値はプロパティ ファイルからのものです

于 2018-01-23T11:34:10.397 に答える