<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt 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.oodt</groupId>
    <artifactId>oodt-core</artifactId>
    <version>1.2.2</version>
    <relativePath>../../core/pom.xml</relativePath>
  </parent>
  <artifactId>cas-curator</artifactId>
  <packaging>war</packaging>
  <name>CAS Curation Interface</name>
  <description>A web application for managing policy for products and files and metadata that have been ingested via the CAS component.</description>
  <properties>
    <wicket.version>1.4.17</wicket.version>
  </properties>
  <!-- All dependencies should be listed in core/pom.xml and be ordered alphabetically by package and artifact.
     Once the dependency is in the core pom, it can then be used in other modules without the version tags.
     For example, within core/pom.xml:

      <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk</artifactId>
      <version>1.7.4</version>
    </dependency>

     Elsewhere in the platform:
     <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk</artifactId>
    </dependency>

     Where possible the same dependency version should be used across the whole platform but if required the version
     can be overridden in a specific pom and should have a comment explaing why the version has been overridden
  -->
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>curator-services</artifactId>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>curator-sso</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>oodt-webapp-components</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.oodt</groupId>
          <artifactId>cas-filemgr</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.oodt</groupId>
          <artifactId>cas-workflow</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-extensions</artifactId>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <filtering>false</filtering>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <filtering>false</filtering>
        <directory>src/main/java</directory>
        <includes>
          <include>**</include>
        </includes>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <filtering>false</filtering>
        <directory>src/test/java</directory>
        <includes>
          <include>**</include>
        </includes>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8181</port>
          <systemProperties>
            <CATALINA_OPTS>-Djava.awt.headless=true -Dfile.encoding=UTF-8
		                            -server -Xms1536m -Xmx1536m
		                            -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
		                            -XX:MaxPermSize=512m -XX:+DisableExplicitGC
		                            -XX:+UseConcMarkSweepGC
		                            -XX:+CMSIncrementalMode
		                            -XX:+CMSIncrementalPacing
		                            -XX:CMSIncrementalDutyCycleMin=0
		                            -XX:-TraceClassUnloading</CATALINA_OPTS>
          </systemProperties>
          <contextFile>${basedir}/src/main/webapp/META-INF/context.xml</contextFile>
          <path>/${project.build.finalName}</path>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>audit</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>rat-maven-plugin</artifactId>
            <configuration />
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
                <phase>verify</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
