blob: 580f93e59b6f229896d64e5005dbfbbf25125084 [file] [log] [blame]
----
Terminology
----
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
Terminology
Archiva uses a lot of pieces of data that can have heavily overloaded meaning, so it is important to ensure the
terminology used is well defined and consistently used. The following section highlights the terms used in these
documents.
* Repository
Repository is the most overloaded term, but when used alone it will refer to the abstract concept of anything that
can act as a repository. For example, an on-disk Maven 2 repository, a remote proxied repository, or a repository
group that appears as a single repository.
A repository is capable of storing a number of artifacts and their associated metadata. Each artifact is identified
by a number of elements: the repository itself, it's namespace, project, project version and artifact ID. Some
components are optional, depending on the repository type being discussed - for example each is mapped in a Maven 2
repository, while for a flat file storage only the repository and artifact ID (file path and name) is needed.
* Namespace
A namespace is a hierarchical grouping for projects and artifacts, allowing project and artifact IDs to more easily
be made unique within their namespace and to assist in mapping between different repository types.
In a Maven 2 repository, this maps to the group ID of an artifact.
* Project
A project is a simple grouping of artifacts that share a version in a repository. It does not contain subprojects.
In a Maven 2 repository, this maps to the artifact ID of an artifact. Note that multi-module projects will actually
represent multiple projects by default, and additional grouping (other than achieved by the namespace) would need
to be done through additional metadata.
* Project Version
A project version is the version best used to describe the project (the "marketed version"). It must be unique for
lookup and comparing project versions to each other, but the artifact(s) it contains may still use a different
version. For example:
* Archiva 1.4-SNAPSHOT may have artifacts <<<archiva-1.4-20090909.123456-1.jar>>> and
<<<archiva-1.4-20100201.345612-2.jar>>>.
* Jetty 7.0.0 may have an artifact <<<jetty-7.0.0.v20091005.jar>>>
In a Maven 2 repository, this maps to the (base) version of a project.
* Artifact ID
The artifact ID uniquely identifies an artifact within a given namespace, project and project version. For example,
<<<archiva-1.4-20100201.345612-2.jar>>> or <<<archiva-1.4-20100201.345612-2.pom>>>.
In a Maven 2 repository, this maps to the filename within the repository, including both the Maven artifact ID,
artifact version, classifier and type/extension. Note that the POM and the classic artifact will be stored with
separate artifact IDs, but the repository implementation stores the common information for the whole project
version (and perhaps all project versions in some instances).
* Metadata Repository
The metadata repository is the metadata representation of a given repository, containing information about the
artifacts it contains, as well as other auxiliary information such as statistics, events, etc.
* Metadata Content Repository
The metadata content repository is how the information in a metadata repository is persisted. It is effectively the
same in appearance to the metadata repository.
* Repository Resolver
A resolver decides how to translate a request into a given set of metadata or an artifact retrieved from repository
storage. The default resolver first queries metadata, falling back to the repository storage if available if
necessary due to not being found or being out of date. It is possible that new resolvers can be introduced to also
check proxied repositories or to group multiple repositories.
* Repository Storage
A physical storage medium for a type of repository. This may be a file system in Maven 2 format, a URL pointing to
a repository in a certain format, a flat set of files, etc. It can be queried and modified to affect the canonical
set of artifacts.