...
In the case of Maven, a POM is an artifact as much as the JAR that it corresponds to, however by processing the the POM, Archiva will populate information in the JAR's metadata. As much as possible Archiva will attempt to store this common information efficiently.
Artifact Collection
An artifact collection is any collection of artifacts as defined above. In general, these will be related in some way, however it is not necessary. A collection will often be represented together in the API that uses the artifacts, but may not be necessarily represented by the physical storage of the artifacts or metadata.
Collections can contain other collections to facilitate other types of aggregation.
For example, a new Product type could be defined that aggregates projects within a Maven multi-module project and has information related to a group of individual projects.
Build
A build is an artifact collection that represents a unit of concurrently built artifacts with a matching version.
A build may represent a release or a "snapshot" - the permanence and history is tracked by other associated metadata. The build number must be unique for a project, but can take any form (1.1.3, 1.2-SNAPSHOT, timestamped snapshot, subversion revision number, incremental build number). Other pieces of version information can be attached as metadata even if not the primary identifier (eg, 1.1.3 is subversion rev XYZ).
If a build already exists, depending the on the policy a history of information may be kept, it may be replaced, or addition to the repository may be rejected. This facilitates accommodating normal release versions, non-unique snapshots and builds over time.
Project
A project is a collection of 0 or more buildsproject versions, and a set of associated metadata universal to all builds of the project. This metadata may just represent the latest state and can change over time (and it may be revisioned accordingly).
...
- the unique identifier of the artifact within a buildproject version
- the unique identifier of the build project version within a project
- the unique identifier of the project within a repository
- the unique identifier of the project namespace within a repository
- the unique identifier of the repository
How each identifier is determine determined is up to the implementation of the repository.
For Maven 2, it is as follows:
- namespace = groupId
- project = groupId. artifactId
- build project version = version
- artifact = filename
...