<?xml version="1.0" encoding="ISO-8859-1"?>

<project>
    <groupId>directory</groupId>
    <artifactId>apacheds</artifactId>
    <currentVersion>0.9</currentVersion>
    <name>Apache Directory Project</name>
    <url>http://directory.apache.org</url>
    <logo>http://directory.apache.org/images/apache-directory-logo.png</logo>

    <inceptionYear>2003</inceptionYear>
    
    <issueTrackingUrl>http://issues.apache.org/jira/browse/DIREVE</issueTrackingUrl>

    <siteAddress>minotaur.apache.org</siteAddress>
    <siteDirectory>
      /www/directory.apache.org/subprojects/apacheds
    </siteDirectory>
    <distributionDirectory>
      /www/cvs.apache.org/dist/directory
    </distributionDirectory>

    <gumpRepositoryId>directory</gumpRepositoryId>

    <repository>
      <connection>
        scm:svn:http://svn.apache.org/repos/asf/directory:apacheds/trunk/${module.path}
      </connection>

      <url>
        http://svn.apache.org/viewcvs.cgi/directory/apacheds/trunk/${module.path}/?root=Apache-SVN
      </url>
      
      <developerConnection>
        https://svn.apache.org/repos/asf/directory/apacheds/trunk/${module.path}
      </developerConnection>
    </repository>
  
    <description>
      The Apache Directory Server (ApacheDS) is an embeddable LDAPv3 directory 
      server with other protocol plugins such as kerberos.  It is designed to 
      be completely pluggable in every aspect including backends and frontend 
      handlers making making it an ideal experimentation platform for LDAP 
      protocol testing, and for use in building other tools like like meta 
      directories, and virtual directories.  ApacheDS aims to introduces 
      stored procedures, triggers, views, and queues to the world of LDAP.
    </description>

    <mailingLists>
      <mailingList>
        <name>Apache Directory Developement - use [ApacheDS] prefix</name>
        <subscribe>
          dev-subscribe@directory.apache.org
        </subscribe>
        <unsubscribe>
          dev-unsubscribe@directory.apache.org
        </unsubscribe>
        <archive>
          http://issues.apache.org/eyebrowse/SummarizeList?listId=181
        </archive>
      </mailingList>
    </mailingLists>
    
    <licenses>
      <license>
        <name>Apache 2.0 License</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0</url>
        <distribution>repo</distribution>
      </license>
    </licenses>

    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <url>http://junit.org</url>
      </dependency>
    </dependencies>        
  
    <build>
      <nagEmailAddress>dev@directory.apache.org</nagEmailAddress>
      <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
      <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>

      <unitTest>
        <includes>
          <include>**/*Test*</include>
        </includes>
              
        <!-- 
          Need to skip abstract test cases which do not have tests or the build
          fails.
        -->
        <excludes>
          <exclude>**/Abstract*Test*</exclude>
        </excludes>
        
        <resources>
          <resource>
            <directory>${basedir}/src/test/resources</directory>
            <includes> 
              <include>**/*</include>
            </includes>
          </resource>
        </resources>
      </unitTest>
    
    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
              
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>LICENSE.txt</include>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
    <jars></jars>
  </build>

  <developers>
    <developer>
      <name>Alex Karasulu</name>
      <id>akarasulu</id>
      <email>akarasulu at apache.org</email>
      <roles>
        <role>Founder</role>
        <role>Architect</role>
        <role>Lead Developer</role>
      </roles>
    </developer>
    <developer>
      <name>Enrique Rodriguez</name>
      <id>erodriguez</id>
      <email>erodriguez at apache.org</email>
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
  </developers>
    
  <!-- 
   No need to keep plugins here since we do not generate reports for the parent
   - only the children have reports that are on valid code.  For some reason 
   though site generation seems to want to generate reports even though they 
   are not used in the site.  So I put this single report in here to prevent 
   it from generating several default reports which take more time.
   -->
  <reports>
    <report>maven-license-plugin</report>
  </reports>
</project>


