<!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 http-equiv="Content-Language" content="en" />
    <title>Archiva &#x2013; Archiva Sites Publishing</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 src='//www.google-analytics.com/analytics.js'></script>
        <script>
          window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;

          ga('create', 'UA-140879-5', 'auto');
          ga('send', 'pageview');

        </script>
      </head>
    <body class="topBarEnabled">
                      <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 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">Introduction <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="../index.html" title="About">About</a></li>
            <li><a href="../download.html" title="Downloads">Downloads</a></li>
            <li><a href="../versions.html" title="Versions">Versions</a></li>
            <li><a href="../mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="../security.html" title="Security">Security</a></li>
            <li class="dropdown-submenu">
<a href="../" title="Documentation">Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="../docs/2.2.4/" title="Release 2.2.4">Release 2.2.4</a></li>
                  <li><a href="../docs/3.0.0-SNAPSHOT/" title="Dev 3.0.0-SNAPSHOT">Dev 3.0.0-SNAPSHOT</a></li>
              </ul>
            </li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="../developers/building.html" title="Build Apache Archiva">Build Apache Archiva</a></li>
            <li><a href="../get-involved.html" title="Get involved">Get involved</a></li>
            <li><a href="../developers/how-we-do-things.html" title="How we do things">How we do things</a></li>
            <li><a href="../redback" title="Redback">Redback</a></li>
            <li><a href="../redback/components" title="Redback Components">Redback Components</a></li>
            <li class="dropdown-submenu">
<a href="../jsui/index.html" title="Javascript application Architecture">Javascript application Architecture</a>
              <ul class="dropdown-menu">
                  <li><a href="../jsui/rest.html" title="Rest service">Rest service</a></li>
                  <li><a href="../jsui/template-loading.html" title="JS Template loading">JS Template loading</a></li>
                  <li><a href="../jsui/i18n.html" title="i18n">i18n</a></li>
                  <li><a href="../jsui/knockout-binding.html" title="Knockout Binding">Knockout Binding</a></li>
                  <li><a href="../jsui/generics-js.html" title="Generic Javascipts">Generic Javascipts</a></li>
              </ul>
            </li>
            <li><a href="../developers/releasing.html" title="Releasing">Releasing</a></li>
            <li><a href="../developers/publishing-site.html" title="Site Publish">Site Publish</a></li>
        </ul>
      </li>
        <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html" title="How Apache Works">How Apache Works</a></li>
            <li><a href="http://www.apache.org/foundation/" title="Foundation">Foundation</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache">Sponsoring Apache</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</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="../ci-management.html" title="CI Management">CI Management</a></li>
                  <li><a href="../mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
                  <li><a href="../issue-management.html" title="Issue Management">Issue Management</a></li>
                  <li><a href="../licenses.html" title="Licenses">Licenses</a></li>
                  <li><a href="../team.html" title="Team">Team</a></li>
                  <li><a href="../scm.html" title="Source Code Management">Source Code Management</a></li>
              </ul>
            </li>
        </ul>
      </li>
              </ul>
<form id="search-form" action="https://www.google.com/search" method="get"  class="navbar-search pull-right" >
      <input value="http://archiva.apache.org/" 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>
                    </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="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 id="publishDate" class="pull-right">Last Published: 01 May 2019</li>
        </ul>
      </div>
        <div id="bodyColumn" >
