                               Apache Directory Server
                               =======================

Documentation
-------------

To run, build or just to read about how to use the server please refer to the
documentation.  For binary distributions you can just refer to the local copy
here:

./docs/index.html

or online here,

http://incubator.apache.org/directory/subprojects/apacheds/index.html


Running
-------

To run with defaults,

java -jar apacheds-0.8.jar 

or with custom settings,

java -jar apacheds-0.8.jar your.properties


Connecting
----------

see http://incubator.apache.org/directory/subprojects/apacheds/users/authentication.html


Building 
--------

maven multiproject 


Notes
-----

 o The kerberos service as well as other services are not included within this 
   release.  

