<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.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.
  Architecture
-->
<html lang="en">
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <meta content="ActiveMQ's next generation of messaging" name="description"/>
    <meta content="messaging,stomp,jms,activemq,apollo" name="keywords"/>
    <meta content="Apollo" name="author"/>
    <script src="../scripts/jquery.js"></script>
    <link type="text/css" rel="stylesheet" href="../styles/impact/css/pygmentize.css"/>
    <link type="text/css" rel="stylesheet" href="../styles/impact/css/site.css"/>
    <title>Module Organization</title>
  </head>
  <body>
    <div id="navigation">
      <div class="wrapper">
<ul>
<li><a href="../index.html">Apollo 1.7.1</a></li>
<li><a href="../community/developers.html">Developers</a></li>
<li><a href="../community/index.html">Community</a></li>
<li><a href="../download.html">Download</a></li>
</ul>        <div></div>
      </div>
    </div>
    <div id="overview">
      <div class="wrapper">
        <div class="logo">
          <img src="../images/project-logo.png" alt="Apollo logo"/>
        </div>
        <div class="message">
<p>ActiveMQ's next generation of messaging</p>
          <div></div>
        </div>
      </div>
    </div>
    <div id="content">
      <div class="wrapper">
<h1 id = "Module_Organization">Module Organization</h1>

<p>Apollo is composed of many loosely coupled jar files.  This helps
maintain a clear separations of concerns between the modules and allows
end users to end up with smaller footprint configurations if they don't
need all the optional features of the project.</p>

<h2 id = "Dependency_Diagram">Dependency Diagram</h2>

<p><img style="width: 70%; height: auto; display: block; margin-left: auto;  margin-right: auto" 
    src="../images/module-deps-graph.png" alt="dependencies graph"></p>

<h2 id = "Updating">Updating</h2>

<p>You can regenerate the above graph by running the following commands at the
project root:</p>

<pre><code>mvn -P graph graph:reactor -Dhide-scope=test -Dhide-transitive=true -Dhide-external=true -Dgraph.label= -Dhide-version=true -Dhide-group-id=true -Dhide-type=true
cp target/reactor-graph.png apollo-website/src/images/module-deps-graph.png</code></pre>
        <div></div>
      </div>
    </div>
  </body>
</html>
