<?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.5-SNAPSHOT</version>
  <name>Apache Fortress Web</name>
  <url>https://directory.apache.org/fortress/</url>
  <description>Apache Fortress Web is Role-Based Access Control 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>

  <!-- ====================================================== -->
  <!-- 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>

  <properties>
    <title>${project.name} ${project.version}</title>
    <java.version>1.8</java.version>
    <fortress.realm.version>2.0.4</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 pulls in Fortress Core for RBAC 'CRUD' & access management 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>

    <!-- Servlet API DEPENDENCIES -->
    <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 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>

    <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>
          <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" failonerror="true" dir="${basedir}" timeout="4000000" 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>
