これは私が高く評価しており、これに対する答えは不十分であり、明らかに満足のいく回答は見つかりませんでした。jarコマンドで特定のディレクトリにあるJAR内のファイルを更新します
問題は、JAR内のJAR(またはそのようなファイル)をJAR内で更新したいのですが、このファイルはフォルダ構造内にあります。JARの外部では再生できないようにしたいのですそれ。
例:私は瓶コマンドを使用して、これを更新する場合
Foo.jar (root directory)
/
|->/folder1
|
|->/folder2
|
|->/foo
|
|-->/bar
|
|---->/baz
|
|------>file_to_update.jar
だから、私が最初にJARの外側同じフォルダ構造を作成する必要があり、次に行う
jar -uf Foo.jar -C foo/bar/baz/file_to_update.jar
しかし、私はこのフォルダ構造の作成を避けたいのですが、特定のファイルについてはかなり深いことがあります。また、コンテナJAR全体の選択したファイルを更新する必要があるかもしれないので、 ific構造のように、jarコマンドを使用してそれらを更新することができます。別の方法でそれを置くために
、私は特定のソースディレクトリ内の特定のソースファイルを使用して、特定の宛先ディレクトリ内の特定の宛先ファイルを更新する瓶コマンドをお伝えしたいと思います。
I.e.
jar -uf Foo.jar -sourceFile /x/y/z/filetoupdate -destFile /a/b/c/filetoupdate
(私はこの構文がうまくいかないことを知っていますが、私が必要とするものを例示するだけです)。
これはできますか?非常に奇妙であると私は打ち明けるでしょう。jarコマンドでは、フォルダ構造100内のファイルを更新する必要があるので、フォルダ構造全体を模倣する必要があります。フォルダは深い。それは単にファイルを更新するために再現するのは非常に複雑です。
また、私は通常のZIPユーティリティを使うことができると知っていますが、Linuxで利用できるものは、ファイルを更新していないということです(jarファイルを再オープンすると元のバージョンになります)今すぐ別の会社を探すことはできません(会社の方針、時間がない、問題をテストする、名前を付ける)。
最後に、これをコマンドラインから実行できれば、バッチファイルを作成して、フォルダ構造を作成せずにたくさんの特定のファイルを更新できることを意味します。
このJARは2GBまで上がることがあるので、私はunjar、更新、rejarを避けたいと言っていることを忘れてしまったので、これをちょうど少し行います私の巨大なJARへのリソースファイル。
これに関するお手伝いをしております。
あなたがいることを言及Linuxで、あなたはすでにzipパッケージを調べていますか?マニュアルのための '' 'man zip'''。それはあなたが探しているツールだけで、自動化のためのスクリプトとペアリングしているようです。 – TomJ