需要一个工具来递归地比较两个.ear文件

Dea*_*lze 8 diff ear compare

我正在修改构建过程,我需要对两个.ear文件的内容进行完整的比较.这意味着递归地比较.ear中的每个存档.这些.ear文件包含包含存档的存档.

我看过Beyond Compare和Archive Analyzer,但他们一次只做一个级别.我必须手动深入到每个档案.我正在寻找更自动的东西.

Eclipse和UltraCompare对两个.ears进行二进制比较,这不是我想要的.

这样的工具存在吗?

小智 5

zipdiff提供了一个非常好的开源解决方案.


Dea*_*lze 4

事实证明,我的问题不仅仅是递归地扩展 .ear 文件(我编写了一个 Java 类来执行此操作 - 递归使事情变得简单。)扩展 .ear 文件后,我必须比较目录以检查是否有任何更改。如果时间戳以外的任何内容发生变化,那么我就知道构建正在生成不同的二进制文件。

第二个问题是我们的构建过程生成数百个 .xml 文件,并且后续构建会重新生成这些 .xml 文件,其中元素的顺序不同。我不知道为什么。当我展开两个由背对背构建生成的 .ear 文件时,没有对任何内容进行任何更改,结果目录的差异显示数百个具有差异的 .xml 文件,即使它们在功能上是等效的。

除了递归扩展 .ear 文件之外,我还需要进行比较并排除某些目录中的 .xml 文件。我认为 Cygwin diff 会执行此操作,但 --exclude 开关无法识别任何路径信息:

如果模式中包含目录,Cygwin diff 不会排除文件

如果我找不到解决方案,我将编写另一个 Java 类来逐步浏览整个目录结构,在每个目录中执行单级比较,并排除相应目录中的 .xml 文件。

我有一种感觉,我正在重新发明轮子,但我现在找不到轮子。

  • 使用临时 Git 存储库来进行比较怎么样?提取第一个 .ear 文件并添加并签入所有内容,提取第二个 .ear 文件,现在您可以让 Git 进行比较。 (6认同)