A Guice plugin is simply a JAR file which separates commonly used functionalities. Developing a separate plugin could provide us a variety of benefits. Few of these could be like grouping various initialization tasks, preparing factories to instantiate objects, and so on. A separate plugin could also be used to develop interfaces and classes, which could help us to analyze bindings and write custom extensions.
In our case, we find it a good option to separate functionality of initializing and loading our custom modules. Separating the functions, which are not dependent on application logic increases reusability. We will separate MainModule, which loads other modules and make it a part of plugin, guice-analyst. This plugin then could be used in any different project; in our case, it is used as flights-struts-jpa-ext.