SetupMyProject was create because it's a little bit hard to setup Java Projects, at least for me. It generates your project based on the technology chosen and adds all configurations you need to run as soon as you download it. :) If you already used it, what do you think about giving it a star? :) If you want to collaborate, just send a PR (I need to create issues :P).
* Download forge, just follow this link https://repository.jboss.org/nexus/service/local/artifact/maven/redirect?r=releases&g=org.jboss.forge&a=forge-distribution&v=2.13.0.Final&e=zip&c=offline
* Rename application.properties.example to application.properties and set your installation/addons dir.
* In order to verify if forge is working as expected, just execute the ForgeStandaloneTest class.
* A new project will be created in the temp dir, the path will be returned.
* Import the generated project as a maven one :).
You need to create a database called setupmyproject_dev. In relation to that, it is important that all controllers have the @Transactional annotation, you can use the javax package. This is important because any step could access the database.
It is a enum that has all kind of projects that users can create, at least until now. Take a look and analyze how it configures the sequence of steps, from the beginning until the end of the wizard.
ProjectCommand is the interface you need to implement in order to create a new Command. Take a look in the implementations of commands to generate a Spring MVC project. The CommandGenerator is necessary because, probably, from your form you will need to generate a new Command. Take a look in the com.setupmyproject.controllers.forms package.
If you need some sort of validation, take a look in the MavenSetupController class. If you don't need, take a look in DBSetupController.
To access the downloads page, access RequestedSetup table, choose a token and access http://localhost:8080/downloads/index?token=tokenGeradoNoBancoDeDados.
In your ProjectType, you can provide all the facets that will be needed to execute your command.
Each ProjectCommand has a method called getNameKey() and the return is used as key in your pages. Did you create a new command? Give it a name! There is a default implementation in the interface, that uses your class name as part of the Command name key. When the ProjectCommand is a Enum, you must override the getNameKey().
Basically it uses the getNameKey(). For the ProjectType, you must name the Enum directly in the properties.
All coments are written in portuguese. I still need to translate.