Sharing common libraries across v2 plugins
We have already explored creating both v1 and v2 plugins throughout this book. One major difference between v1 and v2 plugins is that the v1 plugin has got access to all the libraries and classes available in the application class path whereas v2 plugins can't access them.
For example, the v1 plugins can access some common utility classes by dropping the JAR file with those classes in the WEB-INF/lib
folder or adding those classes under WB-INF/classes
. But that won't work with v2 plugins as they need the JAR files embedded with them under MET-INF/lib
or the classes embedded in them. How will we handle this scenario when there is a utility class that we need to share across a few v2 plugins? Should we embed the class in all the plugins? The answer is no, and in this recipe, we will see how we can share those utility classes across v2 plugins by creating an OSGi bundle.
Getting ready
Create a skeleton plugin using the Atlassian Plugin SDK.