Apache Maven is an open source build automation tool.
N/A
CircleCI
Score 9.5 out of 10
N/A
CircleCI is a software delivery engine from the company of the same name in San Francisco, that helps teams ship software faster, offering their platform for Continuous Integration and Continuous Delivery (CI/CD). Ultimately, the solution helps to map every source of change for software teams, so they can accelerate innovation and growth.
Building and automating packaging of software can be a challenging task. As the complexity of the project grows so do the dependencies on third-party artifacts. Using Maven we can define and manage the project structure centrally and it helps improve overall build times.
CircleCI is well suited if you, your developer, or team of developers have already worked with it in the past. They don't need to go through the learning curve of yet another Continuous Integration tool. Circle handles Continuous Integration workflows very well, including pretty complex workflows. With that said, Circle can get expensive if you need to run multiple containers in parallel and might not be as easy to setup as some alternatives, such as Jenkins.
Full customization and scripting abilities. Using tools like bash scripts, SSH, and Node, running almost anything upon committing some code to GitHub becomes possible.
Integration with all of our favorite services. GitHub and Slack in particular are crucial to our business and CircleCI's integration is seamless and full-featured.
Great config file syntax. Many CI services require you to perform advanced configuration in a UI. This is fine at first (and CircleCI offers this for many options available), but when you start needing to manage a large number of projects, committing configuration changes to a Git repository is more consistent and maintainable than making the change many different times manually in a UI.
One of the issues with building software using Apache Maven is that its cache resolution is not optimal. It pulls down all the artifacts onto the developer's local machine and can sometimes result in conflicts.
The build process can vary in time and gets progressively longer as the project's complexity increases.
CircleCI mostly getting built into both upstream platforms (Github/Gitlab) and downstream platforms (AWS, Azure, GCP), in which cases it's often a better fit or can be used as a part of existing tooling
UX can be confusing to navigate and see what's happening.
The overall usability of Apache Maven is very good to us. We were able to incorporate it into our company's build process pretty quickly. We deployed it to multiple teams throughout the entire enterprise. We got good feedback from our developers stating that Apache Maven has simplified their build process. It also allowed to to standardize the build process for the entire enterprise, thus ensure that each development team is using the same, consistent process to build code.
It's pretty snappy, even with using workflows with multiple steps and different docker images. I've seen builds take a long time if it's really involved, but from what I can tell, it's still at least on par if not faster than other build tools.
I can't speak to the support, as I've never had issues. Apache Maven "just works," and errors were user errors or local nexus errors. Apache Maven is a great build/dependency management tool. I give it a 9/10 because occasionally the error message don't immediately indicate a solution...but again, those errors were always user or configuration errors, and the Maven documentation is extensive, so I don't find fault in Maven, but in its users.
I haven't personally used their support service, but I have heard from others that they are responsive. I've also seen only one or two downtimes in over a year of use and both were no more than an hour or two.
Ant is useful if your build is heavily based on customs scripts running in the right order. Maven greatly simplifies the process to keep track of and download build dependencies compared with Apache Ant. If your build is based on multiple custom scripts running in a specific order there is a lot of overhead in Maven compared to Apache Ant.
Jenkins and Teamcity both have additional features that maybe you require, but they are also a lot more work to get set up and working. There's a much longer learning curve to getting these configured for a simple build. They're not hosted, so you have to maintain the infrastructure and scale yourself. They're both good products if you require more than CircleCI, but if not, skip the extra headache and go with something simple like CircleCI.