Use reproducible time stamps for Maven build artifacts #139
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Unfortunately, JAR files store time stamps of the files inside them.
These time stamps depend on the build time of these files hence breaking
bit for bit reproducibility. By setting all time stamps to a predefined
value and removing superfluous build artifacts this issue can be
avoided. Conventionally, UNIX time stamp 1 signifies an intentionally
set time stamp (in contrast to UNIX time stamp 0) which has no meaning
and is easy to recognize.
I noticed this issue today after reading the following blog post: https://fzakaria.com/2021/06/28/java-nix-reproducibility.html
I also verified that this is indeed an issue in DiffDetective and that it's solved by this PR.