<?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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.directory.project</groupId>
    <artifactId>project</artifactId>
    <version>35</version>
    <relativePath />
  </parent>

  <groupId>org.apache.directory.fortress</groupId>
  <artifactId>fortress-core</artifactId>
  <packaging>jar</packaging>
  <name>Apache Fortress Core</name>
  <version>2.0.2</version>
  <inceptionYear>2007</inceptionYear>
  <description>
    Apache Fortress is a standards-based Access Management SDK that implements ANSI RBAC INCITS 359.
  </description>
  <url>http://directory.apache.org/fortress/</url>

  <licenses>
    <license>
      <name>Apache License 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/directory-fortress-core.git</connection>
    <developerConnection>
      scm:git:https://git-wip-us.apache.org/repos/asf/directory-fortress-core.git
    </developerConnection>
    <tag>2.0.2</tag>
  </scm>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/DIRFORTRESS</url>
  </issueManagement>

  <!-- ====================================================== -->
  <!-- The list of current developers                         -->
  <!-- ====================================================== -->
  <developers>
    <developer>
      <id>smckinney</id>
      <name>Shawn McKinney</name>
      <email>smckinney@apache.org</email>
    </developer>

    <developer>
      <id>elecharny</id>
      <name>Emmanuel Lecharny</name>
      <email>elecharny@apache.org</email>
    </developer>

    <developer>
      <id>cpike</id>
      <name>Chris Pike</name>
      <email>cpike@apache.org</email>
    </developer>

  </developers>

  <!-- ====================================================== -->
  <!-- The used properties for this project                   -->
  <!-- ====================================================== -->
  <properties>
    <additionalparam>-Xdoclint:none</additionalparam>
    <!-- Jars -->
    <version.accelerator.api>1.0-RC41</version.accelerator.api>
    <version.accelerator.impl>1.0-RC41</version.accelerator.impl>
    <version.ant>1.10.5</version.ant>
    <version.ant.launcher>1.9.1</version.ant.launcher>
    <version.antlr>2.7.7</version.antlr>
    <version.apache.jdbm1>2.0.0-M3</version.apache.jdbm1>
    <version.apacheds>2.0.0.AM25</version.apacheds>
    <version.api.all>1.0.2</version.api.all>
    <version.commons.beanutils>1.7.0</version.commons.beanutils>
    <version.commons.beanutils-core>1.8.0</version.commons.beanutils-core>
    <version.commons.codec>1.11</version.commons.codec>
    <version.commons.collections>3.2.1</version.commons.collections>
    <version.commons.configuration>1.10</version.commons.configuration>
    <version.commons.digester>1.8</version.commons.digester>
    <version.commons.io>2.6</version.commons.io>
    <version.commons.lang>2.6</version.commons.lang>
    <version.commons.logging>1.1.1</version.commons.logging>
    <version.commons.pool>1.6</version.commons.pool>
    <version.dom4j>1.6.1</version.dom4j>
    <version.ehcache.core>2.6.11</version.ehcache.core>
    <version.hamcrest.core>1.3</version.hamcrest.core>
    <version.httpcomponent.httpclient>4.5.6</version.httpcomponent.httpclient>
    <version.httpcomponent.httpcore>4.4.10</version.httpcomponent.httpcore>
    <version.jasypt>1.9.2</version.jasypt>
    <version.javaee.api>8.0</version.javaee.api>
    <version.javax.ws.rs-api>2.1</version.javax.ws.rs-api>
    <version.jaxb>2.3.0.1</version.jaxb>
    <version.jgrapht-core>1.0.0</version.jgrapht-core>
    <version.jmeter.core>2.11</version.jmeter.core>
    <version.jmeter.java>2.11</version.jmeter.java>
    <version.junit>4.12</version.junit>
    <version.log4j>1.2.17</version.log4j>
    <version.mina.core>2.0.13</version.mina.core>
    <version.opencsv>2.3</version.opencsv>
    <version.slf4j.api>1.7.21</version.slf4j.api>
    <version.slf4j.log4j12>1.7.21</version.slf4j.log4j12>
    <version.stax2.api>3.1.1</version.stax2.api>
    <version.woodstox.core.asl>4.2.0</version.woodstox.core.asl>
    <version.xml.apis>1.0b2</version.xml.apis>
    <version.xmlschema.core>2.0.3</version.xmlschema.core>
    <version.xpp3>1.1.4c</version.xpp3>

    <!-- ===================================================== -->
    <!-- This is a hack to allow someone to release            -->
    <!-- without having to run the tests. In order to          -->
    <!-- do so, just tpe :                                     -->
    <!-- mvn release:prepare                                   -->
    <!--   -Drelease.arguments="-DskipTests -Prelease"         -->
    <!-- ===================================================== -->
    <release.arguments />
  </properties>

  <!-- ====================================================== -->
  <!-- The dependencies for all the projects                  -->
  <!-- ====================================================== -->

  <!-- ====================================================== -->
  <!-- The dependencies                                       -->
  <!-- ====================================================== -->
  <dependencies>
    <dependency>
      <groupId>org.openldap</groupId>
      <artifactId>accelerator-api</artifactId>
      <version>${version.accelerator.api}</version>
    </dependency>

    <dependency>
      <groupId>org.openldap</groupId>
      <artifactId>accelerator-impl</artifactId>
      <version>${version.accelerator.impl}</version>
    </dependency>

    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>${version.commons.lang}</version>
    </dependency>

    <dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>${version.commons.configuration}</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${version.commons.io}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>${version.httpcomponent.httpclient}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>${version.httpcomponent.httpcore}</version>
    </dependency>

    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>${version.ehcache.core}</version>
    </dependency>

    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>${version.commons.pool}</version>
    </dependency>

    <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>javax.ws.rs-api</artifactId>
      <version>${version.javax.ws.rs-api}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.api</groupId>
      <artifactId>api-all</artifactId>
      <version>${version.api.all}</version>
      <type>jar</type>
      <exclusions>
        <exclusion>
          <groupId>xml-apis</groupId>
          <artifactId>xml-apis</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>${version.ant}</version>
    </dependency>

    <dependency>
      <groupId>org.jasypt</groupId>
      <artifactId>jasypt</artifactId>
      <version>${version.jasypt}</version>
    </dependency>

    <dependency>
      <groupId>org.jgrapht</groupId>
      <artifactId>jgrapht-core</artifactId>
      <version>${version.jgrapht-core}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${version.slf4j.api}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${version.slf4j.api}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-annotations</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-api</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-avl</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-constants</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core-jndi</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-interceptor-kerberos</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.jdbm</groupId>
      <artifactId>apacheds-jdbm1</artifactId>
      <version>${version.apache.jdbm1}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-jdbm-partition</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-kerberos-codec</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-ldif-partition</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-dhcp</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-dns</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-kerberos</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-ldap</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-ntp</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-protocol-shared</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-server-annotations</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-server-config</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-server-jndi</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-test-framework</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-xdbm-partition</artifactId>
      <version>${version.apacheds}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>${version.javaee.api}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.jmeter</groupId>
      <artifactId>ApacheJMeter_core</artifactId>
      <version>${version.jmeter.core}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.jmeter</groupId>
      <artifactId>ApacheJMeter_java</artifactId>
      <version>${version.jmeter.java}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${version.junit}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>net.sf.opencsv</groupId>
      <artifactId>opencsv</artifactId>
      <version>${version.opencsv}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
      <version>${version.jaxb}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-core</artifactId>
      <version>${version.jaxb}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>${version.commons.codec}</version>
    </dependency>

    <dependency>
      <groupId>antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>${version.antlr}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${version.log4j}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <inherited>true</inherited>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <!-- Don't place a version here, 'mvn site' won't work during release. -->
        </plugin>

        <!-- Fires on 'mvn -Dtest=ClassName' where ClassName is junit test class name -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <argLine>-Xmx1024m</argLine>
            <systemPropertyVariables>
              <version>${tenant}</version>
            </systemPropertyVariables>
            <systemPropertyVariables>
              <version>${project.version}</version>
            </systemPropertyVariables>
            <excludes>
              <exclude>${exclude.tests}</exclude>
            </excludes>
            <includes>
              <include>${include.tests}</include>
            </includes>
            <groups>${testcase.groups}</groups>
            <!--<forkMode>never</forkMode>-->
            <runOrder>random</runOrder>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <optimize>true</optimize>
            <encoding>ISO-8859-1</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
            <excludes>
              <exclude>**/bootstrap</exclude>
              <exclude>**/config</exclude>
              <exclude>**/*.xml</exclude>
              <exclude>**/*.properties</exclude>
              <exclude>**/*.txt</exclude>
              <exclude>**/*.src</exclude>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludeSubProjects>false</excludeSubProjects>
            <excludes>
              <!-- MAVEN_DEFAULT_EXCLUDES -->
              <exclude>**/target/**/*</exclude>
              <exclude>**/cobertura.ser</exclude>
              <!-- ECLIPSE_DEFAULT_EXCLUDES -->
              <exclude>**/.classpath</exclude>
              <exclude>**/.project</exclude>
              <exclude>**/.settings/**/*</exclude>
              <!-- IDEA_DEFAULT_EXCLUDES -->
              <exclude>**/*.iml</exclude>
              <exclude>**/*.ipr</exclude>
              <exclude>**/*.iws</exclude>
              <!-- MANIFEST_MF_EXCLUDES -->
              <exclude>**/MANIFEST.MF</exclude>
              <!-- GIT_EXCLUDES -->
              <exclude>**/.git/**/*</exclude>
              <!-- CERT_EXCLUDES -->
              <exclude>**/*.pem</exclude>
              <!-- EXTERNAL_CODE_EXCLUDES -->
              <exclude>**/CmdLineParser.java</exclude>
              <!-- Exclude logs -->
              <exclude>**/*.log/**</exclude>
            </excludes>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>3.3.1</version>
          <configuration>
            <failBuildOnAnyVulnerability>true</failBuildOnAnyVulnerability>
              <suppressionFile>${project.basedir}/src/owasp/suppression.xml</suppressionFile>
          </configuration>
        </plugin>

      </plugins>
    </pluginManagement>

    <resources>
      <resource>
        <directory>config</directory>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/config</outputDirectory>
              <resources>
                <resource>
                  <directory>config</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <additionalparam>-Xdoclint:none</additionalparam>
          <stylesheet>java</stylesheet>
          <bottom>&lt;small&gt;Copyright &amp;copy; 2003-2016, The Apache Software Foundation. All Rights Reserved. Generated ${maven.build.timestamp}&lt;/small&gt;</bottom>
          <overview>src/main/java/org/apache/directory/fortress/core/overview.html</overview>
          <docfilessubdirs>true</docfilessubdirs>
          <includes />
          <version>true</version>
          <author>true</author>
          <doctitle>Fortress Core Javadoc ${project.version}</doctitle>
          <windowtitle>Apache Fortress Core Javadoc ${project.version}</windowtitle>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>initialize-fortress-config</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <ant antfile="${basedir}/build-config.xml" target="init-fortress-config" />
              </tasks>
            </configuration>
          </execution>

          <execution>
            <phase>test</phase>
            <configuration>
              <target name="fortress-load" if="load.file" description="Loads fortress policy into ldap">
                <echo message="############### Run Fortress Ant script to load policy ###############" />
                <java classname="org.apache.tools.ant.launch.Launcher" fork="true" failonerror="true" dir="${basedir}" timeout="4000000" taskname="startAnt">
                  <classpath>
                    <!-- use config/bootstrap folder for config because the config ldap node isn't (might not be) inserted: -->
                    <pathelement location="./config/bootstrap/" />
                    <pathelement location="./target/classes/" />
                    <pathelement location="${org.apache.ant:ant-launcher:jar}" />
                    <pathelement location="${org.apache.ant:ant:jar}" />
                    <pathelement location="${org.openldap:accelerator-api:jar}" />
                    <pathelement location="${org.openldap:accelerator-impl:jar}" />
                    <pathelement location="${log4j:log4j:jar}" />
                    <pathelement location="${org.apache.directory.api:api-all:jar}" />
                    <pathelement location="${org.apache.mina:mina-core:jar}" />
                    <pathelement location="${org.jgrapht:jgrapht-core:jar}" />
                    <pathelement location="${org.jasypt:jasypt:jar}" />
                    <pathelement location="${commons-configuration:commons-configuration:jar}" />
                    <pathelement location="${commons-lang:commons-lang:jar}" />
                    <pathelement location="${commons-collections:commons-collections:jar}" />
                    <pathelement location="${commons-logging:commons-logging:jar}" />
                    <pathelement location="${commons-io:commons-io:jar}" />
                    <pathelement location="${commons-pool:commons-pool:jar}" />
                    <pathelement location="${net.sf.ehcache:ehcache-core:jar}" />
                    <pathelement location="${org.slf4j:slf4j-api:jar}" />
                    <pathelement location="${org.slf4j:slf4j-log4j12:jar}" />
                    <pathelement location="${antlr:antlr:jar}" />
                    <pathelement location="${javax.ws.rs:javax.ws.rs-api:jar}" />
                    <pathelement location="${org.apache.httpcomponents:httpclient:jar}" />
                    <pathelement location="${org.apache.httpcomponents:httpcore:jar}" />
                    <pathelement location="${com.sun.xml.bind:jaxb-impl:jar}" />
                    <pathelement location="${commons-codec:commons-codec:jar}" />
                  </classpath>
                  <sysproperty key="version" value="${project.version}" />
                  <sysproperty key="tenant" value="${tenant}" />
                  <arg value="-buildfile" />
                  <arg file="./${load.file}" />
                </java>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

    <testResources>
      <testResource>
        <directory>${project.basedir}/config</directory>
      </testResource>
    </testResources>
  </build>

  <profiles>

    <!-- This profile starts the Fortress Console App -->
    <!-- To execute: mvn -Pconsole test -->
    <profile>
      <id>console</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <phase>test</phase>
                <goals>
                  <goal>java</goal>
                </goals>
                <configuration>
                  <echo message="############### Run Fortress Console ###############" />
                  <mainClass>org.apache.directory.fortress.core.FortressConsole</mainClass>
                  <classpathScope>test</classpathScope>
                  <systemProperties>
                    <systemProperty>
                      <key>version</key>
                      <value>${project.version}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>tenant</key>
                      <value>${tenant}</value>
                    </systemProperty>
                  </systemProperties>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile starts the Fortress Command Line Interpreter App -->
    <!-- To execute: mvn -Pcli test -->
    <profile>
      <id>cli</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <phase>test</phase>
                <goals>
                  <goal>java</goal>
                </goals>
                <configuration>
                  <echo message="############### Run Fortress Command Line Interface ###############" />
                  <mainClass>org.apache.directory.fortress.core.cli.CommandLineInterpreter</mainClass>
                  <classpathScope>test</classpathScope>
                  <systemProperties>
                    <systemProperty>
                      <key>version</key>
                      <value>${project.version}</value>
                    </systemProperty>
                    <systemProperty>
                      <key>tenant</key>
                      <value>${tenant}</value>
                    </systemProperty>
                  </systemProperties>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile starts Openldap accelerator checkAccess loadTest -->
    <!-- To execute: ./m.sh -Ploadtest-accel jmeter:jmeter -->
    <profile>
      <id>loadtest-accel</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.1</version>
            <configuration>
              <overrideRootLogLevel>DEBUG</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>acCheckAccess.jmx</jMeterTestFile>
              </testFilesIncluded>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile starts Fortress core checkAccess loadTest -->
    <!-- To execute: ./m.sh -Ploadtest-fortress jmeter:jmeter -->
    <profile>
      <id>loadtest-fortress</id>
      <build>
        <plugins>

          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.0</version>
            <configuration>
              <overrideRootLogLevel>INFO</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>ftCheckAccess.jmx</jMeterTestFile>
              </testFilesIncluded>
              <propertiesSystem>
                <version>${project.version}</version>
              </propertiesSystem>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- This profile starts Openldap accelerator createSession loadTest -->
    <!-- To execute: ./m.sh -Ploadtest-accel-createsess jmeter:jmeter -->
    <profile>
      <id>loadtest-accel-createsess</id>
      <build>
        <plugins>

          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.0</version>
            <configuration>
              <overrideRootLogLevel>DEBUG</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>acCreateSession.jmx</jMeterTestFile>
              </testFilesIncluded>
              <propertiesSystem>
                <version>${project.version}</version>
              </propertiesSystem>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- This profile starts Fortress core checkAccess loadTest -->
    <!-- To execute: ./m.sh -Ploadtest-fortress-createsess jmeter:jmeter -->
    <profile>
      <id>loadtest-fortress-createsess</id>
      <build>
        <plugins>

          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.0</version>
            <configuration>
              <overrideRootLogLevel>DEBUG</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>ftCreateSession.jmx</jMeterTestFile>
              </testFilesIncluded>
              <propertiesSystem>
                <version>${project.version}</version>
              </propertiesSystem>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- This profile starts Fortress core sessionPermissions loadTest -->
    <!-- To execute: ./m.sh -Ploadtest-fortress-sessperms jmeter:jmeter -->
    <profile>
      <id>loadtest-fortress-sessperms</id>
      <build>
        <plugins>

          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.0</version>
            <configuration>
              <overrideRootLogLevel>DEBUG</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>ftSessionPerms.jmx</jMeterTestFile>
              </testFilesIncluded>
              <propertiesSystem>
                <version>${project.version}</version>
              </propertiesSystem>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile starts Fortress accelerator sessionPermissions loadTest but function not implemented yet! -->
    <!-- To execute: ./m.sh -Ploadtest-accel-sessperms jmeter:jmeter -->
    <profile>
      <id>loadtest-accel-sessperms</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>1.10.1</version>
            <configuration>
              <overrideRootLogLevel>DEBUG</overrideRootLogLevel>
              <suppressJMeterOutput>false</suppressJMeterOutput>
              <testFilesIncluded>
                <jMeterTestFile>acSessionPerms.jmx</jMeterTestFile>
              </testFilesIncluded>
              <propertiesSystem>
                <version>${project.version}</version>
              </propertiesSystem>
            </configuration>
            <executions>
              <execution>
                <id>jmeter-tests</id>
                <goals>
                  <goal>jmeter</goal>
                </goals>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${version.log4j}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.directory.fortress</groupId>
                <artifactId>fortress-core</artifactId>
                <type>test-jar</type>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile calls ant target init-slapd in build-config.xml script. -->
    <!-- To execute: mvn -Pinit-slapd test -->
    <profile>
      <id>init-slapd</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>init-slapd-mvn</id>
                <phase>compile</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target name="init-slapd-mvn">
                    <property name="maven.project.url" value="${project.url}" />
                    <ant antfile="build-config.xml" target="init-slapd" />
                    <echo message="init-slapd complete" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile calls ant target start-slapd in build-config.xml script. -->
    <!-- To execute: mvn -Pstart-slapd test -->
    <profile>
      <id>start-slapd</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>start-slapd-mvn</id>
                <phase>compile</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target name="start-slapd-mvn">
                    <property name="maven.project.url" value="${project.url}" />
                    <ant antfile="build-config.xml" target="start-slapd" />
                    <echo message="start-slapd complete" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- This profile calls ant target stop-slapd in build-config.xml script. -->
    <!-- To execute: mvn -Pstop-slapd test -->
    <profile>
      <id>stop-slapd</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>stop-slapd-mvn</id>
                <phase>compile</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target name="stop-slapd-mvn">
                    <property name="maven.project.url" value="${project.url}" />
                    <ant antfile="build-config.xml" target="stop-slapd" />
                    <echo message="stop-slapd complete" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

      <!-- OWASP Dependency Vulnerability Scanner Profile -->
    <profile>
      <id>owasp</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>
</project>
