【问题标题】:How to replace the manifest of a war file from bash?如何从bash替换war文件的清单?
【发布时间】:2015-10-12 05:40:51
【问题描述】:

我当前的工作目录中有一个战争文件 foo.war。我也有一个 MANIFEST.MF 文件。

ls .
foo.war MANIFEST.MF

在 foo.war 中有一个文件 foo/META-INF/MANIFEST.MF。 我想用我的工作目录中的文件替换战争中的那个文件。 我认为 zip 可以用来做到这一点,但我不理解 zip 文档。

正确的用法是什么?

我如何验证它是否正确完成?

我将如何使用 jar 来做到这一点?

【问题讨论】:

  • 我看到你评论了this question。您是否尝试过建议jar 命令的答案?
  • 我查看了 jar 文档。之后我假设 jar 做了我想要的更多的东西(它能够创建一个清单文件)并且我不知道如何禁用该功能。我不清楚 jar 是否仅适用于真正的 jar 文件,或者它是否也可用于 war 文件(war、ear 和 jar 文件有不同的规范)。

标签: bash jar zip war


【解决方案1】:

尝试将 MANIFEST.MF 放在名为 foo/META-INF/ 的目录中

然后运行:

zip -f foo.war foo/META-INF/MANIFEST.MF

验证文件运行:

unzip -l foo.war

对 .jar 文件使用相同

【讨论】:

  • 这不起作用:我收到 zip 警告:名称不匹配:foo/META-INF/MANIFEST.MF
  • unzip -l foo.war 只是列出了战争中的所有文件,如果 MANIFEST-MF 文件被替换,我看不到这种方式。
  • 如果我使用 zip -f foo.war META-INF/MANIFEST.MF,该命令不会发出警告,但不会替换文件。
  • 为了验证我使用了 unzip -p foo.war META-INF/MANIFEST.MF >MANIFEST.MF.
  • zip 的 -f 选项仅在文件已被修改或具有更新的时间戳时才会替换文件,您必须从生成 war 文件的同一目录运行它。我假设您想将其替换为较新的文件。这就是为什么我建议使用unzip -l 来验证它,这个想法是检查时间戳。对不起,如果它没有工作。
【解决方案2】:

经过一段时间的实验,我找到了这个解决方案:

#! /bin/bash

set -e

apt-get install -y zip
apt-get install -y unzip

rm -f foo.war
cp foo.original.war foo.war
touch META-INF/MANIFEST.MF

zip -f foo.war META-INF/MANIFEST.MF

rm -f test

unzip -p foo.war META-INF/MANIFEST.MF >test

#Uncomment next line to test verification:
#echo "X" >>test

if diff test META-INF/MANIFEST.MF; then
  echo "OK."
else
  ERR=$?
  echo "Failed (diff exit code $ERR)."
  exit 1
fi
  • zip 似乎只有在时间戳足够新时才会替换文件。 “足够新”到底是什么意思,我还不清楚。
  • 我使用 unzip -p foo.war META-INF/MANIFEST.MF >test
  • 从 zip 中提取了 MANIFEST.MF 文件
  • 我使用 diff 的退出代码来验证 MANIFEST.MF 是否真的被替换了。
  • zip 吐出警告:“zip 警告:本地条目 CRC 与 CD 不匹配:META-INF/MANIFEST.MF”我不清楚这个警告的含义。
  • 我真的必须将 MANIFEST.MF 放在 META-INF 文件夹中,还是可以指定应该替换的文件的源位置?
  • 我不喜欢那种“触摸”。有没有办法在不摆弄时间戳的情况下强制替换?
  • 字符编码、不寻常的文件名和行尾呢?

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多