<div class="section">
<h2><a name="Publishing_the_Archiva_Site"></a>Publishing the Archiva Site</h2>
<p>The Archiva site, documentation and reference documentation are now published to <tt>http://archiva.apache.org/</tt> using the <a class="externalLink" href="http://www.apache.org/dev/project-site.html#svnpubsub"> ASF's svnpubsub</a> service.</p>
<p>The files published to the site are all stored under the Subversion repository at <a class="externalLink" href="http://svn.apache.org/repos/asf/archiva/site-content/">http://svn.apache.org/repos/asf/archiva/site-content/</a>.</p>
<p>This mostly operates like a normal site deployment, though there are some specific customisations and special instructions for the reference library. The processes follow those described for the <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/">Maven SCM Publish Plugin</a> for <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/one-module-configuration.html"> Single module projects</a> and <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/multi-module-configuration.html"> Multi-module projects</a> as applicable.</p>
<p>Each site checks out the production site data into the <tt>site-publish</tt> directory of the current project, to avoid being cleaned as part of the build. It is ignored by <tt>svn</tt> operations, but you should ensure that the checkout is clean if you ever cancel or have a failure during a publish operation. You can check it is clean by ensuring there is no data from <tt>git status</tt> in that directory, or by removing it and having it get checked out again.</p>
<div class="section">
<h3><a name="Editing_and_Publishing_the_Main_Site"></a>Editing and Publishing the Main Site</h3>
<p>The site displayed at the root of <a class="externalLink" href="http://archiva.apache.org">http://archiva.apache.org</a> (where you are reading this) has its source code in Git at <a class="externalLink" href="https://gitbox.apache.org/repos/asf/archiva-site.git">https://gitbox.apache.org/repos/asf/archiva-site.git</a>.</p>
<p>To edit and publish the site, do the following:</p>
<ol style="list-style-type: decimal">
<li>Checkout the source code from Git (if you follow the instructions in <a href="./building.html"> Building Archiva</a>, you know how to have it.</li>
<li>Make edits and check them using <tt>mvn site</tt> or <tt>mvn site:run</tt> until satisfied.</li>
<li>Commit your changes (making sure your working copy is completely up to date first)</li>
<li>Publish the site:
<div>
<pre>mvn site-deploy</pre></div></li></ol>
<p>This site deployment can be done at any time, and is not tied to releases.</p>
<p>Note that since the main site also contains the (large!) <tt>docs</tt> and <tt>ref</tt> directories in the <tt>site-publish</tt> directory, there is a special <tt>setup-checkout</tt> profile in place to get the initial checkout without those directories. This will normally be activated whenever the <tt>site-publish</tt> directory is missing - if you happen to have active profiles from your <tt>settings.xml</tt> you may need to enable it explicitly whenever you do a deployment and that checkout is missing: <tt>mvn site-deploy -Psetup-checkout</tt> </p></div>
<div class="section">
<h3><a name="Editing_and_Publishing_the_Archiva_Documentation"></a>Editing and Publishing the Archiva Documentation</h3>
<p>The documentation displayed under the subdirectories of <a class="externalLink" href="http://archiva.apache.org/docs/">http://archiva.apache.org/docs/</a> has its source code in Git at <a class="externalLink" href="https://gitbox.apache.org/repos/asf/archiva.git">https://gitbox.apache.org/repos/asf/archiva.git</a> directory archiva-docs, which is part of the main project checkout.</p>
<p>The instructions for managing the documentation is the same as for the main site, being published from the directory using:</p>
<div>
<pre>mvn site-deploy</pre></div>
<p>However, in this case it is typically done as part of a release process - see <a href="./releasing.html"> Releasing Archiva</a> for instructions on doing this.</p>
<p>The documentation remains versioned based on the release it is related to. To best manage this with svnpubsub, the site is always published into a directory <tt>docs/latest</tt>, only requiring a small number of modifications to be made. Then, as part of the release instructions, the <tt>latest</tt> directory is copied to the versioned location - for example, <tt>http://svn.apache.org/repos/asf/archiva/site-content/docs/1.4-M4</tt>.</p>
<p>For <tt>site:stage</tt> to apply correctly without needing a full checkout, a workaround is applied by setting the <tt>distributionManagement/site/url</tt> element to match that of the parent site. The value is then overridden with the correct value in the <tt>maven-scm-publish-plugin</tt> configuration. This avoids the Site plugin attempting to relativize links incorrectly.</p></div>
<div class="section">
<h3><a name="Editing_and_Publishing_the_Reference_Documentation"></a>Editing and Publishing the Reference Documentation</h3>
<p>The reference documentation, including JavaDocs and source cross-reference, is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/ref">http://archiva.apache.org/ref</a>. At this time, only the latest reference documents are retained. They require quite a lot of space, and historical information is of less relevance to Archiva developers or users.</p>
<p>To publish the latest reference documents, you need to run:</p>
<div>
<pre>cd archiva-modules
mvn site site:stage scm-publish:publish-scm
or
sh ./deploySite.sh</pre></div>
<p>This will likely cause a very large commit, and should be done infrequently. Once per release is likely to be adequate.</p></div>
<div class="section">
<h3><a name="Publishing_Redback_site"></a>Publishing Redback site</h3>
<p>The redback is stored under the Subversion repository at <a class="externalLink" href="https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk">https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk</a>.</p>
<p>It's displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback">http://archiva.apache.org/redback</a>.</p>
<p>To publish documentation, you need to run:</p>
<div>
<pre>mvn site-deploy</pre></div></div>
<div class="section">
<h3><a name="Publishing_Redback_Core_reference"></a>Publishing Redback Core reference</h3>
<p>The Redback core reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/core">http://archiva.apache.org/redback/core</a>.</p>
<p>It contains javadoc for Redback core.</p>
<p>To publish documentation, you need to run:</p>
<div>
<pre>mvn clean site-deploy scm-publish:publish-scm
or
sh ./deploySite.sh</pre></div></div>
<div class="section">
<h3><a name="Publishing_Redback_Components_reference"></a>Publishing Redback Components reference</h3>
<p>The Redback components reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/components">http://archiva.apache.org/redback/components</a>.</p>
<p>It contains javadoc for Redback components.</p>
<p>To publish documentation, you need to run:</p>
<div>
<pre>mvn clean site-deploy scm-publish:publish-scm
or
sh ./deploySite.sh</pre></div></div></div>
        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
      <div class="row">
        &nbsp;
      </div>
      <div class="row">
      <p>
        <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
        </p>
      </div>
        </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="https://www.ohloh.net/p/6670/widgets/project_thin_badge.js"></script>
    </div>
        </div>
    </footer>
    </body>
</html>