Я работаю с *.jar
файлами, насколько я понимаю, это архивный формат, которым я могу управлять с помощью стандартных инструментов, таких как zip
команды unzip
.
Мне часто нужно заменить уже сжатый файл. Пока что я распаковываю, удаляю старый файл, перемещаю новый в хорошее место (это исходный архив, поэтому онвысокослоистый), а затем я снова его сжал.
Можно ли сделать это быстрее? Это будет 3 информации: файл для замены, целевой архив, в котором нужно заменить, и путь к файлу для замены в архиве.
решение1
Это можно сделать в два этапа:
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
).
При работе с JAR-файлами, а не с простыми ZIP-файлами, вам следует привыкнуть использовать , jar
насколько zip
это возможно; это гарантирует правильное сохранение манифеста.
С помощью простого ZIP-файла вы можете добавлять или обновлять файл, просто (повторно)архивируя его; поэтому вместо команды jar
выше используйте:
zip myzip.zip path/to/file/to/add
Для работы этого метода вам необходимо находиться в базовом каталоге. (Это jar
тоже сработает, но странно, что это требуется jar
при работе с ZIP-файлами.)