December 28, 2017
Score 9 out of 10
Overall Satisfaction with Apache Maven
- Maven is useful in building Java applications.
- Quick project setup, no complicated build.xml files, just a POM and go. Reduces the size of source distributions, because jars can be pulled from a central location.
- Maven provides a very rigid model that makes customization tedious and sometimes impossible. While this can make it easier to understand any given Maven build, as long as you don’t have any special requirements, it also makes it unsuitable for many automation problems.
- Maven has few, built-in dependency scopes, which forces awkward module architectures in common scenarios like using test fixtures or code generation. There is no separation between unit and integration tests
Maven vs Gradle
- Maven is much more mature vs Gradle and been around for a long time. Easy to get developers. Gradle is new but adoption is fast
- In Maven dependency management does not handle conflicts well between different versions of the same library. Its better in Gradle.
- Customization of targets (goals) is hard in Maven and simple in Gradle
- By making it simple to manage multiple projects it promotes modular design of code.
- It is easy to use modular code, but when the code is in separate compiling projects it is impossible to cross references between modules of code. Maven helps by enforcing modular design of code.
- Dependency Management is very simple and clear.