Template for a full-blown Vaadin application that only requires a Servlet 3.0 container to run (no other JEE dependencies).
The project consists of the following three modules:
- parent project: common metadata and configuration
- wbso-addon: addon module, custom server and client side code
- wbso-ui: main application module
- wbso-backend: backend module, contains any server side java code and dependencies
To compile the entire project, run "mvn install" in the parent project.
Other basic workflow steps:
- getting started
- compiling the whole project
- run "mvn install" in parent project
- developing the application
- edit code in the ui module
- run "mvn jetty:run" in ui module
- open http://localhost:8080/
- adding add-ons to the project
- edit POM in ui module, add add-ons as dependencies
- client side changes
- edit code in addon module
- run "mvn install" in addon module
- if a new add-on has an embedded theme, run "mvn vaadin:update-theme" in the ui module
- debugging client side code
- run "mvn vaadin:run-codeserver" in ui module
- activate Super Dev Mode in the debug window of the application
- enabling production mode
- set vaadin.productionMode=true system property in the production server
When developing the theme, Vaadin can be configured to compile the SASS based theme at runtime in the server. This way you can just modify the scss files in your IDE and reload the browser to see changes.
To use on the runtime compilation, open pom.xml of your UI project and comment out the compile-theme goal from vaadin-maven-plugin configuration. To remove an existing pre-compiled theme, remove the styles.css file in the theme directory.
When using the runtime compiler, running the application in the "run" mode (rather than in "debug" mode) can speed up consecutive theme compilations significantly.
The production module always automatically precompiles the theme for the production WAR.
If Vaadin pre-releases are not enabled by default, use the Maven parameter "-P vaadin-prerelease" or change the activation default value of the profile in pom.xml .