Day after day, Development Languages are growing fast and faster so Code Build Tools must evolve following it.
In basically, I am a Java developer so I will talk about Java Build Tools. There are many Java Build Tools but in my point of view, there are 3 most popular tool with evolution as below:
(2001) => (2000) => (2004) => (2007)
Ok! I guess that you are thinking “why does Eclipse appear in above list? Eclipse isn’t build tool! Eclipse was born after Ant!”. Yes, Eclipse isn’t completely a build tool but very long time ago, they used Eclipse as a build tool. So I can call Eclipse is a dummy build tool. And that’s why Ant became the most popular at that time.
Ant is the first “modern” build tool that was released in 2000. It became the most popular build tool for Java projects in the short time. Ant also is the programing language so you can do crazy thing with Ant, supports build and control everything.
Ant was good at that time but there are some remaining issues. I’m taking about Central Dependencies Management and Standardized. Ant does not support Central Dependencies Management so it is difficult to use in big project. Ant’s fan can use Ant combine with Apache Ivy to manage dependencies but it’s complex. About Standardized, Ant is a kind of programing language so everyone can do everything they want so nothing is standard, common rules for others.
Maven is the next generation of build tool, was released In 2004. Maven is really the good build tool. Lets go to the Pros and Cons of Maven.
- Central Dependencies Management:
- Everyone must be compile/building/deploying in the same way, generally standard procedure
- A tons of plugin for difference purposes
- Use simple pom.xml to configure, easy to read with clearly tag names.
- Developer must follows standard rules: pom.xml configuration, source code structure, maven commands
- A little bit difficult for customize tasks
- Quite difficult with complex project: parent-modules relationship,…
With me, even though Maven is the best build tool, when I met and tried to use Gradle, I put Gradle higher than Maven in my mind. And I would like to say “This time is the age of Gradle“.
I will show you why I said that.
Gradle was release in 2007 but at that time, Maven is the most popular build tool so Gradle is less popular than other build tools. Until 2013, when Google adopted Gradle as default build tool for Android, Gradle becomes more popular day by day.
It is a language-based build tools that builds upon the concepts of Apache Ant and Apache Maven. I will not list detail Pros and Cons of Gradle because It gets all advantages of Ant and Maven. Of course, Gradle must be able to fix disadvantages of 2 others.
Next, there are too many topic on the internet talk about “what should we use? Ant, Maven or Gradle?”. Then I ask myself: “Why do we need to use only one build tool?” and my answer is the combination three of them.
Gradle is embedded with Ant build. Gradle is already inherited Central Dependencies Management from Maven. So Gradle is what we need.
As the below captured screenshot, I use Maven and Gradle together. I able to build with Maven’s commands or with Gradle’s script. I hope this style will become popular in the future ^^!
This post is too long, go to part 2 for migrate from current Maven to Gradle.