We need a new mechanism for storing and loading the version of a tool and its dependencies.
ProtoData currently uses version.txt(stored in resources) for an artifact version. This approach would not work if components with different versions are merged into a fat JAR.
A better solution would be to use MANIFEST.MF file. The standard tag Implementation-Version tag would be used for keeping a version.
Dependencies could be stored in a custom tag called Depends-On. A value for the tag should be formed after this pattern maven:$group:$artifact:$version. Notice the maven: prefix coming before GAV coordinates. It 1) explains the format of the value 2) allows for extensibility—there could be other formats of values coming with a different prefix.
After this issue is addressed, the io.spine.tools.gradle.DependencyVersions should be deprecated. Version management in ProtoData should be updated too.
References:
We need a new mechanism for storing and loading the version of a tool and its dependencies.
ProtoData currently uses
version.txt(stored in resources) for an artifact version. This approach would not work if components with different versions are merged into a fat JAR.A better solution would be to use
MANIFEST.MFfile. The standard tagImplementation-Versiontag would be used for keeping a version.Dependencies could be stored in a custom tag called
Depends-On. A value for the tag should be formed after this patternmaven:$group:$artifact:$version. Notice themaven:prefix coming before GAV coordinates. It 1) explains the format of the value 2) allows for extensibility—there could be other formats of values coming with a different prefix.After this issue is addressed, the
io.spine.tools.gradle.DependencyVersionsshould be deprecated. Version management in ProtoData should be updated too.References:
MANIFEST.MFfiles