Changes in 7.1.0 - bndtools/bnd GitHub Wiki

Bnd/Bndtools 7.1.0

See the Release section of the README for where to find Bnd/Bndtools.

This is a breaking release because we moved the code base to Java 17.

Bndtools

  • Bndtools now requires Eclipse 4.25 (2022-09) or later.
  • added help buttons to various panels linking to the corresponding Website or manual page.

Templates

Resolution View enhancements

  • new search filter for Requirements and Capabilities
  • new filter to hide optional requirements
  • new filter to detect (problematic) capabilities which are exported by multiple bundles but with different package content (split package problem)
  • show number of current results (after filtering) for Requirements and Capabilities
  • Copy to clipboard via Ctrl / Cmd + C for Requirements and Capabilities which copies their tooltip contents. This helps during debugging and communicating with others about it.
  • updated website about Resolutions View
  • Double Clicking on an entry of the ResolutionsView (Requirements and Capabilities) now opens the Advanced Search of Repository Browser in the "Other" tab and prefills the fields for namespace and filter.

Tip: Did you know you can drag&drop selected entries from Resolutions View e.g. Requirements to the Customize imports panel of the .bnd-editor? This can become quite handy when you want to declare some requirements of a bundle as resolution:=optional.

.bndrun View

  • You can click Resolve multiple times now to keep multiple resolution results open. Can be useful to compare different resolution attempts.
  • improved handling of versions which are added a bundle is added to -runrequires or -runbundles via drag&drop or added in the dialog.
  • The debug output of Resolution Failure result panel was extended
  • a shorter summary at the top trying to better explain what could not be resolved
  • a section explaining when some bundles were blacklisted on the -runblacklist and prevented resolution
  • Uses constraint violation are now logged which have been igored incorrectly before, allowing better debugging of resolver wiring (see example)
  • The Unresolved Requirements list now has a search bar for filtering the list. This can help searching for clues based on the error message above.

Repository Browser

  • double clicking on a result entry of an Advanced search (e.g. filter by package name) now opens the jar-file of the bundle. this is now same behavior as double clicking on a bundle-version in the repository browser without advanced search filtering
  • added Copy to Clipboard submenu (Right-click on a Repository) for different kinds of information
  • add Update Revisions submenu (Right-click on a Repository), This allows to increase versions of a full central.mvn maven index file (in cnf folder). Similar functionality already exists if you right-click on a single RepoBundle-Revision entry, but this one here does it for the whole repository. This basically brings the MbrCommand e.g. bnd mbr update -s micro to the bndtools UI. It also supports a dry-run which copies the result to the clipboard without updating the central.mvn index file.

BndEditor for cnf/build.bnd Plugin Management improved

  • Plugins are now displayed and editable via dialog if defined via merged properties (e.g. -plugin.0.Main, -plugin.1.Testing etc.)
  • added 2 Repository Plugins to the Add-Plugin dialog (POMRepository and P2Repository)
  • See PR for details

Tagging of repositories

  • a new tagging mechanism for repositories in build.bnd has been added which allows to assign a list of tags to a repository. This can be used for filtering repositories. One use case was to exclude the baseline repostory from resolution.

Bugfixes

  • fixed bug in Package browser / Right-click / Refactoring / Rename Package which now works again
  • fixed some race conditions error related to the JAR Editor (Error creating temp folder for JAREditor)
  • fixed bug in BndPomRepository which could not address an OSGi bundle by Maven GAV coodinates. This is now consistent with MavenBndRepository and fixes problems with bnd.bnd content like this, where a bundle is addressed by GAV instead of bsn:
-buildpath: \
	commons-cli:commons-cli;version=1.2.0,\

-includeresource: \
	@${repo;commons-cli:commons-cli;latest},\
  • fixed a problem, that newly created Project Template projects required a Eclipse restart to show up in the New Bnd Project wizard. Now they show up immediately after creation
  • fixed Source lookup during debugging for (usually non-OSGi) .jar files included via in bundle classpath (-includeresource: ${repo;foo.bar;latest}; lib:=true) (see #6165)

Bndtools m2e

Bnd

  • Improvement / Fix: Import-Package (coming from Export-Package) are not automatically added to generated Manifest anymore, if the export does not specify a version. This now conforms better to the specification which requires a version on exports. Notice that this results in different generated Manifests if exports do not specify a version. (PR #6270)

Bnd Command Line

  • TBD

Documentation

  • TBD

Bnd Maven Plugins

  • bnd-maven-plugin: new option deleteExistingManifest to delete existing MANIFEST.MF (e.g. from previous build) which could have lead to surprising results when process-classes is executed multiple times.
  • maven resolver plugin now prints more helpful output in verification-mode to help identifying problems. It shows the diff between current -runbundles and calculated bundles (Example: Diff [org.osgi.service.cm;version='[1.6.1,1.6.2)'] exist in existing runbundles but missing in calculated runbundles)

Bnd Gradle Plugins

Backward compatibility

  • All Bnd artifacts are built to run on Java 17 or later.
  • Bndtools is built to run on Eclipse 4.25 (2022-09) or later. So Bndtools may not run on older versions of Eclipse.
  • Bndtools m2e is built to run on Eclipse m2e 2.0.5 or later. So Bndtools m2e may not run on older versions of Eclipse m2e.
  • The Bnd Maven plugins require a minimum of Maven 3.3.9. The bnd-generate-maven-plugin's poorly named goal bnd-generate has been renamed generate
  • The Bnd Gradle plugins require a minimum of Gradle 7.3.
  • The Bnd Gradle plugins and tasks underwent an update for 7.0. A number of previously deprecated conventions have been removed.

Known Issues