When I try to explain what Maven is, then I’m using often the following picture:
Maven is a factory building with a brilliant factory manager
Imagine this: There is this empty factory building and you walk with your construction plan to the office of the factory manager. You enter the room and the factory manager takes your construction plan. He read it and then he runs to tool storage. In a short time he has all the tools to build your construction taken from the storage and build a production line.
According to your plan, he has also hired the Q & A people, which let first run some unit tests directly in the production line and also some integration tests. At the end of the whole production line is also an assembly line to build the kit that is ready to ship.
… at this point you say. “mvn clean install” and the factory manager builds the software.
The other day, you come back to the factory building with a new construction plan. And the factory manager “cleans” the building and setup a new production line for you. If he finds some tools not in the storage, he orders the tools directly from *Maven Central*. But with the same passion and quality as the day before the manager tries to build the software.
What Maven can do for you depends on your construction plan and the tools that are available
Back from the analogy:
- factory building -> maven
- factory manager -> mvn
- construction plan -> pom.xml
- tool storage -> maven repository
- tools -> maven plugins
Your construction plan contains all instruction about what builder should be used, how unit testing should work, and also how the assembly should run.
And it is not some kind of magic to build your own builder. I’ve built the headless designer integration, also a builder to build complete XPages Applications. It’s only hard work, nothing more and nothing less (and also a lot of fun 🙂 )