除了Alex使用工具.build构建的用例之外,还有其他原因可以让.jar文件变得有用。
精确重现也是考虑此方案的一个原因。如果有人想在美国开发用于航空电子设备的产品,他们需要遵守FAA的DO-178C... 我不是律师,但我的理解是,一个要求是能够在设备使用期间生成软件的二进制精确副本,这可能是在批准后的数年后。我不从事这类工作,但我做一些支持这样的人的工作。对clojure
或tools.build
等工具的微小更改可能会影响生成的确切代码、执行的指令数量、分配的内存量等。在这种情况下,即使是微小的向后兼容性更改也不能容忍。其他领域如机器人或卫星也可能有类似的重现性要求,我相信美国不是唯一有这种法规的国家。
Maven坐标是一个更不可变的东西,它在时间上的记录更好,可以为您提供完全相同的工件。
确切的Git提交是可靠的(可能是大多数项目的最佳选项),但Git历史可以被修改或删除...Git“版本发布”的可变性还更大。它们可以被移动(例如,从GitHub到GitLab),也可以移动标签。如果您尝试考虑5年或10年后的未来,那时项目负责人可能已经改变过几次,这些想法会让人感到更恐慌。