有没有办法比较两个Java war文件

nzp*_*mad 5 java

我们一段时间为我们的Web服务器构建了一些war文件,现在已经重建了它们.

为了确保没有任何变化(以及作为质量检查),我们尝试使用WinMerge进行比较.我们可以看到的差异看起来像是由于某种元数据,例如在不同日期构建的文件?

线条的差异似乎是一致的,例如

«d} <

³Ze<

战争文件仍然是相同的大小.

有没有办法比较它们去掉日期等元数据?

slm*_*slm 7

我通常使用这样的方法并运行2个解压缩命令并根据需要区分输出.例如,我需要比较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)
Run Code Online (Sandbox Code Playgroud)

导致输出如此:

--------          -------                                                       --------          -------
Archive:                                                                        Archive:
-------- -------- ----                                                          -------- -------- ----
48619281          130 files                                                   | 51043693          130 files
    1116 060ccc56 index.jsp                                                         1116 060ccc56 index.jsp
       0 00000000 META-INF/                                                            0 00000000 META-INF/
     155 b50f41aa META-INF/MANIFEST.MF                                        |      155 701f1623 META-INF/MANIFEST.MF
 Length   CRC-32  Name                                                           Length   CRC-32  Name
    1179 b42096f1 version.jsp                                                       1179 b42096f1 version.jsp
       0 00000000 WEB-INF/                                                             0 00000000 WEB-INF/
       0 00000000 WEB-INF/classes/                                                     0 00000000 WEB-INF/classes/
       0 00000000 WEB-INF/classes/com/                                                 0 00000000 WEB-INF/classes/com/
...
...
Run Code Online (Sandbox Code Playgroud)

我更喜欢这种方法,因为它不需要空间来解压缩文件然后比较它们.


Kri*_*ris 6

WAR文件基本上是Zip文件.为什么不提取内容并依次比较每个文件?这可以避免作为WAR文件一部分的任何元数据.您还可以找出实际发现的差异.


lah*_*her 6

如果先将它们解压缩然后比较文件夹,应该会更容易.

在Windows中,您可以使用jdk附带的'jar'可执行文件

jar -xvf xxxx.war
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用WinMerge来比较2个文件夹.

希望这可以帮助


Ven*_*vam 6

你可以使用eclipse来比较jar/war文件. http://www.javalobby.org/java/forums/m91839415.html

该链接未提及war文件.我正在使用Indigo,似乎eclipse只支持jar比较,因此我必须将war扩展名重命名为jar以获得eclipse进行结构比较.