The attached patch extends roo with a Bundlor add-on. The root command is "install bundlor" which generates a template.mf file and updates the pom to include use of Bundlor during the packaging step. Once bundlor is installed for a project, there is a set of commands that become available to manage the template. Full command list:
bundlor non-exported packages [to control which packages should be private]
bundlor version package exports
bundlor configure imports
bundlor add explicit import
Some notes on the patch:
- Adding bundlor to a project required not only updating dependencies, but also updating build plugins. I've extended the core project model to cope with this.
- The current version of bundlor drags in snapshot dependencies for which I had to add new repositories to the master pom file. When bundlor gets to M5 these should no longer be needed.
- The addon-bundlor project depends on a couple of external libraries outside of the Spring Roo project. I had to explicitly add these as dependencies in the bootstrap project in order for the roo-dev classpath to be properly generated. Was there a better way??
- The bundlor commands update the template.mf file. Some of the time when they execute roo puts out a "Managed ROOT/template.mf" message, but other times it doesn't. The file is always correctly updated. Not sure why this is??
- Bundlor currently doesn't work due to maven snapshot hell . I.e. if you run mvn package you'll get a NoClassDefFoundError. The roo addon is doing the right thing, this is an issue with Bundlor itself that will be fixed in M5.
This patch is against revision 156 of trunk.
(Note, in this build of roo I also noticed that roo create project foo, followed by "mvn package" causes a build failure because there is no web.xml file).