<?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>13</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>

    <groupId>org.apache.sling</groupId>
    <artifactId>sling-performance-tests</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <name>Apache Sling Performance Tests</name>
    <description>
        Performance tests for the Apache Sling project
    </description>

    <properties>
        <junit.version>4.8.2</junit.version>
    </properties>

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

    <modules>
        <module>base</module>
        <module>jcr-resource-2.0.10</module>
        <module>jcr-resource-2.1.0</module>
        <module>jcr-resource-2.2.0</module>
        <module>tests</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                   <argLine>-Xms256m -Xmx1024m -XX:MaxPermSize=512m</argLine>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
