<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>turbine-parent</artifactId>
       <groupId>org.apache.turbine</groupId>
       <version>7</version>
       <relativePath />
   </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.fulcrum</groupId>
    <artifactId>fulcrum-security</artifactId>
    <version>2.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Fulcrum Security Master Build</name>
    <url>http://turbine.apache.org/fulcrum/fulcrum-security/</url>

    <!-- Required for staging to work -->
    <distributionManagement>
        <site>
            <id>turbine.apache.org</id>
            <url>http://turbine.apache.org/fulcrum/fulcrum-security/</url>
        </site>
    </distributionManagement>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/trunk/security/</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/trunk/security/</developerConnection>
        <url>http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/</url>
    </scm>

    <developers>
        <developer>
          <id>epugh</id>
          <name>Eric Pugh</name>
          <email>epugh@upstate.com</email>
          <url />
          <organization />
          <timezone />
        </developer>
        <developer>
          <name>Thomas Vandahl</name>
          <id>tv</id>
          <email>tv@apache.org</email>
          <organization />
          <roles>
            <role>Java Developer</role>
          </roles>
          <timezone>1</timezone>
        </developer>
    </developers>
    <contributors>
        <contributor>
            <name>Ben Gidley</name>
            <email>ben.gidley@anite.com</email>
            <organization>Anite</organization>
            <roles>
                <role>Developer</role>
            </roles>
        </contributor>
        <contributor>
            <name>Michael Jones</name>
            <email>michael.jones@anite.com</email>
            <organization>Anite</organization>
            <roles>
                <role>Developer</role>
            </roles>
        </contributor>
        <contributor>
            <name>Kostyantyn Shchekotykhin</name>
            <email>kostya@ifit.uni-klu.ac.at</email>
            <roles>
                <role>Developer</role>
            </roles>
        </contributor>
    </contributors>
    
    <dependencyManagement>
        <dependencies>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-security-api</artifactId>
          <version>2.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-security-api</artifactId>
          <version>2.0.0-SNAPSHOT</version>
          <type>test-jar</type>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-testcontainer</artifactId>
          <!-- junit 5 seems to have problems to find unit tests in test scoped jar org.apache.fulcrum:fulcrum-security-api:test-jar, upgrade from 1.0.8, classpath loading issue?  -->
          <version>1.0.9-SNAPSHOT</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-yaafi</artifactId>
          <version>1.0.8</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-security-memory</artifactId>
          <version>2.0.0-SNAPSHOT</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>${turbine.log4j2.version}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    <build>
        <sourceDirectory>${basedir}/src/java</sourceDirectory>
        <testSourceDirectory>${basedir}/src/test</testSourceDirectory>
        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-scm-publish-plugin</artifactId>
              <configuration>
                <content>${siteContent.path}</content>
                <tryUpdate>false</tryUpdate>
              </configuration>
            </plugin>
        </plugins>
    </build>

    <modules>
        <module>api</module>
        <module>hibernate</module>
        <module>memory</module>
        <!-- module>nt</module -->
        <!-- module>ldap</module -->
        <module>torque</module>
        <module>dist</module>
    </modules>
    
    <!-- This let the report be set only at root level and is required since javadoc 3.1.0, as the aggregate reports by default at every level.  -->
    <reporting>
     <plugins>
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-javadoc-plugin</artifactId>
           <version>3.2.0</version>
           <reportSets>
             <reportSet>
               <id>aggregate</id>
               <inherited>false</inherited>
               <reports>
                <report>aggregate</report>
               </reports>
             </reportSet>
             <reportSet>
               <id>default</id>
               <reports>
                 <report>javadoc</report>
                <report>test-javadoc</report>
               </reports>          
              </reportSet>
           </reportSets>
        </plugin>
    </plugins>
   </reporting>
    
    <properties>
        <turbine.site.path>fulcrum/fulcrum-security</turbine.site.path>
        <turbine.scmPubCheckoutDirectory>${turbine.site.cache}/fulcrum/security</turbine.scmPubCheckoutDirectory>
        <turbine.site.cache>${project.build.directory}/turbine-sites</turbine.site.cache>
        <siteContent.path>${project.build.directory}/staging</siteContent.path><!-- default stagingSiteURL -->
    </properties>
</project>
