<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.0.0:distribution-management at 2020-04-20
 | Rendered using Apache Maven Fluido Skin 1.9
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.9.2" />
    <title>Struts 2 OSGi Bundles &#x2013; Project Distribution Management</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.9.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.9.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf-logo.gif"  alt="Apache Software Foundation"/></a></div>
          <div class="pull-right"><a href="http://struts.apache.org/" id="bannerRight"><img src="http://struts.apache.org/img/struts-logo.svg"  alt="Apache Struts"/></a></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2020-04-20</li>
      <li id="projectVersion" class="pull-right">Version: 2.6-SNAPSHOT</li>
      <li class="pull-right"><span class="divider">|</span>
<a href="http://struts.apache.org/" class="externalLink" title="Struts">Struts</a></li>
      <li class="pull-right"><a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a></li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <div id="poweredBy">
              <div class="clear"></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>
        </header>
        <main id="bodyColumn"  class="span10" >
<section>
<h2><a name="Overview"></a>Overview</h2><a name="Overview"></a>
<p>The following is the distribution management information used by this project.</p><section>
<h3><a name="Repository_-_apache.releases.https"></a>Repository - apache.releases.https</h3><a name="Repository_-_apache.releases.https"></a><a class="externalLink" href="https://repository.apache.org/service/local/staging/deploy/maven2">https://repository.apache.org/service/local/staging/deploy/maven2</a></section><section>
<h3><a name="Snapshot_Repository_-_apache.snapshots.https"></a>Snapshot Repository - apache.snapshots.https</h3><a name="Snapshot_Repository_-_apache.snapshots.https"></a><a class="externalLink" href="https://repository.apache.org/content/repositories/snapshots">https://repository.apache.org/content/repositories/snapshots</a></section><section>
<h3><a name="Site_-_struts-site"></a>Site - struts-site</h3><a name="Site_-_struts-site"></a><a class="externalLink" href="https://struts.apache.org/maven/struts2-osgi-bundles/">https://struts.apache.org/maven/struts2-osgi-bundles/</a></section></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row span12">
            Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project
            logos are trademarks of The Apache Software Foundation.
            </div>
        </div>
      </div>
    </footer>
  </body>
</html>
