Hello, Team,
Now that we have been putting so much effort into the refactoring of APIs, it has been
decided by the project leadership that as of the Neon Release, Papyrus will be adhering
to the Eclipse Guidelines for Version Numbering .
Accordingly, we will no longer be bulk updating the versions of all bundles and features
with every release. Instead, version numbers will evolve individually according to the
nature of their changes, in API and behaviour. All bundles and features had already been
bulk updated to version 1.2.0 earlier in the Neon development stream; these are unchanged
except where versions are updated to 2.0.0 to reflect API breakage from refactorings and
other changes.
Project Configuration Changes
Changes have been merged into the master branch for the Main and Developer plug-ins to
help us keep rigorous control over our versions:
all projects are configured with the PDE API Tooling builder. This flags various
problems in versioning, such as a bundle version that needs to be changed, missing @since
Javadoc tags for new APIs, etc. This does require developers to point the tooling at
a baseline of the previous Papyrus version for comparison. This is as simple as, for
example, configuring your Neon workspace to use a Mars installation of Papyrus as the
baseline
all projects are also configured with the Oomph Version Management builder. This
performs additional version validation that PDE does not, for example consistency of
feature versions with contained bundle versions, consistency of POM versions with their
corresponding plug-in/feature manifests, and more. For those that use the Papyrus Setup
model to provision their environments, the requisite tools will be installed for you.
Otherwise, you will get none of this Oomph goodness (you won’t see any change in PDE/JDT
behaviour)
the Developer Tools menu actions that bulk update versions of Papyrus plug-ins
and features, as well as bundle dependency version, are removed.
- new actions are added in the Developer Tools to assist in maintaining clean bundle
dependencies:
- in the Plug-in Tools context menu for plug-in projects and
MANIFEST.MF files
- an Update Dependency Ranges action that sets all bundle dependencies to have
version ranges compatible with the current version of each dependency in the
workspace or PDE Target. Certain bundles are excluded that are known not to
follow Eclipse’s semantic versioning, such as Guava and ICU4J
- an Optimize Bundle Dependencies action that computes the minimal bundle
dependencies that need to be re-exported to cover imported APIs that are exposed
by the bundle’s own exported API
- in the ibis-head menu in the main menu bar, a Synchronize POM Versions menu
that ensures all plug-in and feature projects have version numbers in the POM to
match the version number in the Eclipse manifest
Tests Changes
A few of the JUnit tests in the BundleTests class are removed because they are no
longer appropriate:
versionTest — bundle versions now evolve organically for each bundle
papyrusDependencyVersionTest — all Papyrus bundles no longer have the same version
reexportDependencies — re-exports are now employed where necessary to export a bundle’s complete API
Documentation Changes
Some of our procedural documentation in the Wiki is updated to reflect these changes:
If there’s any other documentation that needs updating, please let me know or, better,
just edit it. 😀
Build Changes
Note that the build system is not yet updated to integrate version validation via
PDE API Tools and Oomph, but this is in the plan. So, for now, we are relying on
developers using these tools in their workbenches to ensure consistency before pushing
changes to the central repository.
Thanks,
Christian
|