‘Make JAR, not WAR.’ — Josh Long
- Runnable Jars are a convenient way to package self-contained runnable application. This way we can minimize the dependencies.
- It is very cloud friendly and convenient. (bring your own container)
- Sharing application server by multiple applications was one of the reasons for packing multiple applications as wars.
- Build by Spring boot Maven and Gradle plugin
- Version control everything that is needed to run the application
- Easy to scale. For instance, copy it to another server, and then ‘just run it’. No installation and/or configuration necessary of a container such as TomEE, Wildfly, Websphere etc.
- Since we have to provide all dependencies, we know exactly what they are for each build
- We would like seen application as a single process that can be easily restarted with a service like upstart.