<?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>8-SNAPSHOT</version>
   </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.fulcrum</groupId>
    <artifactId>fulcrum-security</artifactId>
    <version>2.0.1-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.1-SNAPSHOT</version>
        </dependency>
        <dependency>
          <groupId>org.apache.fulcrum</groupId>
          <artifactId>fulcrum-security-api</artifactId>
          <version>2.0.1-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</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.1-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>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                    <source>1.8</source>
                    <detectJavaApiLink>false</detectJavaApiLink>
                    <!--  TODO : figure out why javadoc warnings are not ignored
                        as this is breaking mvn site generation 
                        The only 'warnings' that remain and are serious are coming from
                        the OM generated classes
                    -->
                    <!--  worked on torque, but not here? -->
                    <doclint>none</doclint>

                    <!--  exclude generated sources for now (only works when running mvn javadoc:javadoc, but not with mvn site? -->
                    <excludePackageNames>org.apache.fulcrum.security.torque.om.*</excludePackageNames>
              </configuration>
            </plugin>
             <plugin>
              <groupId>org.owasp</groupId>
              <artifactId>dependency-check-maven</artifactId>
              <executions>
                  <execution>
                      <goals>
                          <goal>aggregate</goal>
                      </goals>
                  </execution>
              </executions>
              <configuration>
                   <!-- suppress false positive -->
                   <suppressionFiles>
                    <suppressionFile>${project.basedir}/suppression-owasp.xml</suppressionFile>
                    </suppressionFiles>
                </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>
           <configuration>
                 <source>1.8</source>
                 <detectJavaApiLink>false</detectJavaApiLink>
                 <!-- required here -->
                 <doclint>none</doclint>
                <excludePackageNames>org.apache.fulcrum.security.torque.om.*</excludePackageNames>
            </configuration>
        </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>
