9

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

我看过 Beyond Compare 和 Archive Analyzer,但它们一次只做一个级别。我必须手动深入了解每个存档。我正在寻找更自动的东西。

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

这样的工具存在吗?

4

3 回答 3

5

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

于 2012-11-08T10:22:15.637 回答
4

我的问题不仅仅是递归地扩展 .ear 文件(我编写了一个 Java 类来做到这一点 - 递归使它变得简单。)一旦扩展了 .ear 文件,我必须区分目录以检查是否有任何更改。如果时间戳以外的任何内容发生更改,那么我知道构建正在生成不同的二进制文件。

第二个问题是我们的构建过程会生成数百个 .xml 文件,随后的构建会以不同的顺序重新生成这些 .xml 文件。我不确定为什么。当我扩展由背靠背构建生成的两个 .ear 文件时,结果目录的差异显示数百个具有差异的 .xml 文件,即使它们在功能上是等效的。

除了递归扩展 .ear 文件之外,我还需要做一个 diff 并排除某些目录中的 .xml 文件。我认为 Cygwin diff 会这样做,但 --exclude 开关无法识别任何路径信息:

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

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

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

于 2011-01-06T21:50:09.620 回答
1

在 Beyond Compare 中进入Session Settings对话框,Handling选项卡上有一个Archive Handling选项。如果它设置为As folders alwaysBC 将像文件夹一样对待档案,所以它是完全递归的。

于 2011-01-03T20:09:12.657 回答