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

<project>
    <groupId>directory</groupId>
    <artifactId>apacheds</artifactId>
    <currentVersion>0.9.1-SNAPSHOT</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>


