I am experimenting with AspectJ. Aspects allow you to write a cross cutting concern that gets applied at selective points anywhere in your bundles (or 3rd party bundles).
I created a bnd exporter plugin that will create an executable JAR, and then use the AspectJ compiler ajc to weave each bundle based on aspect bundles. The aspect bundles and a properly wrapped aspectj runtime bundle are also added.
Aspects do not map very well to modules since they are crosscutting. I tried to keep the modularity of OSGi while still allowing the full support. However, some actual usage is needed. If people want to give this a test ride, you can find the manual here.
This requires I am on a certain version of bndtools? I am going to have to do some searching to figure out what versions of the aqute libs we are using with gradle.