<?xml version="1.0"?>
<!--
  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">

    <parent>
        <groupId>org.apache.wookie</groupId>
        <artifactId>wookie-master</artifactId>
        <version>2.0.0-SNAPSHOT</version>
        <relativePath>../../wookie-master-pom/trunk/pom.xml</relativePath>
    </parent>

  <modelVersion>4.0.0</modelVersion>
  
  <groupId>org.apache.wookie</groupId>
  <artifactId>wookie-server</artifactId>
  <packaging>war</packaging>
  <version>2.0.0-SNAPSHOT</version>
  <name>Apache Wookie :: Server</name>
  <description>Apache Wookie Server</description>
  <licenses>
	<license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>  
  <url>http://wookie.apache.org/</url>
  <inceptionYear>2009</inceptionYear>
  
  <properties>
     <cargo.version>1.4.2</cargo.version>
     <tomcat.version>6.0.37</tomcat.version>
     <!-- if you want a remote debugging on a different a address override on command line with -Dcargo.debug.addres=xxxx -->
     <cargo.debug.address>8000</cargo.debug.address>
     <!-- if you want to start remote debugging session suspended override on command line with -Dcargo.debug.suspend=y -->
     <cargo.debug.suspend>n</cargo.debug.suspend>
     <cargo.args />
     <!-- default empty javaagent; if needed you can specify it on the command line with -Djavaagent="..." -->
     <javaagent />
  </properties>
  
  <dependencies>
  
    <!-- Service Provider -->
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-spi</artifactId>
      <version>2.0.0-SNAPSHOT</version>
    </dependency>

    <!--      
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-redis</artifactId>
      <version>2.0.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-jpa</artifactId>
      <version>2.0.0-SNAPSHOT</version>
      <classifier>classes</classifier>
    </dependency>  
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-jpa</artifactId>
      <version>2.0.0-SNAPSHOT</version>
      <type>war</type>
    </dependency>   
    -->     
  
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-java-connector</artifactId>
      <version>2.0.0-SNAPSHOT</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-parser</artifactId>
      <version>2.0.0-SNAPSHOT</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.wookie</groupId>
      <artifactId>wookie-features</artifactId>
      <type>war</type>
      <version>2.0.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>com.ibm.icu</groupId>
      <artifactId>icu4j</artifactId>
      <version>4.6.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>1.7</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>net.sourceforge.htmlcleaner</groupId>
      <artifactId>htmlcleaner</artifactId>
      <version>2.7</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.directwebremoting</groupId>
      <artifactId>dwr</artifactId>
      <version>2.0.10</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.5</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom</artifactId>
      <version>1.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20080701</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.santuario</groupId>
      <artifactId>xmlsec</artifactId>
      <version>1.5.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.3</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <version>6.1.3</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <optional>true</optional>
    </dependency>



    <!-- log4j logging -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>
        
  </dependencies>
  
      <build>
        <defaultGoal>install</defaultGoal>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>${cargo.version}</version>
                <configuration>
                    <deployables>
                        <deployable>
                            <groupId>org.apache.wookie</groupId>
                            <artifactId>wookie-server</artifactId>
                            <type>war</type>
                            <properties>
                                <context>/wookie</context>
                            </properties>
                        </deployable>
                    </deployables>
                    <configuration>
                        <properties>
                            <cargo.jvmargs>
                                <![CDATA[-Dh2.bindAddress="localhost" -Xdebug -XX:MaxPermSize=256m -Xrunjdwp:transport=dt_socket,address=${cargo.debug.address},server=y,suspend=${cargo.debug.suspend} -noverify ${javaagent} ${cargo.args}]]>
                            </cargo.jvmargs>
                            <cargo.tomcat.context.reloadable>true</cargo.tomcat.context.reloadable>
                        </properties>
                        <home>${project.build.directory}/tomcat6x</home>
                        <configfiles>
                            <configfile>
                                <file>${project.basedir}/src/main/dist/conf/tomcat-users.xml</file>
                                <todir>conf/</todir>
                                <tofile>tomcat-users.xml</tofile>
                            </configfile>
                        </configfiles>
                    </configuration>
                    <container>
                        <containerId>tomcat6x</containerId>
                        <timeout>180000</timeout>
                        <zipUrlInstaller>
                            <downloadDir>${settings.localRepository}/org/codehaus/cargo/cargo-container-archives</downloadDir>
                            <url>
                                http://archive.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.tar.gz
                            </url>
                        </zipUrlInstaller>
                        <systemProperties>
                            <net.sf.ehcache.skipUpdateCheck>true</net.sf.ehcache.skipUpdateCheck>
                        </systemProperties>
                    </container>
                </configuration>
            </plugin>
           
                
            <!-- Include the context.xml from wookie-jpa 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                  <overlays>
                    <overlay>
                        <excludes>
                        </excludes>
                        <groupId>org.apache.wookie</groupId>
                        <artifactId>wookie-jpa</artifactId>
                    </overlay>
                  </overlays>
                </configuration>
            </plugin>
			-->
            
        </plugins>
    </build>
</project>
