有比较两种.jar文件的可靠方法吗?

时间:2018-07-23 19:49:37

标签: jar diff

我正在努力改善我们的开发过程。作为其中的一部分,当开发人员需要重新部署某些服务以测试其更改时,我希望通过仅重新部署实际上已更改的那些服务来改进我们的流程,也就是说,正在运行,有任何源更改。

由于我们目前尚没有完善的版本控制方案,因此不幸的是,这不是一种选择。

我的最初想法如下:

  1. 保存当前正在运行的先前部署的jar(或其散列)列表。
  2. 重新部署后,首先组装所有相关的罐子。对生成的jar文件执行md5sum并与当前文件进行比较。如果匹配,请将其添加到将不会重新部署的排除项列表中。
  3. 如果哈希值不匹配,请重新部署。

不幸的是,经过大量搜索并尝试使此工作正常进行后,我发现即使两个具有完全相同的源和资源含量的罐子也会产生不同的校验和:这是由于以下事实:一个jar只是一个光荣的zip,因此确实具有指示日期的文件头。不幸的是,这意味着简单的md5sum first.jar second.jar将永远无法工作。

是否有任何标准方法?如果可能的话,我想避免将内容提取到某个临时目录中,并将它们与可能要重新部署的服务数量进行比较,这样一来,我最终可能不会节省太多时间。

1 个答案:

答案 0 :(得分:0)

我们解决此问题的方法是让我们的构建工具管理比较,而不是自己尝试进行比较。我们将以前的构建信息保存在构建服务器上,并仅重建了项目-在这种情况下,Gradle会注意到哪些jar是最新的,哪些不是最新的。

在那之后,我们简单地比较了“先前”版本和“当前”版本的校验和,现在可以正确指出哪些罐子是真正更新的。