Jason van Zyl Stéphane Mor Glossary

Glossary

This document describes some of the most common terms encountered while using Maven. Those terms, that have an explicit meaning for Maven developpers, can sometimes be confusing for newcomers.

TermDescription
Artifact An artifact is something that is either produced or used by a project. Examples of artifacts produced by Maven for a project include: JARs, source and binary distributions, WARs.
Dependency A typical Java project relies on libraries to build and/or run. Those are called "dependencies" inside Maven. Those dependencies are usually other projects' JAR artifacts.
Plugin Maven is organized in plugins. Every piece of functionality in Maven is provided by a plugin. Plugins are Jelly scripts which are given the POM to perform their task. Examples of plugins are: jar, eclipse, war. You usually call a plugin with its name, such as maven jar. Plugins can be added, removed, edited at runtime.
Project Maven thinks in terms of projects. Everything that you will build are projects. Those projects follow a well defined "Project Object Model". Projects can depend on other projects, in which case the latter are called "dependencies".
Project Object Model (POM) The Project Object Model, almost always referred as the POM, is the document that Maven needs to work with your project. Its name is "project.xml" and is located in the root directory of your project.

To learn how to build the POM for your project, please read this document.

Repository A repository is an structured storage of project artifacts. Those artifacts are organized under the following structure: $MAVEN_REPO/project id/artifact type/project-version.extension.

For instance, a Maven JAR artifact will be stored in a repository under /foo/maven/jars/maven-1.0_beta-8.jar.

There are different repositories that Maven uses. The "remote repository" is the global repository (or one of its mirrors) used to download missing artifacts. The "central repository" is the one used for a site-wide installation (for developpers of a company for instance). The "local repository" is the one that you will have on your computer. The local repository is filled with dependencies coming from either the central repository or the remote one.