In OSGi, packages are private by default. You must explicitly exporting a package so other modules can import and use them.
Here’s how to export packages:
Export-Package:header if you haven’t already added it.
List the package names after the
Workspace-based projects created using Blade CLI or Liferay Developer Studio have Bnd. Bnd propagates OSGi headers from the
bnd.bnd file to the module JAR
Don’t export the same package in multiple JARs. Exporting the same package from different modules leads to “split package” issues with unpredictable side effects.
Bnd makes a module’s exported packages substitutable. That is, Bnd substitutes your module’s exported package with a compatible package of the same name, but potentially different version, that’s exported from a different module. Bnd enables this by automatically making your module import every package it exports. In this way, the module can work on its own, but can also work in conjunction with modules that provide a different (compatible) version, or even the same version, of the package. A package from another module might provide better “wiring” opportunities with other modules. Peter Kriens’ blog post explains substitutable exports.
Now you can share your module’s terrific packages!