<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.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>
  <head>
    <link rel="shortcut icon" href="http://aries.apache.org/images/favicon.ico"></link>
    <link type="text/css" rel="stylesheet" href="http://aries.apache.org/resources/site.css"></link>
    </script><script src="http://aries.apache.org/resources/menus.js" language="javascript" type="text/javascript"></script>
  <meta name="keywords" content="..."/>
  <meta name="description" content="..." />
    <title>
    Apache Aries - BuildingAries
    </title>
  </head>
<body onload="SetMenu()">

<table width="100%" cellpadding="0" cellspacing="0">
  <tr width="100%">
    <td id="cell-0-0" colspan="2">&nbsp;</td>
    <td id="cell-0-1">&nbsp;</td>
    <td id="cell-0-2" colspan="2">&nbsp;</td>
  </tr>
  <tr width="100%">
    <td id="cell-1-0">&nbsp;</td>
    <td id="cell-1-1">&nbsp;</td>
    <td id="cell-1-2">
      <div style="padding: 5px;">
        <div id="banner">
          <!-- Banner -->
      <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tr>
          <td align="left" class="topbardiv" nowrap="">
            <a href="http://aries.apache.org/" title="Apache Aries"> <img border="0" src="http://aries.apache.org/images/Arieslogo_Horizontal.gif"> </a>
          </td>
          <td align="right" nowrap="">
            <a href="http://www.apache.org/" title="The Apache Software Foundation"> <img border="0" src="http://aries.apache.org/images/apache_feather.png"> </a>
              </td>
        </tr>
      </table>
          <!-- Banner -->
        </div>
      </div>
      <div id="top-menu">
        <table border="0" cellpadding="1" cellspacing="0" width="100%">
          <tr>
            <td>
              <div align="left">
                <!-- Breadcrumbs -->
                <!-- Breadcrumbs -->
              </div>
            </td>
            <td>
              <div align="right">
                <!-- Quicklinks -->
          <DIV style="padding: 5px 5px 0px 25px;">
            <FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
            <A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License</A> 
            <INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
            <INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
            <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT>
            <INPUT name="btnG" type="submit" value="Search"></INPUT>
            <INPUT name="domains" type="hidden" value="aries.apache.org"></INPUT>
            <INPUT name="sitesearch" type="hidden" value="aries.apache.org"></INPUT>
            </FORM>
          </DIV>
                <!-- Quicklinks -->
              </div>
            </td>
          </tr>
        </table>
      </div>
    </td>
    <td id="cell-1-3">&nbsp;</td>
    <td id="cell-1-4">&nbsp;</td>
  </tr>
  <tr width="100%">
    <td id="cell-2-0" colspan="2">&nbsp;</td>
    <td id="cell-2-1">
      <table>
        <tr height="100%" valign="top">
          <td height="100%">
            <div id="wrapper-menu-page-right">
              <div id="wrapper-menu-page-top">
                <div id="wrapper-menu-page-bottom">
                  <div id="menu-page">
                    <!-- NavigationBar -->
          <style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<div onclick="SwitchMenu('documentation')" id="documentationTitle" class="menutitle">Documentation</div>

<div id="documentation" class="menuitemgroup">
    <div class="menuitem">
        <a href="/documentation/integrators-guide.html">Integrators Guide</a> 
    </div>
    <div class="menuitem">
        <a href="/documentation/articles.html">Articles</a> 
    </div>
    <div class="menuitem">
        <a href="https://svn.apache.org/repos/asf/aries/slides/">Slides</a> 
    </div>
    <div class="menuitem">
        <a href="/documentation/tutorials.html">Tutorials</a> 
    </div>
    <div class="menuitem">
        <a href="/documentation/tools.html">Tools</a> 
    </div>
</div>

<div onclick="SwitchMenu('modules')" id="modulesTitle" class="menutitle">Modules</div>

