除了Alex使用的在tools.build之上构建的场景外,还有其他原因可以使.jar文件有用。
精确可重现在是考虑这一点的另一个原因。如果有人希望在美国开发用于航电系统产品,他们需要符合FAA的DO-178C...我不是律师,但我的理解是,一项要求是能够在设备生命周期内生产软件的二进制精确副本,这可能是在他们被批准后几年。我不做这类工作,但我做一些支持这类工作的事情。对clojure
或tools.build
等工具的微小更改可能会对输出的精确代码、执行的指令数量、分配的内存量等产生影响。在这种情况下,即使是微小的向后兼容性更改也是无法容忍的。其他领域如机器人或卫星也可能会对可重复性有类似的要求,我怀疑美国不是唯一有这类规定的国家。
MAVEN坐标是一个更具不变性的事物,并且随着时间的推移,它有更好的记录以为您提供完全相同的工件。
精确的Git提交是可靠的(可能也是大多数项目的最佳选择),但Git历史可能会被修订或删除...Git "发布"甚至更不可变。它们可以被移动(例如,从github到gitlab),甚至标签也可以被移动。如果您在思考未来五到十年,当项目维护者可能改变一两次时,这些想法会变得更加可怕。