<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  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. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <!--
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            This file is generated from XML source: DO NOT EDIT!
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   -->
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<link rel="stylesheet" href="/style/compressed.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/style.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/attic.css" type="text/css" media="screen, projection"/>
	<!--[if IE]><link rel="stylesheet" href="/style/ie.css" type="text/css" media="screen, projection"/><![endif]-->
     <meta name="author" content="The Apache Software Foundation" /><meta name="email" content="general.AT.attic.apache.DOT.org" />
    <title>Apache Excalibur - Apache Attic</title>
  
 </head>
 <body id="sub">
	<div class="container">
	<hr class="space col"/>
	<div class="block">
		<div class="column span-24">
      <div id="header">
                          <!-- Add 'default' header section here. -->
                                <h1>Apache Excalibur</h1>
                         </div>
      </div>
	</div>
	<hr/>
	<div class="block content">
		<div class="column span-15 colborder">
                            
<div class="section-content">
<p><a href="https://excalibur.apache.org">Apache Excalibur</a> moved into the Attic in December 2010. 
     Apache Excalibur was a Java Inversion of Control container. 
     </p>
<p>We do not know of any natural successors or potential forks for Excalibur. As with 
     any project in the Attic - if you should choose to fork Excalibur outside of Apache, 
     please let us know so we can link to your project. </p>

  <table style="margin-left: auto; margin-right:auto; width:90%">
    <tr>
      <th>Read-only Resource</th>
      <th>Link(s)</th>
    </tr>
    <tr>
      <td>Website</td>
      <td><a href="https://excalibur.apache.org/">excalibur.apache.org/</a></td>
    </tr>
    <tr>
      <td>Mailing List Archives</td>
      <td>
        <a href="https://mail-archives.apache.org/mod_mbox/excalibur-dev/">dev</a>
        | <a href="https://mail-archives.apache.org/mod_mbox/excalibur-scm/">scm</a>
        | <a href="https://mail-archives.apache.org/mod_mbox/excalibur-user/">user</a>
      </td>
    </tr>
    <tr>
      <td>Issue Tracker (JIRA)</td>
      <td><a href="https://issues.apache.org/jira/browse/EXLBR/">EXLBR</a></td>
    </tr>
    <tr>
      <td>Issue Tracker (JIRA)</td>
      <td><a href="https://issues.apache.org/jira/browse/FORTRESS/">FORTRESS</a></td>
    </tr>
    <tr>
      <td>Source Code (Subversion)</td>
      <td><a href="https://svn.apache.org/repos/asf/excalibur/">svn.apache.org/repos/asf/excalibur/</a></td>
    </tr>
    <tr>
      <td>Board Reports</td>
      <td><a href="https://whimsy.apache.org/board/minutes/excalibur.html">Minutes</a></td>
    </tr>
    <tr>
      <td>Downloads</td>
      <td><a href="https://archive.apache.org/dist/excalibur/">archive.apache.org/dist/excalibur/</a> 
      | <a href="https://archive.apache.org/dist/excalibur/KEYS">KEYS</a>
      </td>
    </tr>
  </table>

<p>Archived versions of Excalibur may be downloaded from the 
     <a href="https://archive.apache.org/dist/excalibur/">Apache Archives</a>. </p>
