有没有办法比较两个Java war文件
不久前,我们为web服务器构建了一些war文件,现在已经重新构建了它们 为了确保没有任何变化(作为质量检查),我们尝试使用WinMerge对它们进行比较。我们看到的差异似乎是由于某种元数据造成的,例如,文件是在不同的日期生成的 线条上的差异似乎是一致的有没有办法比较两个Java war文件,java,Java,不久前,我们为web服务器构建了一些war文件,现在已经重新构建了它们 为了确保没有任何变化(作为质量检查),我们尝试使用WinMerge对它们进行比较。我们看到的差异似乎是由于某种元数据造成的,例如,文件是在不同的日期生成的 线条上的差异似乎是一致的 «d}WAR文件基本上是Zip文件。为什么不提取内容并依次比较每个文件?这避免了任何作为WAR文件一部分的元数据。如果发现任何差异,您还可以找出它们的实际区别。如果您先解压缩它们,然后比较文件夹,应该会更容易 在Windows中,您可以只使用jd
«d}WAR文件基本上是Zip文件。为什么不提取内容并依次比较每个文件?这避免了任何作为WAR文件一部分的元数据。如果发现任何差异,您还可以找出它们的实际区别。如果您先解压缩它们,然后比较文件夹,应该会更容易 在Windows中,您可以只使用jdk附带的“jar”可执行文件
jar -xvf xxxx.war
然后可以使用WinMerge比较这两个文件夹
希望这有助于您使用eclipse比较jar/war文件。 链接没有提到war文件。我使用的是Indigo,eclipse似乎只支持jar比较,因此我必须将war扩展重命名为jar,让eclipse进行结构比较。使用“Beyond Compare”免费试用版。。。(或购买)
我认为这是唯一可以做到这一点的工具。如果安装WinMerge的7zip插件,您可以配置WinMerge来比较zip文件(顺便说一下,.WAR文件)。 请记住,这不是很容易安装,你必须安装插件,它是由.dll和必须在一个文件夹中提取。。。。老实说,我不记得我是怎么做的。 我相信最后我使用了独立安装程序ooption,并使用了9.20版本的插件 尽管有时winmerge告诉我.class文件中存在差异,但它使二进制行变高,但我看不到任何差异。
至少您可以比较war文件夹结构。我通常使用这样的方法,运行2个解压命令并根据需要区分输出。例如,我需要比较两个Java WAR文件
$ sdiff --width 160 \
<(unzip -l -v my_num1.war | cut -c 1-9,59-,49-57 | sort -k3) \
<(unzip -l -v my_num2.war | cut -c 1-9,59-,49-57 | sort -k3)
我更喜欢这种方法,因为它不需要空间来解压缩文件,然后比较它们。只需使用
pkgdiff
:
pkgdiff a.war b.war
在Linux中随时可用,输出相当可解析(您还可以检查bash脚本中的状态代码)。它还生成了一个很棒的HTML报告。解压两个好答案后可能会有所帮助-这是第一个答案(7秒之前),所以这一个被接受了。
pkgdiff a.war b.war