<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

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

  <groupId>org.apache.directory.fortress</groupId>
  <artifactId>fortress-web</artifactId>
  <packaging>war</packaging>
  <version>2.0.6-SNAPSHOT</version>
  <name>Apache Fortress Web</name>
  <url>https://directory.apache.org/fortress/</url>
  <description>Apache Fortress Web is a policy administration and review user interface.</description>

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

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/directory-fortress-commander.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/directory-fortress-commander.git/ </developerConnection>
    <url>https://github.com/apache/directory-fortress-commander/tree/{project.scm.tag}</url>
    <tag>master</tag>
  </scm>

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

  <mailingLists>
    <mailingList>
      <name>Apache Directory -- Fortress List</name>
      <post>fortress@directory.apache.org</post>
      <archive>https://mail-archives.apache.org/mod_mbox/directory-fortress/</archive>
    </mailingList>
  </mailingLists>

  <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>
  </developers>

  <properties>
    <title>${project.name} ${project.version}</title>
    <java.version>1.8</java.version>
    <fortress.realm.version>2.0.5</fortress.realm.version>
    <wicket.version>8.8.0</wicket.version>
    <wicket.googlecode.version>8.6.0</wicket.googlecode.version>
    <version.log4j>1.2.17</version.log4j>
    <version.ant>1.9.7</version.ant>
    <version.slf4j.log4j12>1.7.7</version.slf4j.log4j12>
    <spring.security.version>5.3.2.RELEASE</spring.security.version>
    <javadoc.version>2.9.1</javadoc.version>
    <jetty.version>8.1.8.v20121106</jetty.version>
    <jetty.stopKey>stopJetty</jetty.stopKey>
    <jetty.stopPort>9081</jetty.stopPort>
    <jetty.port>9080</jetty.port>
  </properties>

  <dependencies>
    <!-- Fortress Realm also pulls in Fortress Core APIs. -->
    <dependency>
      <groupId>org.apache.directory.fortress</groupId>
      <artifactId>fortress-realm-impl</artifactId>
      <version>${fortress.realm.version}</version>
    </dependency>

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

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- Wicket, Spring and other Web UI framework tools -->
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-spring</artifactId>
      <version>${wicket.version}</version>
    </dependency>

    <dependency>
      <groupId>org.wicketstuff</groupId>
      <artifactId>wicketstuff-inmethod-grid</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-jquery-ui</artifactId>
      <version>${wicket.googlecode.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-kendo-ui</artifactId>
      <version>${wicket.googlecode.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>${spring.security.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>${spring.security.version}</version>
    </dependency>

    <!--  ANT DEPENDENCIES FOR RUNNING ANT PLUG-IN FOR FORTRESS LOAD UTILITY  -->
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>${version.ant}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant-launcher</artifactId>
      <version>${version.ant}</version>
      <scope>test</scope>
    </dependency>

    <!-- Begin test dependencies -->
    <dependency>
      <groupId>httpunit</groupId>
      <artifactId>httpunit</artifactId>
      <version>1.6.1</version>
      <scope>test</scope>
    </dependency>
    
    <!--  JETTY used for devpr embedded testing -->
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.25</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jetty.aggregate</groupId>
      <artifactId>jetty-all-server</artifactId>
      <version>${jetty.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.141.59</version>
      <scope>test</scope>
    </dependency>

    <!-- Use [WebDriverManager](https://github.com/bonigarcia/webdrivermanager#webdrivermanager-as-java-dependency) for running tests -->
    <dependency>
      <groupId>io.github.bonigarcia</groupId>
      <artifactId>webdrivermanager</artifactId>
      <version>4.0.0</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <resources>
      <!-- include all these to be able to view their source -->
      <resource>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/java</directory>
        <includes>
          <include>**/*.html</include>
          <include>**/*.js</include>
          <include>**/*.css</include>
          <include>**/*.jpg</include>
          <include>**/*.gif</include>
          <include>**/*.png</include>
          <include>**/*.txt</include>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      
      <resource>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/*.html</include>
          <include>**/*.js</include>
          <include>**/*.css</include>
          <include>**/*.jpg</include>
          <include>**/*.gif</include>
          <include>**/*.png</include>
          <include>**/*.txt</include>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
          <include>**/*.vm</include>
          <include>**/*.tmpl</include>
        </includes>
      </resource>
      
      <resource>
        <filtering>false</filtering>
        <directory>src/main/webapp/login</directory>
        <includes>
          <include>**/*.html</include>
        </includes>
      </resource>
    </resources>
    <plugins>

      <!-- Deploy the finished war -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.1</version>
        <configuration>
          <warFile>target/${project.artifactId}-${project.version}.war</warFile>
          <server>local-tomcat</server>
          <url>http://localhost:8080/manager/text</url>
          <path>/${project.artifactId}</path>
          <!-- Warning the tomcat manager creds here are for deploying into a demo environment only. -->
          <username>tcmanager</username>
          <password>m@nager123</password>
        </configuration>
      </plugin>
      
      <!-- Compile the fortress web source -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>

      <!-- War the commander app -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
        <configuration>
          <warName>${project.artifactId}-${project.version}</warName>
          <archive>
            <manifest>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
          </archive>
          <webResources>
            <resource>
              <!-- this is relative to the pom.xml directory -->
              <directory>${project.basedir}/src/main/resources
              </directory>
            </resource>
          </webResources>
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
      
      <!-- Javadoc archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>8</source>
          <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/web/overview.html</overview>
          <version>true</version>
          <author>true</author>
          <doctitle>${project.name} Javadoc ${project.version}</doctitle>
          <windowtitle>Apache ${project.name} Javadoc ${project.version}</windowtitle>
          <additionalparam>-Xdoclint:none</additionalparam>
        </configuration>
      </plugin>
      
      <!-- Source archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Fires on 'mvn test -Dtest=ClassName' where ClassName is junit test class name, for this project: -->
      <!-- mvn test -Dtest=FortressWebSeleniumITCase -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <version>${project.version}</version>
          </systemPropertyVariables>
          <excludes>
            <exclude>${exclude.tests}</exclude>
          </excludes>
          <includes>
            <include>${include.tests}</include>
          </includes>
          <groups>${testcase.groups}</groups>
          <runOrder>random</runOrder>
        </configuration>
      </plugin>
      
      <!-- this works for embedded testing with Jetty -->
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty.version}</version>
        <configuration>
          <scanIntervalSeconds>1</scanIntervalSeconds>
          <stopPort>9999</stopPort>
          <stopKey>foo</stopKey>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>8081</port>
              <maxIdleTime>3600000</maxIdleTime>
            </connector>
          </connectors>
        </configuration>
      </plugin>

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

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
      </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>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
      </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>
            <!-- Exclude logs -->
            <exclude>**/*.log/**</exclude>
          </excludes>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-core</artifactId>
            <version>1.6</version>
            <exclusions>
              <exclusion>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>test</phase>
            <configuration>
              <target name="fortress-load" if="load.file" description="Loads fortress rbac policy files into ldap">
                <echo message="############### Run Fortress Policy Load ###############" />
                <java classname="org.apache.tools.ant.launch.Launcher" fork="true" clonevm="true" failonerror="true" dir="${basedir}" timeout="120000" taskname="startAnt">
                  <classpath>
                    <pathelement location="./src/main/resources" />
                    <pathelement location="${org.apache.ant:ant-launcher:jar}" />
                    <pathelement location="${org.apache.ant:ant:jar}" />
                    <pathelement location="${org.apache.directory.fortress:fortress-core: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="${org.apache.cxf:cxf-api:jar}" />
                    <pathelement location="${javax.ws.rs:javax.ws.rs-api: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}" />
                    <pathelement location="${antlr:antlr:jar}" />
                  </classpath>
                  <sysproperty key="version" value="${project.version}" />
                  <sysproperty key="tenant" value="${tenant}" />
                  <arg value="-buildfile" />
                  <arg file="./${load.file}" />
                  <!--                  <arg file="./src/main/resources/FortressRestServerPolicy.xml" />-->
                </java>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <repositories>
    <repository>
      <id>maven2</id>
      <url>https://repo1.maven.org/maven2</url>
    </repository>
  </repositories>

</project>
