<?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>18</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.3.9</maven>
    </prerequisites>


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


    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-samples.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-samples.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=sling-samples.git</url>
    </scm>


    <!-- List modules to be included in the build here ! -->
    <modules>
          <module>accessmanager-ui</module>
          <module>custom-login-form</module>
          <module>espblog</module>
          <module>fling</module>
          <module>htlblog</module>
          <module>javashell</module>
          <module>mail-archive</module>
          <module>path-based-rtp</module>
          <module>post-servlet-extensions</module>
          <module>slingbucks</module>
          <module>slingshot</module>
          <module>testing/bundle-with-it</module>
          <module>testing/module-with-it</module>
          <module>usermanager-ui</module>
          <module>webloader/service</module>
          <module>webloader/ui</module>
  </modules>
</project>
