Let me try to answer these in sequence:
- DependencyInstaller is a service that can be @Injected (or looked up through the AddonRegistry) to add dependencies in your build descriptor
- ProjectFactory creates and finds projects. Projects are found/created through ProjectProvider implementations (Maven, Gradle, etc)
- AbstractProjectCommand is a specialization of UICommand providing a getProject method and some methods (isProjectRequired()) that are bound to the existence of a Project in the current context in order to work
- AddAddonDependencyCommand as the name says, adds addon dependencies to a project.
- UIWizardStep/UIWizard are specializations of UICommand to provide multi-step wizards. See core/ui at master · forge/core · GitHub for more info
- ScaffoldProvider is an SPI to support multiple scaffold implementations
The structure proposed by new forge addons provides a clean separation of concerns, so you avoid for example, using implementation details on addons that will consume your addon.
For an addon to call another addon, you need to @Inject the service the other addon exposes. See forge/core · GitHub for more info
To create a JPA Entity, you can @Inject the PersistenceOperations service from the javaee addon.
At last, but not least, see the "Process a Freemarker Template" example in http://forge.jboss.org/document/run-forge-embedded
Hope that helps!
Beautifully explained Thank you!I had the same doubts.