zip内のファイルを置き換える方法

zip内のファイルを置き換える方法

私は*.jarファイルを操作していますが、私の理解では、これはzipunzipコマンドなどの標準ツールで操作できるアーカイブ形式です。

圧縮済みのファイルを置き換える必要があることがよくあります。これまでは、解凍して古いファイルを削除し、新しいファイルを適切な場所に移動します(ソースアーカイブなので、高度に階層化された)、その後再圧縮しました。

もっと早く行うことは可能ですか? 必要な情報は、置換するファイル、置換先のアーカイブ、アーカイブ内で置換するファイルへのパスの 3 つです。

答え1

次の 2 つの手順で実行できます。

zip -d myjar.jar path/to/file/to/delete
jar uf myjar.jar -C base/path path/to/file/to/add

-C base/pathすでにベース ディレクトリ ( を含む) にいる場合は、 の部分を無視できますpath/to/file/to/add

単純な ZIP ファイルではなく JAR ファイルを扱う場合は、できる限り ではjarなくを使用する習慣をつけてください。これにより、マニフェストが正しく保存されることが保証されます。zip

プレーンな ZIP ファイルでは、ファイルを (再) アーカイブするだけでファイルを追加または更新できます。そのため、jar上記のコマンドの代わりに次のコマンドを使用します。

zip myzip.zip path/to/file/to/add

これを機能させるには、ベース ディレクトリにいる必要があります。(jarも機能しますが、ZIP ファイルで作業するときに要求するのは奇妙ですjar。)

関連情報