<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<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="author" content="2012-09-15" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation &#x2013; Deploying to Repository</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.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.6.min.js"></script>
      <!-- Google Analytics -->
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
      </head>
    <body class="topBarDisabled">
                      <a href="https://github.com/apache/archiva">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png"
        alt="Fork me on GitHub">
    </a>
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://archiva.apache.org/" id="bannerLeft"><img src="http://archiva.apache.org/images/archiva.png"  alt="Apache Archiva"/></a></div>
        <div class="pull-right"><a href="http://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation"/></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li class=""><a href="https://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../../../index.html" title="Archiva">Archiva</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Archiva Documentation">Archiva Documentation</a><span class="divider">/</span></li>
    <li class="active ">Deploying to Repository</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-11-30</li>
          <li id="projectVersion" class="pull-right">Version: 3.0.0-SNAPSHOT</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Introduction</li>
    <li><a href="../quick-start.html" title="Quick Start"><span class="none"></span>Quick Start</a>  </li>
    <li><a href="../tour/index.html" title="Feature Tour"><span class="none"></span>Feature Tour</a>  </li>
    <li><a href="../release-notes.html" title="Release Notes"><span class="none"></span>Release Notes</a>  </li>
    <li><a href="../../../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
          <li class="nav-header">Users Guide</li>
    <li><a href="../userguide/browsing.html" title="Browsing"><span class="none"></span>Browsing</a>  </li>
    <li><a href="../userguide/searching.html" title="Searching"><span class="none"></span>Searching</a>  </li>
    <li><a href="../userguide/delete-artifact.html" title="Deleting an Artifact"><span class="none"></span>Deleting an Artifact</a>  </li>
    <li><a href="../userguide/using-repository.html" title="Using as a repository"><span class="none"></span>Using as a repository</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>Deploying to repository</a>
  </li>
    <li><a href="../userguide/virtual-repositories.html" title="Configuring Virtual Repositories"><span class="none"></span>Configuring Virtual Repositories</a>  </li>
    <li><a href="../userguide/rss.html" title="Rss Feeds in Archiva"><span class="none"></span>Rss Feeds in Archiva</a>  </li>
    <li><a href="../userguide/querying-artifacts.html" title="Querying Artifacts"><span class="none"></span>Querying Artifacts</a>  </li>
          <li class="nav-header">Administrators Guide</li>
    <li><a href="../adminguide/installing.html" title="Installing Archiva"><span class="icon-chevron-right"></span>Installing Archiva</a>  </li>
    <li><a href="../adminguide/databases.html" title="Databases"><span class="none"></span>Databases</a>  </li>
    <li><a href="../adminguide/repositories-content-storage.html" title="Repositories Content Storage"><span class="none"></span>Repositories Content Storage</a>  </li>
    <li><a href="../adminguide/security.html" title="Security"><span class="icon-chevron-right"></span>Security</a>  </li>
    <li><a href="../adminguide/configuration.html" title="Archiva Configuration"><span class="icon-chevron-right"></span>Archiva Configuration</a>  </li>
    <li><a href="../adminguide/webservices/rest.html" title="REST Apis"><span class="none"></span>REST Apis</a>  </li>
    <li><a href="../adminguide/configuration-files.html" title="Configuration Files"><span class="none"></span>Configuration Files</a>  </li>
    <li><a href="../adminguide/system-status.html" title="System Status"><span class="none"></span>System Status</a>  </li>
    <li><a href="../adminguide/logging.html" title="Log Files"><span class="icon-chevron-right"></span>Log Files</a>  </li>
    <li><a href="../adminguide/reports.html" title="Reports"><span class="none"></span>Reports</a>  </li>
          <li class="nav-header">Customising Archiva</li>
    <li><a href="../customising/writing-consumer.html" title="Writing a Consumer Plugin"><span class="none"></span>Writing a Consumer Plugin</a>  </li>
          <li class="nav-header">More Information</li>
    <li><a href="https://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki"><span class="none"></span>Archiva Wiki</a>  </li>
          <li class="nav-header">ASF</li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works"><span class="none"></span>How Apache Works</a>  </li>
    <li><a href="https://www.apache.org/foundation/" class="externalLink" title="Foundation"><span class="none"></span>Foundation</a>  </li>
    <li><a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache"><span class="none"></span>Sponsoring Apache</a>  </li>
    <li><a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
          <li class="nav-header">Project Documentation</li>
    <li><a href="../project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a>  </li>
  </ul>
<form id="search-form" action="https://www.google.com/search" method="get" >
      <input value="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript">asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
                          <div id="twitter">
        <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" 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>
        </div>
                  <div class="clear"></div>
              <div class="clear"></div>
  <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>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<div class="section">
