<?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.brooklyn</groupId>
        <artifactId>brooklyn-parent</artifactId>
        <version>0.12.0</version>  <!-- BROOKLYN_VERSION -->
        <relativePath>../brooklyn-server/parent/</relativePath>
    </parent>

    <artifactId>brooklyn-library</artifactId>
    <packaging>pom</packaging>

    <name>Brooklyn Library Root</name>
    <description>
        Brooklyn Library project root, serving as the ancestor POM for all projects --
        declaring versions, profiles, and the modules to build
    </description>
    <url>https://brooklyn.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/brooklyn-library.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/brooklyn-library.git</developerConnection>
        <url>https://git-wip-us.apache.org/repos/asf?p=brooklyn-library.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/view/Brooklyn/job/brooklyn-library-master/</url>
    </ciManagement>
    <mailingLists>
        <mailingList>
            <name>Brooklyn Developer List</name>
            <subscribe>dev-subscribe@brooklyn.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@brooklyn.apache.org</unsubscribe>
            <post>dev@brooklyn.apache.org</post>
            <archive>
                http://mail-archives.apache.org/mod_mbox/brooklyn-dev/
            </archive>
        </mailingList>
    </mailingLists>

    <repositories>
        <!--
            Same as in the parent apache pom. Repeated here in case
            direct parent's pom not found at relativePath. Can't fetch
            the parent from remote repos for snapshot versions - no
            snapshot repos enabled by default.
        -->
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>http://repository.apache.org/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>

    <properties>
    
		<!-- Versions of Software we Blueprint -->
        <qpid.version>0.20</qpid.version>
        <mongodb.version>3.0.3</mongodb.version>
        <riak.version>1.4.0</riak.version>
        <hazelcast.version>3.5.4</hazelcast.version>
        <org.marre.smsj.version>1.0.0-20051126</org.marre.smsj.version>
        <mysql-connector-java.version>5.1.18</mysql-connector-java.version>
        <hadoop.version>1.0.2</hadoop.version>
        <postgresql.version>9.1-901.jdbc4</postgresql.version>
        <activemq.version>5.10.0</activemq.version>
        <rabbitmq-version>2.8.7</rabbitmq-version>
        <kafka.version>0.8.2.1</kafka.version>
        <storm.version>0.9.0.1</storm.version>
        <redis.version>1.5.2</redis.version>
        
    </properties>

    <modules>

        <!-- <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/cm</module>
        <module>software/network</module>
        <module>software/osgi</module>
        <module>software/database</module>
        <module>software/webapp</module>
        <module>software/messaging</module>
        <module>software/nosql</module>
        <module>software/monitoring</module>

        <module>qa</module>
        
        <module>examples</module>

        <module>karaf</module>
    </modules>

</project>
