除了Alex关于在tools.build之上构建的使用案例,还有其他原因可以认为.jar文件是有用的。
精确的可重复性是考虑这一点的原因。如果有人想在符合美国航空电子设备的产品中构建,他们需要遵守FAA的DO-178C标准……我不是律师,但我的理解是其中一个要求是能够生成软件的二进制精确副本,该软件在设备使用寿命期间部署,可能在它们获得批准后几年。我并不做这种类型的工作,但我为这样的人做一些事情。对像clojure
或tools.build
这样的工具的微小更改可能会对生成的/执行的确切代码、执行的指令数量、分配的内存量等产生影响。在这种情况下,即使是微小的向后兼容性更改也不能容忍。其他领域如机器人或卫星也可能有类似的可重复性要求,我怀疑美国并不是唯一一个有这种监管的国家。
Maven坐标是一个更加不可变的东西,在时间里给你带来了更一致的文件。
精确的git提交是可靠的(可能也是大多数项目的最佳选择),但git历史可以被修改或删除……git "发布"甚至更加不可靠。它们可以被移动(例如从github到gitlab),标签也可以被移动。如果你想在将来5或10年中考虑这些,在项目维护者可能已经换过一两次之后,这些想法会更加令人恐惧。