I want to add versioning information (and possibly some other metadata about the jar) to a jar of a library I created. However, I am not sure what attribute to use. I found that the specification as well the documentation explain that there can be a Specification-Version
and an Implementation-Version
(and a title and vendor for both). But neither properly explains what the difference between Specification and Implementation is.
I also looked at different examples.
- The one from the documentation uses a human readable name for the Specification-Title and a package name for the Implementation-Title. A dot-separated version number is used for the Specification-Version while a simple build number is used for the Implementation-Version.
- The gradle tutorial seems to just use an Implementation-Version and a human-readable string for the Implementation-Title
- In another question I found an example in which there were several Implementation-Versions for different packages.
What exactly is the difference between the Specification and Implementation Metadata here? How should these different attributes (especially the version numbers) be used? How does it make sense that the vendor of the specification and the implementation are different?
Does it even play a role what I put in there?