<div id="modules" class="menuitemgroup">
    <div class="menuitem">
        <a href="/modules/samples.html">Samples</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/async-svcs.html">Asynchronous Services</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/blueprint.html">Blueprint</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/blueprint-maven-plugin.html">Blueprint-maven-plugin</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/blueprintannotation.html">Blueprint Annotations</a>
    </div>
    <div class="menuitem">
        <a href="/modules/blueprintnoosgi.html">Blueprint No-OSGi</a>
    </div>
    <div class="menuitem">
        <a href="/modules/blueprintweb.html">Blueprint Web</a>
    </div>
        <div class="menuitem">
                <a href="/modules/containers.html">Containers</a>
        </div>
    <div class="menuitem">
        <a href="/modules/esaanttask.html">ESA Ant Task </a> 
    </div>
    <div class="menuitem">
        <a href="/modules/ebamavenpluginproject.html">EBA Maven Plugin </a> 
    </div>
    <div class="menuitem">
        <a href="/modules/esamavenpluginproject.html">ESA Maven Plugin </a> 
    </div>
    <div class="menuitem">
        <a href="/modules/jmx.html">JMX</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/jndiproject.html">JNDI</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/jpaproject.html">JPA</a> 
    </div>
        <div class="menuitem">
        <a href="/modules/transactioncontrol.html">Transaction Control Service</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/transactionsproject.html">Transactions</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/rsa.html">Remote Service Admin (RSA)</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/spi-fly.html">SPI Fly</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/subsystems.html">Subsystems</a> 
    </div>
    <div class="menuitem">
        <a href="/modules/applications.html">Applications (obsolete)</a> 
    </div>
</div>

<div onclick="SwitchMenu('downloads')" id="downloadsTitle" class="menutitle">Downloads</div>

<div id="downloads" class="menuitemgroup">
    <div class="menuitem">
        <a href="/downloads/currentreleases.html">Current Releases</a> 
    </div>
    <div class="menuitem">
        <a href="/downloads/testresults.html">Compliance Tests</a> 
    </div>
    <div class="menuitem">
        <a href="/downloads/archived-releases.html">Archived Releases</a> 
    </div>
</div>

<div onclick="SwitchMenu('community')" id="communityTitle" class="menutitle">Community</div>

<div id="community" class="menuitemgroup">
    <div class="menuitem">
        <a href="/community/resources.html">Community Resources</a> 
    </div>
    <div class="menuitem">
        <a href="/community/gettinginvolved.html">Getting Involved</a> 
    </div>
    <div class="menuitem">
        <a href="/community/people.html">Who we are</a> 
    </div>
    <div class="menuitem">
        <a href="/community/boardreports.html">Board Reports</a> 
    </div>
        <div class="menuitem">
                <a href="/community/logos.html">Logos for Users</a>
        </div>
</div>

<div onclick="SwitchMenu('development')" id="developmentTitle" class="menutitle">Development</div>

<div id="development" class="menuitemgroup">
    <div class="menuitem">
        <a href="/development/buildingaries.html">Building Aries </a> 
    </div>
    <div class="menuitem">
        <a href="/development/guidelines.html">Cording Guidelines</a> 
    </div>
    <div class="menuitem">
        <a href="/development/architecture.html">Architecture</a> 
    </div>
    <div class="menuitem">
        <a href="/development/releasingaries.html">Releasing Aries </a> 
    </div>
    <div class="menuitem">
        <a href="/development/compliancetesting.html">OSGi Compliance Tests </a> 
    </div>
    <div class="menuitem">
        <a href="/development/maintainingthewebpages.html">Web Site Maintenance </a> 
    </div>
</div>

<div onclick="SwitchMenu('sponsorship')" id="sponsorshipTitle" class="menutitle">Sponsorship</div>

<div id="sponsorship" class="menuitemgroup">
    <div class="menuitem">
        <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> 
    </div>
    <div class="menuitem">
        <a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a> 
    </div>
</div>

