We have already explored creating both v1 and v2 plugins throughout this book. One major difference between v1 and v2 plugins is that v1 plugins have access to all the libraries and classes available in the application class path, whereas v2 plugins can't access them.
For example, v1 plugins can access some common utility classes by dropping the JAR file with those classes in the WEB-INF/lib
file or adding those classes under WEB-INF/classes
. However, that won't work with v2 plugins as they need the JAR files embedded with them under META-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.