<?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</groupId>
        <artifactId>apache</artifactId>
        <version>8</version>
    </parent>

    <groupId>org.apache.sling</groupId>
    <artifactId>sling-samples-builder</artifactId>
    <packaging>pom</packaging>
    <version>2-SNAPSHOT</version>

    <name>Apache Sling Samples (Builder)</name>
    <description>
        Pseudo project to build all sample modules.
    </description>

    <inceptionYear>2007</inceptionYear>

    <prerequisites>
        <maven>3.0.2</maven>
    </prerequisites>


    <issueManagement>
        <system>Jira</system>
        <url>http://issues.apache.org/jira/browse/SLING</url>
    </issueManagement>


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


    <!-- List modules to be included in the build here ! -->
    <modules>
          <module>espblog</module>
          <module>javashell</module>
          <module>path-based-rtp</module>
          <module>post-servlet-extensions</module>
          <module>slingshot</module>
          <module>webloader/service</module>
          <module>webloader/ui</module>
          <module>custom-login-form</module>
          <module>slingbucks</module>
          <module>installing-dependencies</module>
          <module>framework-fragment</module>
          <module>usermanager-ui</module>
          <module>accessmanager-ui</module>
          <module>mail-archive</module>
  </modules>
</project>
