<?xml version="1.0" encoding="UTF-8"?>
<document>
  <properties>
    <author email="akarasulu@apache.org">Alex Karasulu</author>
    <title>Apache Directory Project: Building the Directory Server</title>
  </properties>
  
  <body>
    <section name="Building and Running the Apache Directory Server">
      <p>
        All directory projects use <a href="http://maven.apache.org">Maven</a>
        as the default build tool.  We try to remain current with the production
        version of Maven.  As of 12/04 we use Maven 1.0.2 on JDK 1.4 and up.
      </p>

      <p>
        The multiproject plugin is used to build all the maven projects
        associated with the server.  After checking out the server trunk from
        subversion, cd into it and run the following multiproject command:
      </p>

      <source>
maven multiproject:install
      </source>

      <p>
        Once you've built the server you'll find an executable jar file under
        the main/target directory labeled apacheds-main-${version}.jar which can
        be fired up like so:
      </p>

<source>
[akarasulu@newton trunk]$ java -jar main/target/apacheds-main-0.8.0-SNAPSHOT.jar
server: using default properties ...
server: standard ldap port 389 is not available, using 1024 instead
server: started in 1368 milliseconds
</source>

      <p>
        When you start the server without a properties file arguement default
        settings are used.  It tries to bind to 389 but this non-root user
        does not have the needed privledges so it tries to bind on the next
        available port which is 1024.  If you would like a properties file can
        be used to override and set server specific properties to control her
        behavoir.  Below we use the <a href="http://vortuoad.notlong.com/">
        properties</a> file that comes preconfigured for Apache under the
        server/trunk/main directory:
      </p>

<source>
[akarasulu@newton trunk]$ java -jar main/target/apacheds-main-0.8.0-SNAPSHOT.jar main/server.properties
server: loading properties from main/eve.properties
server: started in 1449 milliseconds
</source>
    </section>

    <section name="Apache Directory Server's Maven Modules">
      <p>
        The server is composed of 4 separate maven projects.  These projects are
        summarized below:
      </p>

      <table>
        <tr>
          <th>Project</th><th>Summary</th>
        </tr>

        <tr>
          <td>protocol</td>
          <td>Contains an LDAP protocol provider for the SEDA framework.</td>
        </tr>
        <tr>
          <td>plugin</td>
          <td>Contains a maven plugin used while developing with/for the
              directory server.</td>
        </tr>
        <tr>
          <td>core</td>
          <td>
            Contains the server's core which contains the JNDI Provider that
            wraps/is the backend subsystem.
          </td>
        </tr>
        <tr>
          <td>shared</td>
          <td>Contains shared classes between modules to prevent cyclic deps.</td>
        </tr>
        <tr>
          <td>optional</td>
          <td>
            We might create this project in the near future to contain bundles
            of optional schema jars.  The server's maven plugin generates Java
            class files for OpenLDAP schema files.  These classes create schema
            objects way faster than parsing a file to dynamically create schema
            objects.  The optional package will contain all the schema classes
            for published schemas we can find.  When firing up the server you
            can request to load only those schemas you actually use.
          </td>
        </tr>
      </table>
    </section>
    
  </body>
</document>
