Adam Bien's Weblog
Maven: Lifecycle Hooks Lead To Infrequent Integrations
You could build, test and deploy the entire Java EE Application and even create a working application server from scratch with a single
mvm clean install command. The only problem is: it will take forever and you will have to repeat the whole process over and over again, even if you were only interested in particular build steps.
mvm clean install would just execute the unit tests, your feedback will be significantly faster. Instead of waiting hours, you get the first results in seconds.
A series of composable jobs, each executing a goal or maven plugin, could be realized with http://jenkins-ci.org, or a simple shell / batch script on the developer's machine.
Instead of executing all plugins at once by hooking them to the lifecycle, you could implement a series of chained together jobs. E.g.
mvm clean install(
mvn clean packagesuffices as well)
- Job: server setup
- Job: deployment
- Job: system test execution
- Job: quality assurance
- Job: promotion
- Job: tagging / release
The faster the feedback, the more valuable it gets. A monolithic
mvn clean install leads to too long builds, less feedback and becomes less valuable for Continuous Integration. CI degrades to nightly builds…
Just start with an essential setup essential and not with a super-pom.
[See also an in-depth discussion in the "Real World Java EE Night Hacks--Dissecting the Business Tier" book, page 136 in, chapter "Continuous Integration and QA"]
Summer Workshops: From Java EE 7 Bootstrap and Effective Java EE 7 to Java EE 7 Architectures