Software attributes
Other attributes
Apache Maven is an open-source software project management and comprehension tool based on the project object model (POM). Hosted by the Apache Software Foundation, Maven is written in Java and is used to build projects written in Java, C#, Scala, Ruby, and other languages. The software allows users to manage a project's build, including reports and documentation from a central piece of information. Maven started as part of the Jakarta project in the early 2000s, specifically as a way of simplifying the build processes in the Jakarta Turbine project. With multiple projects using their own slightly different Ant build files, Maven began as a standard way of building projects. This included defining what the project consisted of, publishing project information, and sharing JARs (Java Archives - popular ZIP file format) across several projects.
Maven's objective is to allow developers to understand the current state of development efforts in the shortest amount of time. It provides the following:
- A uniform build system—Using the POM and associated plugins, users who learn one Maven project can apply this knowledge to other projects.
- Quality project information—Maven offers helpful project information from POM and from project sources.
- Guidelines for better development practices—Maven aims to gather current principles such as specification, execution, and reporting of unit tests as part of the normal build cycle.

A diagram of the Maven architecture from Apache.
Maven is primarily used for Java-based projects helping to download dependencies that refer to the libraries or JAR files. The tool gets the right JAR files for each project, as there could be multiple versions of separate packages. Using Maven, users no longer have to visit the official websites of different software to download dependencies. Maven also helps to build the right project structure in struts, servlets, etc., which is essential for execution.
Over 2,000 companies use Maven. These companies are primarily based in the United States and operate in the computer science industry. However, the tool is also used in other industries, such as information technology, financial services, banking, and hospital. Data shows Maven has a 6.14 percent market share; competitors include Resolve (market share leader), Webpack, Gulp, Gradle, and Apache Ant. Large corporations using Maven include the following:
- Accenture
- JPMorgan Chase & Co
- Via Varejo
- Red Hat
- Mitratech Holdings, Inc.
- KRG Technologies
- Radio Canada
POM is an XML file containing information on the project and configuration details used by Maven to build the project; it is the fundamental unit of work in Maven. Configuration specified in the POM can include the project dependencies, the plugins or goals that can be executed, and the build profiles. Other information could include the project version, description, developers, and mailing lists. For most projects, the POM contains default values. When executing a task, Maven looks for the POM in the current directory, and it reads the file to obtain the necessary configuration information.

The basic structure for a typical POM file.
The following are key features of Maven:
- Simple project setups following best practices
- Applying the same practices across multiple projects
- Dependency management, including automatic updates and dependency closures
- A repository of libraries and metadata available out of the box and arrangements with open-source projects for real-time availability to new releases
- Ability to write plugins in Java or scripting languages
- Access to new features without significant extra configuration
- Ant tasks for dependency management and deployments outside of Maven
- Model-based builds with predefined outputs such as JAR, WAR, or distribution based on metadata about the project
- Coherent site of project information
- Release management and distribution publication
The development of Maven was led by Jason Van Zyl, who also founded the companies Sonatype and Takari. Maven dates back to the now-defunct Jakarta Alexandria project, which also led to the Gump and Forrest projects. The first import of prototype sources happened in August 2001. Maven spent roughly five months as part of Alexandria before moving to the Jakarta Turbine project. Although Maven started in Alexandria, the test bed for its use was the Turbine project. Turbine was in the process of decoupling into separate builds (i.e., a build for the persistence layer, services layer, and web layer), and engineers grew tired of maintaining multiple similar builds.
The project started with the aims of letting users have a single place to store everything related to a project and having a standard directory structure to prevent users from having to search for libraries, sources, and documentation. Van Zyl started with an XML representation and chose standards for a directory structure.

