<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 from org.apache.maven.plugins:maven-site-plugin:3.9.1:CategorySummaryDocumentRenderer at 14 Sep 2021
 | 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>Fulcrum Test Container &#x2013; Project Information</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="../../" id="bannerLeft" title="Apache Turbine"><img src="../../images/turbine-project.png"  alt="Apache Turbine"/></a></div>
          <div class="pull-right"></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 14 Sep 2021<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.0.10-SNAPSHOT</li>
      <li class="pull-right"><span class="divider">|</span>
<a href="../" title="Fulcrum">Fulcrum</a></li>
      <li class="pull-right"><span class="divider">|</span>
<a href="../../" title="Turbine">Turbine</a></li>
      <li class="pull-right"><a href="https://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">
   <li class="nav-header">Overview</li>
    <li><a href="index.html" title="Main"><span class="none"></span>Main</a></li>
   <li class="nav-header">Project Documentation</li>
    <li class="active"><a href="#"><span class="icon-chevron-down"></span>Project Information</a>
     <ul class="nav nav-list">
      <li><a href="dependencies.html" title="Dependencies"><span class="none"></span>Dependencies</a></li>
      <li><a href="dependency-info.html" title="Dependency Information"><span class="none"></span>Dependency Information</a></li>
      <li><a href="distribution-management.html" title="Distribution Management"><span class="none"></span>Distribution Management</a></li>
      <li><a href="index.html" title="About"><span class="none"></span>About</a></li>
      <li><a href="issue-management.html" title="Issue Management"><span class="none"></span>Issue Management</a></li>
      <li><a href="licenses.html" title="Licenses"><span class="none"></span>Licenses</a></li>
      <li><a href="mailing-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a></li>
      <li><a href="plugin-management.html" title="Plugin Management"><span class="none"></span>Plugin Management</a></li>
      <li><a href="plugins.html" title="Plugins"><span class="none"></span>Plugins</a></li>
      <li><a href="scm.html" title="Source Code Management"><span class="none"></span>Source Code Management</a></li>
      <li><a href="summary.html" title="Summary"><span class="none"></span>Summary</a></li>
      <li><a href="team.html" title="Team"><span class="none"></span>Team</a></li>
     </ul></li>
    <li><a href="project-reports.html" title="Project Reports"><span class="icon-chevron-right"></span>Project Reports</a></li>
   <li class="nav-header">Apache</li>
    <li><a href="https://www.apache.org/" class="externalLink" title="Apache Website"><span class="none"></span>Apache Website</a></li>
    <li><a href="https://www.apache.org/licenses/" class="externalLink" title="License"><span class="none"></span>License</a></li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How the ASF works"><span class="none"></span>How the ASF works</a></li>
    <li><a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a></li>
    <li><a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a></li>
    <li><a href="https://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a></li>
  </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="Project_Information"></a>Project Information</h2>
<p>This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> on behalf of the project.</p><section>
<h3><a name="Overview"></a>Overview</h3>
<table border="0" class="table table-striped">
<tr class="a">
<th>Document</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="dependencies.html">Dependencies</a></td>
<td>This document lists the project's dependencies and provides information on each dependency.</td></tr>
<tr class="a">
<td><a href="dependency-info.html">Dependency Information</a></td>
<td>This document describes how to to include this project as a dependency using various dependency management tools.</td></tr>
<tr class="b">
<td><a href="distribution-management.html">Distribution Management</a></td>
<td>This document provides informations on the distribution management of this project.</td></tr>
<tr class="a">
<td><a href="index.html">About</a></td>
<td>A test framework for Avalon components</td></tr>
<tr class="b">
<td><a href="issue-management.html">Issue Management</a></td>
<td>This document provides information on the issue management system used in this project.</td></tr>
<tr class="a">
<td><a href="licenses.html">Licenses</a></td>
<td>This document lists the project license(s).</td></tr>
<tr class="b">
<td><a href="mailing-lists.html">Mailing Lists</a></td>
<td>This document provides subscription and archive information for this project's mailing lists.</td></tr>
<tr class="a">
<td><a href="plugin-management.html">Plugin Management</a></td>
<td>This document lists the plugins that are defined through pluginManagement.</td></tr>
<tr class="b">
<td><a href="plugins.html">Plugins</a></td>
<td>This document lists the build plugins and the report plugins used by this project.</td></tr>
<tr class="a">
<td><a href="scm.html">Source Code Management</a></td>
<td>This document lists ways to access the online source repository.</td></tr>
<tr class="b">
<td><a href="summary.html">Summary</a></td>
<td>This document lists other related information of this project</td></tr>
<tr class="a">
<td><a href="team.html">Team</a></td>
<td>This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.</td></tr></table></section></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>&#169;      2004&#x2013;2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>
</p>
        </div>
      </div>
    </footer>
  </body>
</html>
