Итак, я смотрел высоко и низко для ответа на этот вопрос и, очевидно, не нашел удовлетворительного ответа.
Проблема в том, что я хочу обновить JAR (или любой файл, если на то есть) внутри JAR, но указанный файл находится внутри структуры папок, и я хотел бы избежать воспроизведения вне JAR, чтобы я мог его обновить.
Пример:
Foo.jar (root directory)
/
|->/folder1
|
|->/folder2
|
|->/foo
|
|-->/bar
|
|---->/baz
|
|------>file_to_update.jar
Итак, если я хочу обновить это с помощью команды jar, мне придется сначала создать ту же структуру папок вне JAR, а затем сделать
jar -uf Foo.jar -C foo/bar/baz/file_to_update.jar
Однако я бы хотел избежать создания этой структуры папок, поскольку для определенных файлов она может быть довольно глубокой, а также потому, что мне может потребоваться обновить выбранные файлы по всему контейнеру JAR, поэтому мне не хотелось бы создавать так много папок с так что команда jar может их обновить.
Чтобы выразить это по-другому, я хотел бы сообщить команде jar об обновлении определенного файла назначения в определенном целевом каталоге с использованием определенного исходного файла внутри определенного исходного каталога.
т.е. что-то вроде
jar -uf Foo.jar -sourceFile /x/y/z/filetoupdate -destFile /a/b/c/filetoupdate
(Я знаю, что этот синтаксис не работает, это просто пример того, что мне нужно).
Можно ли это сделать? Мне было бы очень странно, что мне абсолютно нужно было бы имитировать всю структуру папок, когда команда jar могла найти совпадение для нее или что-то еще, так как мне может потребоваться обновить файл внутри структуры папок, которая имеет глубину в 100 папок, Это было бы слишком сложно воспроизвести только для обновления файла.
Кроме того, я знаю, что обычная утилита ZIP может быть использована, но тот, который у меня есть в Linux, не обновляет файл, даже если он говорит, что он это сделал (при повторном открытии банка он имеет старую версию без изменений) и сейчас я не могу искать другого (политика компании, нет времени, проблемы с тестированием, вы называете это).
Наконец, если я могу сделать это из командной строки, это значит, что я могу создать пакетный файл для обновления большого количества определенных файлов без необходимости создания структуры папок.
Я забыл сказать, что я также хотел бы избежать необходимости развязывать, обновлять и переплющивать все это, так как этот JAR может подняться вверх до 2 ГБ, поэтому требуется некоторое время, чтобы сделать это просто, в основном, добавить небольшой ресурс файл для моего гигантского JAR.
Любая помощь по этому поводу очень ценится!