<div class="promotion">
    <a href="http://www.apache.org/events/current-event.html">
    <img src="http://www.apache.org/events/current-event-125x125.png" width="125" height="125"/>
    </a>
</div>
                    <!-- NavigationBar -->
                  </div>
                </div>
              </div>
            </div>
          </td>
          <td height="100%" width="100%">
            <!-- Content -->
            <div class="wiki-content"><style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<p><a name="BuildingAries-ExtractingandbuildingAries"></a></p>
<p><a name="BuildingAries-Prereqs"></a></p>
<h2 id="prereqs">Prereqs<a class="headerlink" href="#prereqs" title="Permanent link">&para;</a></h2>
<ul>
<li>Maven 3.2.5 (mvn --version). Current maven 3.3.x has an error with parent poms</li>
<li>Subversion client &gt;= 1.8.x</li>
<li>Eclipse Luna http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr2</li>
</ul>
<p><a name="BuildingAries-CheckoutAndBuild"></a></p>
<h2 id="checkout-and-build-on-the-command-line">Checkout and build on the command line<a class="headerlink" href="#checkout-and-build-on-the-command-line" title="Permanent link">&para;</a></h2>
<ul>
<li>Check out sources: svn co https://svn.apache.org/repos/asf/aries/trunk aries</li>
<li>cd aries</li>
<li>mvn clean install -DskipTests=true</li>
</ul>
<p>You should now have succesfully compiled aries trunk.
As a next step you can run the tests too.</p>
<ul>
<li>mvn clean install -fae</li>
</ul>
<p><a name="BuildingAries-ImportIntoEclipse"></a></p>
<h1 id="import-into-eclipse-using-m2e">Import into eclipse using m2e<a class="headerlink" href="#import-into-eclipse-using-m2e" title="Permanent link">&para;</a></h1>
<ul>
<li>Start eclipse. Use a workspace directory separate from your source checkout of aries</li>
<li>File -&gt; Import -&gt; Maven -&gt; Existing maven projects -&gt; Browse to aries directory -&gt; Select the projects to import -&gt; Finish</li>
<li>At some projects you might see some markers that m2e does not know how to work with certain maven plugins. Use the Ctrl-1 shortcut on these markers and set them to be ignored and let eclipse store this in the eclipse preferences. Do not select to add the ignore to the maven poms.</li>
</ul>
<p>After these steps you should have imported your selected aries projects into eclipse. </p>
<p><a name="BuildingAries-Outofmemoryerrors"></a></p>
<h1 id="out-of-memory-errors">Out of memory errors<a class="headerlink" href="#out-of-memory-errors" title="Permanent link">&para;</a></h1>
<p>You may find that building Aries fails with out of memory exceptions on
some systems (eg Mac)  if you use the standard Java settings. Setting the
two environment variables as shown below may help.</p>
<p>export MAVEN_OPTS="-XX:MaxPermSize=128m -Xms512m -Xmx512m"</p></div>
            <!-- Content -->
          </td>
        </tr>
      </table>
   </td>
   <td id="cell-2-2" colspan="2">&nbsp;</td>
  </tr>
  <tr width="100%">
   <td id="cell-3-0">&nbsp;</td>
   <td id="cell-3-1">&nbsp;</td>
   <td id="cell-3-2">
     <div id="footer">
       <!-- Footer -->
       <div id="site-footer">
         <a href="http://aries.apache.org/privacy-policy.html";>Privacy
Policy</a> 
       </div>
       <!-- Footer -->
     </div>
   </td>
   <td id="cell-3-3">&nbsp;</td>
   <td id="cell-3-4">&nbsp;</td>
  </tr>
  <tr width="100%">
    <td id="cell-4-0" colspan="2">&nbsp;</td>
    <td id="cell-4-1">&nbsp;</td>
    <td id="cell-4-2" colspan="2">&nbsp;</td>
  </tr>
</table>
</body>
</html> 
