<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 31, 2013
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20130531" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva :: Modules - Terminology</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarEnabled">
          
                        
                    
                

    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
                                  <div class="container"><div class="nav-collapse">
            
                
                                <ul class="nav">
                          <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Developers <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="index.html"  title="Overview">Overview</a>
</li>
                  
                      <li>      <a href="terminology.html"  title="Terminology">Terminology</a>
</li>
                  
                      <li>      <a href="metadata-content-model.html"  title="Metadata Control Model">Metadata Control Model</a>
</li>
                  
                      <li>      <a href="metadata-api.html"  title="Metadata API">Metadata API</a>
</li>
                  
                      <li>      <a href="repository-api.html"  title="Repository API">Repository API</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Modules <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="archiva-base/index.html"  title="Archiva :: Base">Archiva :: Base</a>
</li>
                  
                      <li>      <a href="archiva-scheduler/index.html"  title="Archiva :: Scheduler">Archiva :: Scheduler</a>
</li>
                  
                      <li>      <a href="archiva-web/index.html"  title="Archiva :: Web">Archiva :: Web</a>
</li>
                  
                      <li>      <a href="archiva-karaf/index.html"  title="Archiva :: Karaf">Archiva :: Karaf</a>
</li>
                  
                      <li>      <a href="metadata/index.html"  title="Archiva :: Metadata">Archiva :: Metadata</a>
</li>
                  
                      <li>      <a href="plugins/index.html"  title="Archiva :: Core Plugins">Archiva :: Core Plugins</a>
</li>
                          </ul>
      </li>
                <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li class="dropdown-submenu">
                                      <a href="project-info.html"  title="Project Information">Project Information</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="index.html"  title="About">About</a>
</li>
                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
</li>
                                  <li>      <a href="modules.html"  title="Project Modules">Project Modules</a>
</li>
                                  <li>      <a href="dependency-info.html"  title="Dependency Information">Dependency Information</a>
</li>
                                  <li>      <a href="dependency-management.html"  title="Dependency Management">Dependency Management</a>
</li>
                                  <li>      <a href="plugins.html"  title="Project Plugins">Project Plugins</a>
</li>
                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
</li>
                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
</li>
                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
</li>
                                  <li>      <a href="dependency-convergence.html"  title="Dependency Convergence">Dependency Convergence</a>
</li>
                                  <li>      <a href="license.html"  title="Project License">Project License</a>
</li>
                                  <li>      <a href="plugin-management.html"  title="Plugin Management">Plugin Management</a>
</li>
                                  <li>      <a href="distribution-management.html"  title="Distribution Management">Distribution Management</a>
</li>
                                  <li>      <a href="project-summary.html"  title="Project Summary">Project Summary</a>
</li>
                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
</li>
                                  <li>      <a href="dependencies.html"  title="Dependencies">Dependencies</a>
</li>
                              </ul>
            </li>
                  
                      <li class="dropdown-submenu">
                                      <a href="project-reports.html"  title="Project Reports">Project Reports</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="xref/index.html"  title="Source Xref">Source Xref</a>
</li>
                                  <li>      <a href="xref-test/index.html"  title="Test Source Xref">Test Source Xref</a>
</li>
                                  <li>      <a href="checkstyle-aggregate.html"  title="Checkstyle">Checkstyle</a>
</li>
                                  <li>      <a href="apidocs/index.html"  title="JavaDocs">JavaDocs</a>
</li>
                              </ul>
            </li>
                          </ul>
      </li>
                  </ul>
          
                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
    
  <input value="http://archiva.apache.org/ref/1.4-M4" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
                                                    
        
        
        <ul class="nav pull-right"><li>
    
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="right" data-size="large" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

        </li></ul>
                
                   
                      </div>
          
        </div>
      </div>
    </div>
    
        <div class="container">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="../../index.html" id="bannerLeft">
                                                                                                <img src="../../images/archiva.png"  alt="Apache Archiva"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="Apache Archiva">
        Apache Archiva</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="Archiva :: Modules">
        Archiva :: Modules</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Terminology</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 31 May 2013</li> 
            
                            </ul>
      </div>

      
                
        <div id="bodyColumn" >
                                  
            <!-- 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. --><div class="section"><h2>Terminology<a name="Terminology"></a></h2><p>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.</p><div class="section"><h3>Repository<a name="Repository"></a></h3><p>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.</p><p>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.</p></div><div class="section"><h3>Namespace<a name="Namespace"></a></h3><p>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.</p><p>In a Maven 2 repository, this maps to the group ID of an artifact.</p></div><div class="section"><h3>Project<a name="Project"></a></h3><p>A project is a simple grouping of artifacts that share a version in a repository. It does not contain subprojects.</p><p>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.</p></div><div class="section"><h3>Project Version<a name="Project_Version"></a></h3><p>A project version is the version best used to describe the project (the &quot;marketed version&quot;). 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:</p><ul><li>Archiva 1.4-SNAPSHOT may have artifacts <tt>archiva-1.4-20090909.123456-1.jar</tt> and <tt>archiva-1.4-20100201.345612-2.jar</tt>.</li><li>Jetty 7.0.0 may have an artifact <tt>jetty-7.0.0.v20091005.jar</tt></li></ul><p>In a Maven 2 repository, this maps to the (base) version of a project.</p></div><div class="section"><h3>Artifact ID<a name="Artifact_ID"></a></h3><p>The artifact ID uniquely identifies an artifact within a given namespace, project and project version. For example, <tt>archiva-1.4-20100201.345612-2.jar</tt> or <tt>archiva-1.4-20100201.345612-2.pom</tt>.</p><p>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).</p></div><div class="section"><h3>Metadata Repository<a name="Metadata_Repository"></a></h3><p>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.</p></div><div class="section"><h3>Metadata Content Repository<a name="Metadata_Content_Repository"></a></h3><p>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.</p></div><div class="section"><h3>Repository Resolver<a name="Repository_Resolver"></a></h3><p>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.</p></div><div class="section"><h3>Repository Storage<a name="Repository_Storage"></a></h3><p>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.</p></div></div>
                  </div>
          </div>

    <hr/>

    <footer>
            <div class="container">
              <div class="row span12">Copyright &copy;                    2006-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
                <p id="poweredBy" class="pull-right">
                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
              </p>
        
          
    
    
                
    <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
  </body>
</html>