blob: 3edc8a7b3d8616c828939d863df29c561398e8fe [file] [log] [blame]
<?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>