Maven

The functionality of Maven against a script-based build tool very limited. All the information about a project and how to build it must be specified in a pom.xml file. Internally, you can configure the project and the build by using XML syntax. All  the possibilities that you have to configure the project are defined by Maven in a XSD file. By doing so, it’s quite easy to define static metadata of the project like the name or the project description. Even technical information like groupId, artifactId, version, or static dependencies can easily be defined. By using Maven as a build tool, your project will be build by using a best practice workflow to build Java projects that are defined in several tasks. This is fine for small projects and APIs, but if you need to do something special, you need to add plugins to Maven. Such a plugin must be defined for your project by using the limited XML syntax of Maven. The functionality of such a plugin must be coded in Java and provided as a JAR. For large and complex projects, you will need several of these projects that will always end in a large and unreadable XML file as the description and build definition of your project.

Maven was released in 2004. Its goal was to improve upon some of the problems developers were facing when using Ant.

Pros
Cons
In the mean time the interest for DSLs (Domain Specific Languages) continued increasing. The idea is to have languages designed to solve problems belonging to a specific domain. In case of builds, one of the results of applying DSL is Gradle.In the mean time the interest for DSLs (Domain Specific Languages) continued increasing. The idea is to have languages designed to solve problems belonging to a specific domain. In case of builds, one of the results of applying DSL is Gradle.

Quick Start Video of Puppet