<?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>
  <groupId>org.apache.directory</groupId>
  <artifactId>fortress-web</artifactId>
  <packaging>war</packaging>
  <version>1.0-RC40-SNAPSHOT</version>
  <name>Apache Fortress Web</name>
  <url>http://directory.apache.org/foress/</url>
  <description>Fortress Web is an ANSI RBAC INCITS 359 compliant administrative UI</description>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>15</version>
  </parent>

  <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-web.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/directory-fortress-web.git
    </developerConnection>
    <tag>HEAD</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>http://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>kmckinney</id>
      <name>Kevin McKinney</name>
    </developer>

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

  <properties>
    <title>${project.name} ${project.version}</title>
    <wicket.version>6.16.0</wicket.version>
    <wicket.jquery.version>6.16.0</wicket.jquery.version>
    <wicket.kendo-ui.version>6.14.0</wicket.kendo-ui.version>
    <version.log4j>1.2.17</version.log4j>
    <version.slf4j.log4j12>1.7.7</version.slf4j.log4j12>
    <spring.version>3.2.3.RELEASE</spring.version>
    <spring.security.version>3.1.4.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>
    <skipTests>true</skipTests>
  </properties>

  <dependencies>
    <!-- Fortress Realm pulls in Fortress Core for RBAC 'CRUD' & policy enforcement apis. -->
    <dependency>
      <groupId>org.apache.directory</groupId>
      <artifactId>fortress-realm-impl</artifactId>
      <version>${project.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>

    <!--  JETTY used for embedded testing within intellij -->
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.25</version>
    </dependency>
    
    <!-- Wicket, Spring and other Web UI framework tools -->
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-extensions</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-guice</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-jmx</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-auth-roles</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-datetime</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-velocity</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-spring</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-devutils</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.wicketstuff</groupId>
      <artifactId>wicketstuff-inmethod-grid</artifactId>
      <version>${wicket.jquery.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.wicketstuff</groupId>
      <artifactId>wicketstuff-jwicket-ui-resize</artifactId>
      <version>${wicket.jquery.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-jquery-ui</artifactId>
      <version>${wicket.jquery.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-kendo-ui</artifactId>
      <version>${wicket.kendo-ui.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>${spring.security.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>
    
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
    </dependency>
    
    <dependency>
      <groupId>velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.4</version>
    </dependency>
    
    <dependency>
      <groupId>com.uwyn</groupId>
      <artifactId>jhighlight</artifactId>
      <version>1.0</version>
    </dependency>
    
    <dependency>
      <groupId>httpunit</groupId>
      <artifactId>httpunit</artifactId>
      <version>1.6.1</version>
    </dependency>
    
    <!--  ANT DEPENDENCIES FOR RUNNING ANT PLUG-IN FOR FORTRESS LOAD UTILITY  -->
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.8.1</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant-launcher</artifactId>
      <version>1.8.1</version>
    </dependency>
    
    <!--  JETTY DEPENDENCIES FOR TESTING  -->
    <dependency>
      <groupId>org.eclipse.jetty.aggregate</groupId>
      <artifactId>jetty-all-server</artifactId>
      <version>${jetty.version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- Testing -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
    
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.44.0</version>
    </dependency>
    
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-common</artifactId>
      <version>2.0b1</version>
    </dependency>
    
    <dependency>
      <groupId>org.seleniumhq.selenium.client-drivers</groupId>
      <artifactId>selenium-java-client-driver</artifactId>
      <version>1.0.2</version>
    </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>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <inherited>true</inherited>
          <configuration>
            <excludeSubProjects>false</excludeSubProjects>
            <excludes>
              <!-- project excludes -->
              <exclude>**/jquery-ui.css</exclude>
              <exclude>**/kendo.common.min.css</exclude>
              <exclude>**/kendo.default.min.css</exclude>
              <exclude>**/jquery-ui-1.10.2.custom.min.css</exclude>
              <exclude>**/target/**</exclude>
              <exclude>**/.classpath</exclude>
              <exclude>**/.project</exclude>
              <exclude>**/.settings/**</exclude>
              <exclude>**/LICENSE.*</exclude>
              <exclude>**/NOTICE-bin.txt</exclude>
              <exclude>**/resources/**</exclude>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

      <!-- Assemble a commander distro archive -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>user_distribution</id>
            <phase>package</phase>
            <goals>
              <goal>attached</goal>
              <goal>single</goal>
            </goals>
            <configuration>
              <appendAssemblyId>false</appendAssemblyId>
              <descriptors>
                <descriptor>src/main/assembly/distsrc.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
      
      <!-- Deploy the finished war -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.0-beta-1</version>
        <configuration>
          <warFile>target/${project.artifactId}.war</warFile>
          <server>local-tomcat</server>
          <url>http://localhost:8080/manager/text</url>
          <!-- TODO: CHANGE ME ON NEXT RELEASE TO USE 'TEXT' on URL: <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 commander source -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      
      <!-- War the commander app -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <!-- this is needed to pickup the context.xml in META-INF: -->
        <configuration>
          <warName>${project.artifactId}</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>
        </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; 2011-2014 Joshua Tree Software, LLC. 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>${title}</doctitle>
          <windowtitle>${title}</windowtitle>
        </configuration>
      </plugin>
      
      <!-- Source archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <!-- Integration Test -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <skipTests>${skipTests}</skipTests>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </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>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>test</phase>
            <configuration>
              <target name="fortress-load"
                  unless="noload"
                  description="Loads fortress web rbac policy into ldap">
                <echo message="###############  Run Fortress Ant script to load demo policy  ###############"/>
                <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-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-jdk1.5: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}"/>
                  </classpath>
                  <sysproperty key="version" value="${project.version}"/>
                  <sysproperty key="tenant" value="HOME"/>
                  <arg value="-buildfile"/>
                  <arg file="./src/main/resources/FortressWebDemoUsers.xml"/>
                </java>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>release-sign-artifacts</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.4</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

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

</project>