Chapter 7. Base Add-On Overview

When you download the Spring Roo distribution ZIP, there are actually two major logical components in use. The first of these is the "Roo core", which provides an environment in which to host add-ons and provide services to them. The other component is what we call "base add-ons". A base add-on is different from a third party add-on only in that it is included in the Roo distribution by default and does not require you to separately install it. In addition, you cannot remove a base add-on using normal Roo commands.

Base add-ons always adopt the package name prefix org.springframework.roo.addon. We also have a part of Roo known as "Roo core". This relates to the core modules, and these always have package names that start with org.springframework.roo (but excluding those with "addon" as the next package name segment, as in that case they'd be a "base add-on"). Roo core provides very few commands, and whatever commands it provides are generally internal infrastructure-related features (like "poll status" or "metadata for id") or sometimes aggregate the features provided by several individual base add-ons (e.g. "entity jpa --testAutomatically").

Add-ons that do not ship with Spring Roo but are nevertheless about to be used with it are known as "installable add-ons" (these were previously called "third-party add-ons", but we decided to change the name in Roo 1.1 in view that SpringSource itself was publishing add-ons that were not shipping as part of Roo and the use of the term "third-party" was confusing). Such add-ons do not appear under the org.springframework.roo package name space. A large number of individuals and organizations publish installable add-ons, and indeed even within the SpringSource division of VMware we have teams publishing installable add-ons. The decision as to whether an add-on becomes a base add-on or an installable add-on depends on a large number of factors, but in general we prefer installable add-ons over base add-ons. This offers flexibility around release cycles, licenses, deployment footprint, code maintenance and so on.

Of course as a user of Roo you do not need to be aware of whether a particular component is part of Roo core, a base add-on or an installable add-on. It's just useful for us to formally define these commonly-used terms and explain the impact on whether you need to install or uninstall a component or not.

The individual base add-ons provided by Roo provide capabilities in the following key functional areas:

We have added dedicated chapters for many of these functional areas in this, Part II of our documentation. You can also find more introductory material concerning these areas in Part I, along with our samples, the command reference and project resources.