</div>
         </div>
    <div class="column span-8 last">
      <div class="block">
        <div class="nav column span-11">
          <div>
               <div class="menuheader">The Apache Attic</div>
  <ul>
          <li><a href="/">Home</a></li> 
          <li><a href="https://projects.apache.org/committee.html?attic">The team</a></li> 
          <li><a href="/process.html">Process</a></li> 
          <li><a href="/tracking.html">Process tracking</a></li> 
          <li><a href="https://whimsy.apache.org/board/minutes/Attic.html">Board Minutes</a></li> 
          <li><a href="https://www.apache.org/licenses/">License</a></li> 
          <li><a href="https://www.apache.org/security/">Security</a></li> 
          <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li> 
      </ul>
      <div class="menuheader">Related Apache Links</div>
  <ul>
          <li><a href="https://www.apache.org/">Foundation</a></li> 
          <li><a href="https://www.apache.org/foundation/sponsorship.html">Donate</a></li> 
          <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li> 
          <li><a href="https://incubator.apache.org/">Incubator</a></li> 
          <li><a href="https://apachecon.com/">ApacheCon</a></li> 
      </ul>
          </div>
        </div>
        <div class="nav column prepend-1 span-12 last">
               <h6>Projects in the Attic</h6>
  <ul>
          <li><a href="/projects/abdera.html">Abdera</a></li> 
          <li><a href="/projects/ace.html">ACE</a></li> 
          <li><a href="/projects/any23.html">Any23</a></li> 
          <li><a href="/projects/apex.html">Apex</a></li> 
          <li><a href="/projects/archiva.html">Archiva</a></li> 
          <li><a href="/projects/aurora.html">Aurora</a></li> 
          <li><a href="/projects/avalon.html">Avalon</a></li> 
          <li><a href="/projects/axkit.html">AxKit</a></li> 
          <li><a href="/projects/axis-sandesha-c.html">Axis Sandesha2/C</a></li> 
          <li><a href="/projects/axis-savan-c.html">Axis Savan/C</a></li> 
          <li><a href="/projects/axis-savan-java.html">Axis Savan/Java</a></li> 
          <li><a href="/projects/bahir.html">Bahir</a></li> 
          <li><a href="/projects/beehive.html">Beehive</a></li> 
          <li><a href="/projects/bloodhound.html">Bloodhound</a></li> 
          <li><a href="/projects/buildr.html">Buildr</a></li> 
          <li><a href="/projects/chemistry.html">Chemistry</a></li> 
          <li><a href="/projects/chukwa.html">Chukwa</a></li> 
          <li><a href="/projects/clerezza.html">Clerezza</a></li> 
          <li><a href="/projects/click.html">Click</a></li> 
          <li><a href="/projects/climate.html">Open Climate Workbench</a></li> 
          <li><a href="/projects/crimson.html">Crimson</a></li> 
          <li><a href="/projects/continuum.html">Continuum</a></li> 
          <li><a href="/projects/crunch.html">Crunch</a></li> 
          <li><a href="/projects/deltacloud.html">Deltacloud</a></li> 
          <li><a href="/projects/devicemap.html">DeviceMap</a></li> 
          <li><a href="/projects/directmemory.html">DirectMemory</a></li> 
          <li><a href="/projects/drat.html">DRAT</a></li> 
          <li><a href="/projects/eagle.html">Eagle</a></li> 
          <li><a href="/projects/esme.html">ESME</a></li> 
          <li><a href="/projects/etch.html">Etch</a></li> 
          <li><a href="/projects/excalibur.html">Excalibur</a></li> 
          <li><a href="/projects/falcon.html">Falcon</a></li> 
          <li><a href="/projects/forrest.html">Forrest</a></li> 
          <li><a href="/projects/giraph.html">Giraph</a></li> 
          <li><a href="/projects/hama.html">Hama</a></li> 
          <li><a href="/projects/harmony.html">Harmony</a></li> 
          <li><a href="/projects/hawq.html">HAWQ</a></li> 
          <li><a href="/projects/hivemind.html">HiveMind</a></li> 
          <li><a href="/projects/ibatis.html">iBATIS</a></li> 
          <li><a href="/projects/jakarta.html">Jakarta</a></li> 
          <li><a href="/projects/jakarta-cactus.html">Jakarta Cactus</a></li> 
          <li><a href="/projects/jakarta-ecs.html">Jakarta ECS</a></li> 
          <li><a href="/projects/jakarta-oro.html">Jakarta ORO</a></li> 
          <li><a href="/projects/jakarta-regexp.html">Jakarta Regexp</a></li> 
          <li><a href="/projects/jakarta-slide.html">Jakarta Slide</a></li> 
          <li><a href="/projects/jakarta-taglibs.html">Jakarta Taglibs</a></li> 
          <li><a href="/projects/joshua.html">Joshua</a></li> 
          <li><a href="/projects/juddi.html">jUDDI</a></li> 
          <li><a href="/projects/labs.html">Labs</a></li> 
          <li><a href="/projects/lens.html">Lens</a></li> 
          <li><a href="/projects/lenya.html">Lenya</a></li> 
          <li><a href="/projects/lucy.html">Lucy</a></li> 
          <li><a href="/projects/marmotta.html">Marmotta</a></li> 
          <li><a href="/projects/metamodel.html">MetaModel</a></li> 
          <li><a href="/projects/metron.html">Metron</a></li> 
          <li><a href="/projects/mrunit.html">MRUnit</a></li> 
          <li><a href="/projects/mxnet.html">MXNet</a></li> 
          <li><a href="/projects/ode.html">ODE</a></li> 
          <li><a href="/projects/ojb.html">ObJectRelationalBridge (OJB)</a></li> 
          <li><a href="/projects/oltu.html">Oltu (previously Amber)</a></li> 
          <li><a href="/projects/onami.html">Onami</a></li> 
          <li><a href="/projects/oodt.html">OODT</a></li> 
          <li><a href="/projects/polygene.html">Polygene</a></li> 
          <li><a href="/projects/predictionio.html">PredictionIO</a></li> 
          <li><a href="/projects/quetzalcoatl.html">Quetzalcoatl</a></li> 
          <li><a href="/projects/rave.html">Rave</a></li> 
          <li><a href="/projects/reef.html">REEF</a></li> 
          <li><a href="/projects/river.html">River</a></li> 
          <li><a href="/projects/sentry.html">Sentry</a></li> 
          <li><a href="/projects/shale.html">Shale</a></li> 
          <li><a href="/projects/shindig.html">Shindig</a></li> 
          <li><a href="/projects/sqoop.html">Sqoop</a></li> 
          <li><a href="/projects/stdcxx.html">Standard C++ Library (STDCXX)</a></li> 
          <li><a href="/projects/stanbol.html">Stanbol</a></li> 
          <li><a href="/projects/stratos.html">Stratos</a></li> 
          <li><a href="/projects/submarine.html">Submarine</a></li> 
          <li><a href="/projects/tajo.html">Tajo</a></li> 
          <li><a href="/projects/tiles.html">Tiles</a></li> 
          <li><a href="/projects/trafodion.html">Trafodion</a></li> 
          <li><a href="/projects/tuscany.html">Tuscany</a></li> 
          <li><a href="/projects/twill.html">Twill</a></li> 
          <li><a href="/projects/usergrid.html">Usergrid</a></li> 
          <li><a href="/projects/vxquery.html">VXQuery</a></li> 
          <li><a href="/projects/whirr.html">Whirr</a></li> 
          <li><a href="/projects/wink.html">Wink</a></li> 
          <li><a href="/projects/wookie.html">Wookie</a></li> 
          <li><a href="/projects/muse.html">WS Muse</a></li> 
          <li><a href="/projects/xang.html">Xang</a></li> 
          <li><a href="/projects/xindice.html">Xindice</a></li> 
          <li><a href="/projects/xmlbeans.html">XMLBeans</a>
        ; revived June 2018
      </li> 
          <li><a href="/projects/xml.html">XML</a></li> 
      </ul>
        </div>
      </div>
    </div>
    <div class="column span-24 footer">
      <hr/>
        <p>Copyright &#169; 2009-2023 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
      </div>
    </div>
  </div>
</body>
</html>

