<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
    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.sling</groupId>
        <artifactId>sling</artifactId>
        <version>4-incubator-SNAPSHOT</version>
        <relativePath>../../parent/pom.xml</relativePath>
    </parent>

    <artifactId>org.apache.sling.launchpad.testing</artifactId>
    <packaging>war</packaging>
    <version>4-incubator-SNAPSHOT</version>

    <name>Sling - Launchpad Testing</name>
    <description>
        Sling Launchpad Testing module, contains integration tests that
        were previously in the launchpad webapp module.
    </description>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/sling/trunk/launchpad/testing</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/sling/trunk/launchpad/testing</developerConnection>
        <url>http://svn.apache.org/viewvc/incubator/sling/trunk/launchpad/testing</url>
    </scm>

    <properties>
        <!--
            Jetty default port (override with -D)
        -->
        <http.port>8888</http.port>
        
        <!-- path suffix for HTTP access to Sling -->
        <http.base.path />

        <!-- path suffix for WebDAV access to the repository -->
        <webdav.workspace.path />

        <!-- hostname for integration tests -->
        <test.host>localhost</test.host>

        <!--
            Disable Jetty webapp rescan (override with -D) 
        -->
        <jetty.scan.interval.seconds>0</jetty.scan.interval.seconds>

        <!-- 
            Sling home directory when starting with jetty:run
        -->
        <jetty.sling.home>target/sling</jetty.sling.home>

        <!-- 
            Defines which tests are for the "integration-testing" phase
        -->
        <integration.test.code.path>
            **/launchpad/webapp/integrationtest
        </integration.test.code.path>

        <!-- 
            Set this to true to stop mvn once the integration test Jetty instance is
            started. Useful to manually test the integration testing webapp.
        -->
        <integration.test.wait>false</integration.test.wait>
    </properties>

    <build>
        <plugins>

            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.5</version>
                <configuration>
                    <contextPath>/</contextPath>
                    <scanIntervalSeconds>
                        ${jetty.scan.interval.seconds}
                    </scanIntervalSeconds>

                    <systemProperties>
                        <systemProperty>
                            <name>sling.home</name>
                            <value>${jetty.sling.home}</value>
                        </systemProperty>
                    </systemProperties>

                    <connectors>
                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                            <port>${http.port}</port>
                            <maxIdleTime>60000</maxIdleTime>
                        </connector>
                    </connectors>

                    <!-- 
                        Use target/... as the webapp source, as we unpack stuff there from the
                        Sling launcher modules
                    -->
                    <webAppSourceDirectory>
                        target/${artifactId}-${pom.version}
                    </webAppSourceDirectory>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- Unpack the sling-app launcher for inclusion in the web app -->
                        <id>unpack-dependencies</id>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>
                                org.apache.sling.launchpad.app,servlet
                            </includeArtifactIds>
                            <excludeTransitive>true</excludeTransitive>
                            <outputDirectory>
                                ${project.build.directory}/launchpad-app
                            </outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>
                                true
                            </overWriteSnapshots>
                        </configuration>
                    </execution>
                    <execution>
                        <!-- Copy bundles that must be initially installed to WEB-INF/resources/bundles -->
                        <id>copy-bundles-dependencies</id>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/${project.build.finalName}/WEB-INF/resources/bundles
                            </outputDirectory>
                            <excludeTransitive>true</excludeTransitive>
                            <includeGroupIds>
                                org.apache.felix,org.apache.sling,org.apache.jackrabbit
                            </includeGroupIds>
                            <excludeArtifactIds>
                              <!-- 
                              The app and base bundles are not needed as bundles,
                                we only extract some resources from them
                              -->
                              org.apache.sling.launchpad.app,org.apache.sling.launchpad.base
                            </excludeArtifactIds>
                            <includeScope>
                                provided
                            </includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 
              Include sling-app launcher classes and resources, but no Sling 
              bundles (we want to specify our own versions) 
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <!-- the classes (except unneeded Main) -->
                        <resource>
                            <directory>
                                ${basedir}/target/launchpad-app
                            </directory>
                            <targetPath>WEB-INF/classes</targetPath>
                            <excludes>
                                <exclude>
                                    org/apache/sling/launcher/app/main/**
                                </exclude>
                                <exclude>
                                    resources/bundles/org.apache.sling**
                                </exclude>
                                <exclude>
                                    resources/bundles/org.apache.felix.http.jetty*.jar
                                </exclude>
                                <exclude>
                                    resources/bundles/pax-web-service*.jar
                                </exclude>
                                <exclude>
                                    resources/bundles/org.apache.felix.commons.servlet-api*.jar
                                </exclude>
                            </excludes>
                            <includes>
                                <include>org/**</include>
                                <include>resources/bundles/org.apache.felix**</include>
                            </includes>
                        </resource>
                        <!-- the configuration resources, but no Sling bundles -->
                        <resource>
                            <directory>
                                ${basedir}/target/launchpad-app
                            </directory>
                            <targetPath>WEB-INF</targetPath>
                            <includes>
                                <include>resources/**</include>
                                <include>sling.properties</include>
                                <include>sling_install.properties</include>
                                <include>jre-*.properties</include>
                            </includes>
                            <excludes>
                                <exclude>
                                    resources/bundles/org.apache.sling**
                                </exclude>
                                <exclude>
                                    resources/corebundles/org.apache.sling**
                                </exclude>
                                <exclude>
                                    resources/bundles/org.apache.felix.http.jetty*.jar
                                </exclude>
                                <exclude>
                                    resources/bundles/pax-web-service*.jar
                                </exclude>
                                <exclude>
                                    resources/bundles/org.apache.felix.commons.servlet-api*.jar
                                </exclude>
                            </excludes>
                        </resource>
                        <!-- selected WEB-INF resources -->
                        <resource>
                            <directory>
                                ${basedir}/target/launchpad-app
                            </directory>
                            <targetPath>/</targetPath>
                            <includes>
                                <include>WEB-INF/jcr-client.properties</include>
                            </includes>
                        </resource>
                        <!-- Legal stuff -->
                        <resource>
                            <directory>${basedir}</directory>
                            <targetPath>META-INF</targetPath>
                            <includes>
                                <include>LICENSE*</include>
                                <include>NOTICE*</include>
                                <include>DISCLAIMER</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <systemProperties>
                        <!-- 
                            WARNING: make sure these URLs are consistent with the
                            cargo-maven2-plugin settings: AFAIK Maven does not
                            expand variables in the <value> element.
                            And WARNING: these properties are duplicated somewhere in this
                            POM with slightly different values...there must be a better way. 
                        -->
                        <property>
                            <name>launchpad.http.server.url</name>
                            <value>
                                http://${test.host}:${http.port}/${http.base.path}
                            </value>
                        </property>
                        <property>
                            <name>launchpad.webdav.server.url</name>
                            <value>
                                http://${test.host}:${http.port}/${webdav.workspace.path}
                            </value>
                        </property>
                    </systemProperties>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/bin.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                  <!-- No javadocs -->
                    <excludePackageNames>
                        org.apache.sling
                    </excludePackageNames>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <!--
                Run the cargo-based integration tests.
            -->
            <id>cargoIntegrationTesting</id>
            <activation>
                <property>
                    <name>!maven.test.skip</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>surefire-integration-test</id>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <excludes>
                                        <exclude>none</exclude>
                                    </excludes>
                                    <includes>
                                        <include>
                                            ${integration.test.code.path}/**/*Test.java
                                        </include>
                                    </includes>
                                    <systemProperties>
                                        <!-- 
                                            WARNING: make sure these URLs are consistent with the
                                            cargo-maven2-plugin settings: AFAIK Maven does not
                                            expand variables in the <value> element.
                                            And WARNING: these properties are duplicated somewhere in this
                                            POM with slightly different values...there must be a better way. 
                                        -->
                                        <property>
                                            <name>
                                                launchpad.http.server.url
                                            </name>
                                            <value>
                                                http://${test.host}:${http.port}/${project.build.finalName}
                                            </value>
                                        </property>
                                        <property>
                                            <name>
                                                launchpad.webdav.server.url
                                            </name>
                                            <value>
                                                http://${test.host}:${http.port}/${project.build.finalName}/${webdav.workspace.path}
                                            </value>
                                        </property>
                                    </systemProperties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.cargo</groupId>
                        <artifactId>cargo-maven2-plugin</artifactId>
                        <version>0.3.1</version>
                        <executions>
                            <execution>
                                <id>start-container</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>start</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>stop-container</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>stop</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <wait>${integration.test.wait}</wait>
                            <container>
                                <containerId>jetty6x</containerId>
                                <type>embedded</type>
                                <systemProperties>
                                    <sling.home>
                                        ${basedir}/target/it/sling
                                    </sling.home>
                                </systemProperties>
                            </container>
                            <configuration>
                                <properties>
                                    <cargo.servlet.port>
                                        ${http.port}
                                    </cargo.servlet.port>
                                    <!-- 
                                        <cargo.jvmargs>-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=30333,server=y,suspend=y</cargo.jvmargs>
                                    -->
                                </properties>
                            </configuration>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!--
                By default, do not run the integration tests in the test phase, as they have
                no Sling instance to talk to.
                See README.txt for how to run the integration tests against a running instance
                of Sling.
            -->
            <id>disableIntegrationTestsInTestPhase</id>
            <activation>
                <property>
                    <name>!maven.test.skip</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>
                                    ${integration.test.code.path}/**/*.java
                                </exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <dependencies>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.launchpad.base</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.log</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.json</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.api</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.engine</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.httpauth</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.adapter</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.servlets.resolver</artifactId>
            <version>2.0.5-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.servlets.get</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.servlets.post</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling.samples</groupId>
            <artifactId>org.apache.sling.samples.path-based.rtp</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.osgi</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.mime</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.api</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.base</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.contentloader</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.resource</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.ocm</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.jackrabbit.api</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.jackrabbit.server</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-jcr-commons</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.webdav</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.jcr.classloader</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.bundleresource.impl</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.launchpad.content</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.api</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.core</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.javascript</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.jsp</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.jsp.taglib</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.extensions.apt.servlet</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.json</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.extensions.apt.parser</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.testing</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.servlets.post</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.scripting.javascript</artifactId>
            <version>2.0.3-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.launchpad.app</artifactId>
            <version>4-incubator-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.equinox.http</groupId>
            <artifactId>servlet</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- The servlet container will have to provide these API classes -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </dependency>
    </dependencies>
</project>
