我正在使用 gradle 构建一个 Java 项目,并希望将校验和文件与构建的工件一起发布。问题是重复构建会生成不同的校验和,而无需任何代码更改。花了一些时间追查这个问题,原因很明显:
- 生成的类文件获得创建时间的创建/修改时间戳(很棒的发现!!)
- 此修改日期作为元数据添加到生成的 jar/zip 档案中,这会导致校验和差异
也就是说,实际上不可能在稍后的时间点重新构建将输出相同文件的某个版本。
我认为通过在创建后将工件的修改/创建日期更改为某个默认值来“修复”这个问题很容易。但这会导致档案中出现某种奇怪的元数据信息——类似的东西1970-01-01T00:00:00Z
很明显,但乍一看仍然令人困惑。
有没有其他方法可以完全省略创建档案时的时间戳元数据。还是在创建档案后将其删除?
或者是否有任何其他方法可以使重复构建生成相同的工件?
我实际上想知道这种情况下的最佳做法是什么?!