除了Alex在tools.build之上构建的情况,还有其他原因使得.jar文件变得有用。
精确可重现是考虑这个的另一个原因。如果有人想在美国开发用于航空电子设备的产品,他们需要符合FAA的DO-178C...我不是律师,但我理解其中一个要求是能产生与部署到设备上软件完全相同的二进制副本,其生命周期可长达设备批准后几年。我自己不做这类工作,但我做一些支持这类工作的事情。对clojure
或tools.build
等工具的微小改动可能会对产生的/执行的精确代码、执行的指令数量、分配的内存等产生影响。在这些情况下,即使是最小的向后兼容性更改也不能容忍。其他领域如机器人或卫星可能也有类似的可重现性要求,我相信美国不是唯一有此类规定国家。
Maven坐标是更不可变的东西,并且在时间上有一个更完整的记录,可以为您提供完全相同的软件包。
精确的git提交是可靠的(可能是大多数项目的最佳选项),但git历史可以被修改或删除... Git“发布”甚至更易变。它们可以被移动(例如,从github到gitlab),标签也可以被移动。如果考虑到5年或10年后的未来,那时项目维护者可能已经换了一两次,这些想法就会显得更加令人担忧。