It&#x27;s the only build system I&#x27;ve ever seen that&#x27;s truly declarative. You can&#x27;t put random turing-complete computation in the middle of a maven project definition; you can only invoke well-defined plugins (if you want a custom build step, you package it up as a plugin - written in ordinary java, unit testable and all the rest of it).<p>The result is there are no &quot;snowflake builds&quot;. One project tends to build exactly the same as any other; virtually every project uses the same source directories etc.. It makes it really easy to be productive straight away when switching projects. And the limited build steps mean the IDE integration can be very complete.