所以我一直在寻找这个答案的高低,显然还没有找到一个令人满意的答案。
问题是我想更新 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 后,它的旧版本完好无损),现在我不能去寻找另一个(公司政策,没有时间,测试问题,你的名字)。
最后,如果我可以从命令行执行此操作,这意味着我可以创建一个批处理文件来更新大量特定文件,而无需创建文件夹结构。
我忘了说我也想避免解压缩、更新、重新压缩整个东西,因为这个 JAR 可以上升到 2GB,所以这样做需要一段时间,基本上,添加一个小资源文件到我的巨大的罐子。
非常感谢您对此的任何帮助!