<?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.rave</groupId>
        <artifactId>rave-project</artifactId>
        <version>0.20</version>
    </parent>

    <artifactId>rave-portal</artifactId>
    <name>Apache Rave :: rave-portal</name>
    <description>Apache Rave Portal</description>
    <packaging>war</packaging>

    <properties>
        <!-- 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 />
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.apache.wookie</groupId>
            <artifactId>wookie</artifactId>
            <type>war</type>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.rave</groupId>
            <artifactId>rave-portal-dependencies</artifactId>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.apache.rave</groupId>
            <artifactId>rave-portal-resources</artifactId>
            <type>war</type>
        </dependency>
        <dependency>
            <groupId>org.apache.rave</groupId>
            <artifactId>rave-shindig</artifactId>
            <type>war</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.rave</groupId>
            <artifactId>rave-demo-gadgets</artifactId>
            <type>war</type>
            <scope>provided</scope>
        </dependency>

        <!-- Default database -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

        <!-- log4j logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- mail-->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
        </dependency>

        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>

        <!-- apacheds-server-jndi needed for embedded Apache DS, not needed for external LDAP -->
        <dependency>
            <groupId>org.apache.directory.server</groupId>
            <artifactId>apacheds-server-jndi</artifactId>
        </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>
                    <wait>true</wait>
                    <deployables>
                        <deployable>
                            <groupId>org.apache.wookie</groupId>
                            <artifactId>wookie</artifactId>
                            <type>war</type>
                            <properties>
                                <context>/wookie</context>
                            </properties>
                        </deployable>
                        <deployable>
                            <groupId>org.apache.rave</groupId>
                            <artifactId>rave-shindig</artifactId>
                            <type>war</type>
                            <properties>
                                <context>/ROOT</context>
                            </properties>
                        </deployable>
                        <deployable>
                            <groupId>org.apache.rave</groupId>
                            <artifactId>rave-demo-gadgets</artifactId>
                            <type>war</type>
                            <!-- /gadgets is already taken in Shindig which runs on the ROOT context (/) -->
                            <properties>
                                <context>/demogadgets</context>
                            </properties>
                        </deployable>
                        <deployable>
                            <groupId>org.apache.rave</groupId>
                            <artifactId>rave-portal</artifactId>
                            <type>war</type>
                            <properties>
                                <context>/portal</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}/../rave-portal-resources/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/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
                            </url>
                        </zipUrlInstaller>
                        <systemProperties>
                            <net.sf.ehcache.skipUpdateCheck>true</net.sf.ehcache.skipUpdateCheck>
                            <!--  un-comment following property for: Loading the SizeOfAgent will probably fail,
                            as you are running on Apple OS X and have a value set for java.io.tmpdir  -->
                            <!-- <net.sf.ehcache.pool.sizeof.AgentSizeOf.bypass>true</net.sf.ehcache.pool.sizeof.AgentSizeOf.bypass>  -->

	                   <!-- Documentation: http://rave.apache.org/documentation/host-configuration.html -->
                            <!--
                                <portal.override.properties>/path/to/custom.portal.properties</portal.override.properties>
                                <rave-shindig.override.properties>/path/to/custom.shindig.properties</rave-shindig.override.properties>
                                <shindig.host>localhost</shindig.host>
                                <shindig.port>8080</shindig.port>
                                <shindig.contextroot />
                            -->
                        </systemProperties>
                        <dependencies>
                            <dependency>
                                <groupId>javax.mail</groupId>
                                <artifactId>mail</artifactId>
                                <classpath>shared</classpath>
                            </dependency>
                            <dependency>
                                <groupId>javax.activation</groupId>
                                <artifactId>activation</artifactId>
                                <classpath>shared</classpath>
                            </dependency>
                        </dependencies>
                    </container>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>dist</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.cargo</groupId>
                        <artifactId>cargo-maven2-plugin</artifactId>
                        <version>${cargo.version}</version>
                        <executions>
                            <execution>
                                <id>dist-cargo-package</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>configure</goal>
                                    <goal>package</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.2.1</version>
                        <configuration>
                            <!-- Do not attach the resulting artifact(s) to the project (e.g. do not deploy) -->
                            <attach>false</attach>
                            <!-- Override finalName -->
                            <finalName>rave-${project.version}</finalName>
                            <!-- Workaround for http://jira.codehaus.org/browse/MASSEMBLY-449 -->
                            <archiverConfig>
                                <fileMode>0644</fileMode>
                                <directoryMode>0755</directoryMode>
                                <defaultDirectoryMode>0755</defaultDirectoryMode>
                            </archiverConfig>
                        </configuration>
                        <executions>
                            <execution>
                                <id>dist-assembly</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>apache-rave-${project.version}</finalName>
                                    <descriptors>
                                        <descriptor>${project.basedir}/src/main/assembly/distbin.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
            <profile>
                <id>jpa</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <build>
                    <testResources>
                        <testResource>
                            <directory>${project.basedir}/src/test/resources_jpa</directory>
                        </testResource>
                    </testResources>
                </build>
            </profile>
            <profile>
                <id>mongodb</id>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.rave</groupId>
                        <artifactId>rave-portal-dependencies</artifactId>
                        <type>pom</type>
                        <exclusions>
                            <exclusion>
                                <groupId>org.apache.rave</groupId>
                                <artifactId>rave-jpa</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.rave</groupId>
                        <artifactId>rave-mongodb</artifactId>
                    </dependency>
                    <dependency>
                        <groupId>de.flapdoodle.embed</groupId>
                        <artifactId>de.flapdoodle.embed.mongo</artifactId>
                        <scope>test</scope>
                    </dependency>
                </dependencies>
                <build>
                    <testResources>
                        <testResource>
                            <directory>${project.basedir}/src/test/resources_mongo</directory>
                        </testResource>
                    </testResources>
                    <plugins>
                        <plugin>
                            <groupId>com.github.joelittlejohn.embedmongo</groupId>
                            <artifactId>embedmongo-maven-plugin</artifactId>
                            <version>0.1.5</version>
                            <executions>
                                <execution>
                                    <id>start</id>
                                    <phase>test-compile</phase>
                                    <goals>
                                        <goal>start</goal>
                                    </goals>
                                </execution>
                                <execution>
                                    <id>stop</id>
                                    <phase>post-integration-test</phase>
                                    <goals>
                                        <goal>stop</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
    </profiles>

</project>