<h2><a name="Deploying_to_Repository"></a>Deploying to Repository</h2>
<p>There are different ways on how you can deploy artifacts in an Archiva repository. </p>
<ul>
<li><a href="#Maven">Maven</a> Configuring Maven to deploy to an Archiva repository</li>
<li><a href="#Web_UI">Web UI</a> Deploying via the Web UI Form</li></ul>
<p>Starting with Archiva 1.2.3, it is possible to block re-deployment of released artifacts to a specific repository. This can be configured through the repository configuration page by ticking the <tt>Block Re-deployment of Released Artifacts</tt> checkbox.</p>
<p><b>WARNING</b> The deployed artifact may not appear immediately in the search results. The execution of the <tt>index-content</tt> repository consumer and other scanning consumers are queued for execution to prevent concurrent updates to the index.</p>
<div class="section">
<h3><a name="Configuring_Maven_to_deploy_to_an_Archiva_repository"></a>Configuring <a name="Maven">Maven</a> to deploy to an Archiva repository</h3>
<ol style="list-style-type: decimal">
<li>Create a user in Archiva to use for deployment (or use guest if you wish to deploy without a username and password)</li>
<li>The deployment user needs the Role 'Repository Manager' for each repository that you want to deploy to</li>
<li>Define the server for deployment inside your 'settings.xml', use the newly created user for authentication
<div class="source"><pre class="prettyprint">&lt;settings&gt;
  &lt;!-- omitted xml --&gt;
  &lt;servers&gt;
    &lt;server&gt;
      &lt;id&gt;archiva.internal&lt;/id&gt;
      &lt;username&gt;{archiva-deployment-user}&lt;/username&gt;
      &lt;password&gt;{archiva-deployment-pwd}&lt;/password&gt;
    &lt;/server&gt;
    &lt;server&gt;
      &lt;id&gt;archiva.snapshots&lt;/id&gt;
      &lt;username&gt;{archiva-deployment-user}&lt;/username&gt;
      &lt;password&gt;{archiva-deployment-pwd}&lt;/password&gt;
    &lt;/server&gt;
    &lt;!-- omitted xml --&gt;
  &lt;/servers&gt;
  &lt;!-- omitted xml --&gt;
&lt;/settings&gt;</pre></div></li></ol>
<div class="section">
<h4><a name="Deploying_to_Archiva_using_HTTP"></a>Deploying to Archiva using HTTP</h4>
<p>Configure the <tt>distributionManagement</tt> part of your <tt>pom.xml</tt> (customising the URLs as needed). The <tt>id</tt> of the repository in <tt>distributionManagement</tt> <b>must</b> match the <tt>id</tt> of the <tt>server</tt> element in <tt>settings.xml</tt>.</p>
<div class="source"><pre class="prettyprint">&lt;project&gt;
  &lt;!-- omitted xml --&gt;
  &lt;distributionManagement&gt;
    &lt;repository&gt;
      &lt;id&gt;archiva.internal&lt;/id&gt;
      &lt;name&gt;Internal Release Repository&lt;/name&gt;
      &lt;url&gt;http://reposerver.mycompany.com:8080/repository/internal/&lt;/url&gt;
    &lt;/repository&gt;
    &lt;snapshotRepository&gt;
      &lt;id&gt;archiva.snapshots&lt;/id&gt;
      &lt;name&gt;Internal Snapshot Repository&lt;/name&gt;
      &lt;url&gt;http://reposerver.mycompany.com:8080/repository/snapshots/&lt;/url&gt;
    &lt;/snapshotRepository&gt;
  &lt;/distributionManagement&gt;
  &lt;!-- omitted xml --&gt;
&lt;/project&gt;</pre></div></div>
<div class="section">
<h4><a name="Deploying_to_Archiva_using_WebDAV"></a>Deploying to Archiva using WebDAV</h4>
<p>In some cases, you may want to use WebDAV to deploy instead of HTTP. If you find this is necessary, follow the same process as for HTTP, with these additional steps:</p>
<ol style="list-style-type: decimal">
<li>Add <tt>dav:</tt> to the front of the deployment URLs:
<div class="source"><pre class="prettyprint">&lt;project&gt;
  &lt;!-- omitted xml --&gt;
  &lt;distributionManagement&gt;
    &lt;repository&gt;
      &lt;id&gt;archiva.internal&lt;/id&gt;
      &lt;name&gt;Internal Release Repository&lt;/name&gt;
      &lt;url&gt;dav:http://reposerver.mycompany.com:8080/repository/internal/&lt;/url&gt;
    &lt;/repository&gt;
    &lt;snapshotRepository&gt;
      &lt;id&gt;archiva.snapshots&lt;/id&gt;
      &lt;name&gt;Internal Snapshot Repository&lt;/name&gt;
      &lt;url&gt;dav:http://reposerver.mycompany.com:8080/repository/snapshots/&lt;/url&gt;
    &lt;/snapshotRepository&gt;
  &lt;/distributionManagement&gt;
  &lt;!-- omitted xml --&gt;
&lt;/project&gt;</pre></div></li>
<li>Add a build extension to your <tt>pom.xml</tt> (not required in Maven 2.0.9 and above)
<div class="source"><pre class="prettyprint">&lt;project&gt;
  &lt;!-- omitted xml --&gt;
  &lt;build&gt;
    &lt;extensions&gt;
      &lt;extension&gt;
        &lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;
        &lt;artifactId&gt;wagon-webdav-jackrabbit&lt;/artifactId&gt;
        &lt;version&gt;2.2&lt;/version&gt;
      &lt;/extension&gt;
    &lt;/extensions&gt;
  &lt;/build&gt;
  &lt;!-- omitted xml --&gt;
