<?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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>17</version>
    </parent>

    <groupId>org.apache.brooklyn</groupId>
    <artifactId>brooklyn</artifactId>
    <version>0.8.0-incubating</version>  <!-- BROOKLYN_VERSION -->
    <packaging>pom</packaging>

    <name>Brooklyn Root</name>
    <description>
        Brooklyn project root, serving as the ancestor POM for all projects --
        declaring versions, profiles, and the modules to build
    </description>
    <url>https://brooklyn.incubator.apache.org/</url>
    <inceptionYear>2012</inceptionYear>

    <developers>
        <!-- TODO update with PMC members and committers -->
    </developers>

    <scm>
        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-brooklyn.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-brooklyn.git</developerConnection>
        <url>https://git-wip-us.apache.org/repos/asf?p=incubator-brooklyn.git</url>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.apache.org/jira/browse/BROOKLYN</url>
    </issueManagement>
    <ciManagement>
        <system>Jenkins</system>
        <url>https://builds.apache.org/job/incubator-brooklyn-master-build/</url>
    </ciManagement>
    <mailingLists>
        <mailingList>
            <name>Brooklyn Incubator Developer List</name>
            <subscribe>dev-subscribe@brooklyn.incubator.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@brooklyn.incubator.apache.org</unsubscribe>
            <post>dev@brooklyn.incubator.apache.org</post>
            <archive>
                http://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/
            </archive>
        </mailingList>
    </mailingLists>

    <properties>
        <!-- Compilation -->
        <java.version>1.7</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <brooklyn.version>0.8.0-incubating</brooklyn.version>  <!-- BROOKLYN_VERSION -->
    </properties>

    <modules>
        <module>parent</module>
        <module>usage/downstream-parent</module>

        <module>api</module>
        <module>camp</module>
        <module>core</module>
        <module>examples</module>
        <module>policy</module>

        <module>locations/jclouds</module>

        <!-- module>sandbox/cassandra-multicloud-snitch</module -->
        <!-- module>sandbox/database</module -->
        <!-- module>sandbox/examples/simple-open-loop-policy</module -->
        <!-- module>sandbox/extra</module -->
        <!-- module>sandbox/mobile-app</module -->
        <!-- module>sandbox/monitoring</module -->
        <!-- module>sandbox/nosql</module -->
        <!-- module>sandbox/web-acceptance</module -->

        <module>software/base</module>
        <module>software/network</module>
        <module>software/osgi</module>
        <module>software/webapp</module>
        <module>software/messaging</module>
        <module>software/nosql</module>
        <module>software/database</module>
        <module>software/monitoring</module>

        <module>storage/hazelcast</module>

        <module>usage/all</module>
        <module>usage/archetypes/quickstart</module>
        <module>usage/camp</module>
        <module>usage/cli</module>
        <module>usage/dist</module>
        <module>usage/jsgui</module>
        <module>usage/launcher</module>
        <module>usage/logback-includes</module>
        <module>usage/logback-xml</module>
        <module>usage/qa</module>
        <module>usage/rest-api</module>
        <module>usage/rest-client</module>
        <module>usage/rest-server</module>
        <module>usage/test-support</module>

        <module>utils/common</module>
        <module>utils/groovy</module>
        <module>utils/jmx/jmxmp-ssl-agent</module>
        <module>utils/jmx/jmxrmi-agent</module>
        <module>utils/test-support</module>
        <module>utils/rest-swagger</module>
    </modules>

</project>
