Building and Running the Apache Directory Server

All directory projects use Maven 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.

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:

maven multiproject:install
      

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:

[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

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 properties file that comes preconfigured for Apache under the server/trunk/main directory:

[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

Apache Directory Server's Maven Modules

The server is composed of 4 separate maven projects. These projects are summarized below:

ProjectSummary
protocolContains an LDAP protocol provider for the SEDA framework.
pluginContains a maven plugin used while developing with/for the directory server.
core Contains the server's core which contains the JNDI Provider that wraps/is the backend subsystem.
sharedContains shared classes between modules to prevent cyclic deps.
optional 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.