&lt;/project&gt;</pre></div></li></ol></div>
<div class="section">
<h4><a name="Deploying_using_other_protocols"></a>Deploying using other protocols</h4>
<p>You can also deploy to the Archiva server using traditional means such as SCP, FTP, etc. For more information on these deployment techniques, refer to the Maven documentation.</p>
<p>Once the files are deployed into the location of the Archiva managed repository, they should appear in the Browse page. The artifacts should also be searcheable as long as the <tt>index-content</tt> repository consumer is enabled.</p></div>
<div class="section">
<h4><a name="Deploying_Third-Party_Artifacts_to_Archiva_using_Maven"></a>Deploying Third-Party Artifacts to Archiva using Maven</h4>
<p>You can use <tt>mvn deploy:deploy-file</tt> to deploy single artifacts to Archiva. Once you have the settings file in place as described above, you can deploy the artifact using this type of command:</p>
<div class="source"><pre class="prettyprint">mvn deploy:deploy-file -Dfile=filename.jar -DpomFile=filename.pom
    -DrepositoryId=archiva.internal
    -Durl=http://repo.mycompany.com:8080/repository/internal/</pre></div>
<p>For more information, consult the <a class="externalLink" href="http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html"> documentation for the <tt>deploy:deploy-file</tt> goal</a></p>
<p>If you wish to use WebDAV to deploy the file, add <tt>dav:</tt> to the start of the URL as in the previous instructions.</p>
<p>However, on versions of Maven prior to 2.0.9, you will also need to create a file called <tt>pom.xml</tt> in the directory from which you intend to execute &quot;<tt>mvn deploy:deploy-file</tt>&quot;:</p>
<div class="source"><pre class="prettyprint">&lt;project&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;com.example&lt;/groupId&gt;
  &lt;artifactId&gt;webdav-deploy&lt;/artifactId&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;version&gt;1&lt;/version&gt;
  &lt;name&gt;Webdav Deployment POM&lt;/name&gt;

  &lt;build&gt;
    &lt;extensions&gt;
      &lt;extension&gt;
        &lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;
        &lt;artifactId&gt;wagon-webdav-jackrabbit&lt;/artifactId&gt;
        &lt;version&gt;2.2&lt;/version&gt;
      &lt;/extension&gt;
    &lt;/extensions&gt;
  &lt;/build&gt;
&lt;/project&gt;</pre></div>
<p>This pom will not be deployed with the artifact, it simply serves to make the WebDAV protocol available to the build process.</p>
<p>Alternately, you can save this file somewhere else, and use &quot;<tt>mvn ... -f /path/to/filename</tt>&quot; to force the use of an alternate POM file.</p></div></div>
<div class="section">
<h3><a name="Deploying_via_the_Web_UI_Form"></a>Deploying via the <a name="Web_UI">Web UI</a> Form</h3>
<p>The easiest way to deploy in the repository is via the Web UI form, which can be accessed in the <b>Upload Artifact</b> section. Just follow these steps:</p>
<ol style="list-style-type: decimal">
<li>In Archiva, click the <b>Upload Artifact</b> option in the left menu. You should see a form similar to the one at the end of this section.</li>
<li>Fill in the following required fields:
<ul>
<li>Group Id - the groupId of the artifact to be deployed.</li>
<li>Artifact Id - the artifactId of the artifact to be deployed.</li>
<li>Version - the version of the artifact to be deployed.</li>
<li>Packaging - the packaging of the artifact to be deployed. (ex. jar, war, ear, etc.)</li>
<li>Drag and drop files to be deployed.</li></ul></li>
<li>Select the repository you want to deploy to. Please note that if you do not have write permission to the repository, you will not be allowed to deploy on it.</li>
<li>Now, if you want Archiva to generate a pom for the artifact, check the Generate Maven 2 POM field. (Right now, only Maven 2 poms can be generated.) Alternately, supply a POM file to be deployed alongside the artifact.</li>
<li>Click Saves files and a message will be displayed notifying you if the upload/deployment was successful or not.</li></ol>
<p>These are the files that will be in your repository after deployment:</p>
<ul>
<li>artifact </li>
<li>POM file (if you supplied one or checked Generate Maven 2 POM)</li>
<li>maven-metadata.xml (this will be created if none exists in the artifact level yet, otherwise it will just be updated)</li>
<li>maven-metadata.xml.sha1 and maven-metadata.xml.md5 (these will be generated for newly created maven-metadata.xml files, otherwise they will just be updated)</li></ul><img src="../images/upload-artifact.jpg" alt="Upload Artifact" /></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row">
      <div class="span6 offset1">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
      </div>
      <div class="row">
        &nbsp;
      </div>
      <div class="row">
      <div class="span6 offset2">
      <p>
        <a href="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/privacy-policy.html">Privacy Policy</a>
        </p>
      </div>
      </div>
        </div>
                          <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="https://www.ohloh.net/p/6670/widgets/project_thin_badge.js"></script>
    </div>
        </div>
    </footer>
    </body>
</html>