Excellent tool for project lifecycle managementhttps://www.trustradius.com/build-automationApache MavenUnspecified8.3451012019-05-02T20:02:42.316Z
May 02, 2019
Excellent tool for project lifecycle management
Score 9 out of 101
Overall Satisfaction with Apache Maven
We use Maven as the primary build tool for all of our Java projects. It allows us to manage all project dependencies, their versions, repository source, build, and deployment stage, It is easy to use and flexible, we just need to define our main dependency and it will pull out all necessary libraries and help to resolve conflict. With Maven, it is easy to manage our source code in a repository tool such as BitBucket and store all libraries in our Repository which we can share between all projects, so we do not need to replicate libraries in all source code repositories. Maven has a rich plugin which provides a various goal for the specific purpose based on project need such as report, log, version.
- Easy to install with GUI or command line, well integrated with almost IDE.
- Centralized locaiton for project configuration lifecycle managment.
- Has a rich plugin which supports various goals.
- Separate between source code and dependency in the project.
- Flexible on the configurations repository, built a parameter, goal so we could have a different solution for the different environment or stages such as dev, test or production.
- Good open source community and documentation.
- POM file in XML is quite messy, especially with a big project.
- Dependency management with a local cache sometimes causes conflict.
- Do not support scripting to add custom build commands.
- Improve project quality, as we require all dev to run unit test and a quality source code scan.
- Increase project development time as all project configurations are in transference with the developer.
- A centralization location to store all department project artifacts.
Maven is suitable with almost Java projects to obtain flexibility on building the application quickly. That makes it easier for the developer to manage project lifecycle and decouple between source code and its dependency. However, Maven requires a repository server to store an internal repository. Also, if you rely on a published repository such as https://mvnrepository.com/, sometimes it causes a problem when building. Also, if you need to specify a build command you need to look to another tool such as Gradle or Ant.