Hi,
One source of nondeterminism in generated artifacts is the fact that JarOutputStream and ZipOutputStream from java.util are used in IO.jar() and will include timestamps in the generated jar file. Also I'm not sure the ordering of the files in the archive is deterministic.
There's generally 2 ways to make builds reproducible: generating the assets in a deterministic way, or post-processing them. I'd say generating the jars in a deterministic way would be the nicest approach and make it easiest to integrate into an sbt project.
Would you be open to accepting such features in sbt, or at least extension points so this can be achieved from e.g. a plugin? What would be a good place to start hooking this in?
Kind regards,
Arnout