Jenkins vs Apache Maven: What are the differences?
What is Jenkins? An extendable open source continuous integration server. In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project.
What is Apache Maven? Apache build manager for Java projects. Maven allows a project to build using its project object model (POM) and a set of plugins that are shared by all projects using Maven, providing a uniform build system. Once you familiarize yourself with how one Maven project builds you automatically know how all Maven projects build saving you immense amounts of time when trying to navigate many projects.
Jenkins can be classified as a tool in the "Continuous Integration" category, while Apache Maven is grouped under "Java Build Tools".
Some of the features offered by Jenkins are:
- Easy installation
- Easy configuration
- Change set support
On the other hand, Apache Maven provides the following key features:
- Simple project setup that follows best practices - get a new project or module started in seconds
- Consistent usage across all projects means no ramp up time for new developers coming onto a project
- Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)
"Hosted internally", "Free open source" and "Great to build, deploy or launch anything async" are the key factors why developers consider Jenkins; whereas "Dependency management", "Necessary evil" and "I’d rather code my app, not my build" are the primary reasons why Apache Maven is favored.
Jenkins and Apache Maven are both open source tools. It seems that Jenkins with 13.3K GitHub stars and 5.48K forks on GitHub has more adoption than Apache Maven with 1.74K GitHub stars and 1.28K GitHub forks.
Facebook, Netflix, and Instacart are some of the popular companies that use Jenkins, whereas Apache Maven is used by Zillow, Intuit, and Zalando. Jenkins has a broader approval, being mentioned in 1775 company stacks & 1527 developers stacks; compared to Apache Maven, which is listed in 305 company stacks and 142 developer stacks.
What is Jenkins?
What is Apache Maven?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
Sign up to add, upvote and see more consMake informed product decisions
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
Java build tool for internal processes: Jezebel daemon (in-mem classifiers/recommendations/feature analysis), Connemara (batch resume stream processor) and opes (opening elasticsearch plugin, simple process that listens for new incoming resumes and triggers analysis by Jezebel via a tcp json command).
All of our pull requests are automatically tested using Jenkins' integration with GitHub, and we provision and deploy our servers using Jenkins' interface. This is integrated with HipChat, immediately notifying us if anything goes wrong with a deployment.
Jenkins is our go-to devops automation tool. We use it for automated test builds, all the way up to server updates and deploys. It really helps maintain our homegrown continuous-integration suite. It even does our blue/green deploys.
- Continuous Deploy
- Dev stage: autodeploy by trigger push request from 'develop' branch of Gitlab
- Staging and production stages: Build and rollback quicly with Ansistrano playbook
- Sending messages of job results to Chatwork.
All Java-Projects are compiled using Maven. We prefer it over Ant and Gradle as it combines lightweightness with feature-richness and offers basically all we can imagine from a software project-management tool and more.
Currently serves as the location that our QA team builds various automated testing jobs.
At one point we were using it for builds, but we ended up migrating away from them to Code Pipelines.
We use Jenkins to schedule our Browser and API Based regression and acceptance tests on a regular bases. We use additionally to Jenkins GitlabCI for unit and component testing.
Package management and build automation for the back-end, plus integration of front-end build automation using Gulp/Bower/NPM.
Necessary for Google j2objc