Kura will version packages and bundles consistent with OSGI Semantic Versioning. Each developer will be responsible for updating the major, minor, and micro version numbers consistent with the provider/consumer model outlined in the above OSGI document.
Kura versions have to be managed for 3 different levels: package, bundle, and kura itself.
A version for our purposes has 4 parts:
major 1 minor 1.1 micro 1.1.1 qualifier 1.1.1.qualifier OR 1.1.1-SNAPSHOT
To summarize the OSGI Semantic Versioning policy, the version parts should be updated for:
major a breaking change (API consumers need to be updated, e.g. a method is removed from the API) minor a backward compatible change (API providers need to be updated, e.g. a method is added to the API) micro a bug fix (no API change) qualifier a new build
Whenever a package version is updated, the version for the bundle containing it must also be updated (if it hasn't already), as well as the Kura version (if it hasn't already). The version level change should be consistent among the levels so if the minor version was changed for a package, for example, then the minor version for the bundle should be updated.
Version changes should be made relative to the last release. So if your update requires a micro version change, but another developer has already changed the micro (or minor, or major) version, then you don't need to change the version again. See this page for some example scenarios. Note that when the bundle version is changed, that bundle will not get included into the build unless you specify the new version in the kura/distrib/config/kura.build.properties file.
In the develop branch, all projects should have "-SNAPSHOT" (in the poms) or ".qualifier" (in the manifest) as part of their version. This is so that the artifacts are installed into the snapshot repository instead of the release repository during the Hudson build. When a new version of Kura is released, the "-SNAPSHOT" and ".qualifier" should be removed for new versions of bundles that are being released. An easy way to tell which bundles have been updated since the last release is by looking at the kura/distrib/config/kura.build.properties file, since they should have a "-SNAPSHOT" in their version (the distrib build should continue using the previously released version, i.e. not "SNAPSHOT", for bundles that have not been updated).
How to update
To update the Kura version, update the kura.version property in distrib/config/kura.build.properties. Then update the "<version>" tags in target-platform/pom.xml, kura/manifest_pom.xml, and kura/pom_pom.xml. These versions should all match. To update the child modules for these poms, you can use the following commands:
# from the kura/target-platform directory mvn -f pom.xml -N versions:update-child-modules -DgenerateBackupPoms=false # from the kura/kura directory mvn -f manifest_pom.xml -N versions:update-child-modules -DgenerateBackupPoms=false mvn -f pom_pom.xml -N versions:update-child-modules -DgenerateBackupPoms=false
The bundle version is specified in both the pom.xml and MANIFEST.MF of that bundle's project. You can edit these manually, or use:
cd org.eclipse.kura.project.subdirectory mvn -Dtycho.mode=maven org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=NEW_VERSION-SNAPSHOT
To update the version for a package, edit the version specified in the "Export-Package" section in MANIFEST.MF Update any other bundles/packages that depend on that package as necessary