<?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>
        <relativePath></relativePath> <!-- prevent loading of ../pom.xml as the "parent" -->
    </parent>

    <groupId>org.apache.brooklyn</groupId>
    <artifactId>brooklyn-server</artifactId>
    <version>1.0.0-SNAPSHOT</version>  <!-- BROOKLYN_VERSION -->
    <packaging>pom</packaging>

    <name>Brooklyn Server Root</name>
    <description>
        Brooklyn Server 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-server.git</connection>
        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/brooklyn-server.git</developerConnection>
        <url>https://git-wip-us.apache.org/repos/asf?p=brooklyn-server.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-server-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>
      <repository>
          <id>jclouds-snapshots</id>
        <url>https://repository.apache.org/content/repositories/snapshots</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
      </repository>
    </repositories>

    <properties>
        <brooklyn.version>1.0.0-SNAPSHOT</brooklyn.version>  <!-- BROOKLYN_VERSION -->

        <org.osgi.core.version>6.0.0</org.osgi.core.version>

        <!-- Compilation -->
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Dependency Configuration -->
        <jclouds.groupId>org.apache.jclouds</jclouds.groupId> <!-- JCLOUDS_GROUPID_VERSION -->

        <!-- Testing Configuration -->
        <includedTestGroups />
        <excludedTestGroups>Integration,Acceptance,Live,Live-sanity,WIP,Broken</excludedTestGroups>
        <surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>

        <!-- Dependency Versions -->
        <jclouds.version>2.1.2</jclouds.version> <!-- JCLOUDS_VERSION -->
        <logback.version>1.0.7</logback.version>
        <slf4j.version>1.7.25</slf4j.version>  <!-- used for java.util.logging jul-to-slf4j interception -->
        <!-- Must match jclouds' version. From jclouds 1.9.3+ can be any version in the range [16-20) -->
        <guava.version>18.0</guava.version>
        <!--
            This can be different from above and should be used only by Swagger related code.
            Note that some bundles used by Brooklyn will try to bind to the latest version available.
            For example jclouds and jackson-datatype-guava both depend on guava [16,20).
        -->
        <guava-swagger.version>18.0</guava-swagger.version>

        <!-- xstream -->
        <xstream.version>1.4.11.1</xstream.version>
        <!-- xstream has dependencies that are not OSGi bundles, the servicemix repackage version embeds them -->
        <!-- note the servicemix suffix when upgrading xstream -->
        <xstream.servicemix.version>${xstream.version}_1</xstream.servicemix.version>

        <xpp3.servicemix.version>1.1.4c_7</xpp3.servicemix.version>
        <kxml2.servicemix.version>2.3.0_3</kxml2.servicemix.version>
        <!-- double-check downstream projects before changing jackson version -->
        <fasterxml.jackson.version>2.10.1</fasterxml.jackson.version> <!-- 2.9.9 matches cxf-jackson (from cxf-jaxrs), but 2.10 has better yaml support -->
        <cxf.version>3.3.2</cxf.version>
        <httpcomponents.httpclient.version>4.5.8</httpcomponents.httpclient.version> <!-- To match cxf-http-async -->
        <httpcomponents.httpcore.version>4.4.11</httpcomponents.httpcore.version> <!-- To match cxf-http-async -->
        <!-- @deprecated since 0.11 -->
        <httpclient.version>4.5.8</httpclient.version> <!-- kept for compatibility in 0.11.0-SNAPSHOT, remove after -->
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <groovy.version>2.4.15</groovy.version> <!-- Version 2.4.7 supported by https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-2.9.1-Release-Notes; not sure what more recent will be -->
        <jsr305.version>2.0.1</jsr305.version>
        <snakeyaml.version>1.25</snakeyaml.version> <!-- 1.24 matches cxf-jackson 3.3.2, but 1.25 has better yaml support -->
        <!-- Next version of swagger requires changes to how path mapping and scanner injection are done. -->
        <swagger.version>1.5.6</swagger.version>
        <gson.version>2.5</gson.version>
        <mx4j.version>3.0.1</mx4j.version>
        <bouncycastle.version>1.51</bouncycastle.version>
        <sshj.version>0.20.0</sshj.version>
        <reflections.version>0.9.10</reflections.version>
        <jetty-schemas.version>3.1.M0</jetty-schemas.version>
        <airline.version>0.7</airline.version>
        <freemarker.version>2.3.25-incubating</freemarker.version>
        <commons-io.version>2.4</commons-io.version>
        <jsonPath.version>2.4.0</jsonPath.version>
        <commons-compress.version>1.18</commons-compress.version>
        <validation-api.version>1.1.0.Final</validation-api.version>
        <geronimo-jms_1.1_spec.version>1.1.1</geronimo-jms_1.1_spec.version>
        <geronimo-jta_1.1_spec.version>1.1.1</geronimo-jta_1.1_spec.version>
        <jtidy.version>r8-20060801</jtidy.version>
        <opendmk_jmxremote_optional_jar.version>1.0-b01-ea</opendmk_jmxremote_optional_jar.version>
        <jopt.version>4.3</jopt.version>
        <javax-servlet.version>3.1.0</javax-servlet.version>
        <javax-servlet-jsp.version>2.0</javax-servlet-jsp.version>
        <xml-apis.version>1.0.b2</xml-apis.version>
        <jsr250-api.version>1.0</jsr250-api.version>
        <guice.version>3.0</guice.version>
        <javax-inject.version>1</javax-inject.version>
        <aopalliance.version>1.0</aopalliance.version>
        <commons-configuration.version>1.7</commons-configuration.version>
        <commons-lang.version>2.4</commons-lang.version>
        <jax-rs-api.version>2.1.1</jax-rs-api.version>
        <maxmind.version>2.8.0-rc1</maxmind.version>
        <maxmind-db.version>1.2.1</maxmind-db.version>
        <winrm4j.version>0.8.0</winrm4j.version>
        <felix-osgi-compendium.version>1.4.0</felix-osgi-compendium.version>
        <kubernetes-client.version>1.4.27</kubernetes-client.version>

        <!-- Dependencies shipped with vanilla karaf; update these when we update the karaf version -->
        <karaf.version>4.2.7</karaf.version>
        <karaf.plugin.version>${karaf.version}</karaf.plugin.version>
        <jetty.version>9.4.20.v20190813</jetty.version>
        <commons-collections.version>3.2.2</commons-collections.version>
        <pax-web.version>7.2.11</pax-web.version>
        <jaxb-api.version>2.3.2</jaxb-api.version>

        <!-- Transitive dependencies, declared explicitly to avoid version mismatch -->
        <jna.version>4.1.0</jna.version>
        <objenesis.version>2.5</objenesis.version>
        <clojure.version>1.4.0</clojure.version>
        <clj-time.version>0.4.1</clj-time.version>
        <commons-codec.version>1.11</commons-codec.version>
        <log4j.version>1.2.17</log4j.version>
        <commons-logging.version>1.2</commons-logging.version>
        <jsonSmart.version>2.3</jsonSmart.version>
        <minidev.accessors-smart.version>1.2</minidev.accessors-smart.version>
        <ow2.asm.version>5.2</ow2.asm.version> <!-- minidev.accessors-smart requires 5.x; aries-proxy:4.2.7 brings in 7.1 -->
        <commons-beanutils.version>1.9.3</commons-beanutils.version>
        <javax.mail.version>1.4.7</javax.mail.version> <!-- version should align with 'jetty' feature -->
        <cxf.javax.annotation-api.version>1.3.1</cxf.javax.annotation-api.version> <!-- cxf-specs feature v3.3.2 declares v1.3.1; jetty 9.4.20.v20190813 declares v1.3 -->

        <!-- Test dependencies -->
        <testng.version>6.10</testng.version>
        <mockito.version>2.7.12</mockito.version>
        <assertj.version>3.11.1</assertj.version>
        <cobertura.plugin.version>2.7</cobertura.plugin.version>
        <surefire.version>2.19.1</surefire.version>
        <hamcrest.version>1.1</hamcrest.version>
        <mockwebserver.version>20121111</mockwebserver.version>

        <!-- Test dependencies: clients to connect to deployed entities -->
        <astyanax.version>3.8.0</astyanax.version>
        <jcouchdb.version>0.11.0-1</jcouchdb.version>
        <solr.version>4.7.0</solr.version>
        <zookeeper.version>3.3.4</zookeeper.version>
        <ring-core.version>1.1.5</ring-core.version>

        <!-- Seemingly unused dependencies! -->
        <ivy.version>2.2.0</ivy.version>
        <jline.version>2.12</jline.version>
        <jansi.version>1.2.1</jansi.version> <!-- Also shipped in vanilla karaf, v1.17.1 in karaf:4.1.6 -->
        <sleepycat-je.version>5.0.34</sleepycat-je.version>
        <jcommander.version>1.27</jcommander.version>
        <commons-cli.version>1.2</commons-cli.version>

        <!-- Build Tool Versions -->
        <maven-war-plugin.version>2.4</maven-war-plugin.version>
        <maven-dependency-plugin.version>2.8</maven-dependency-plugin.version>
        <maven-replacer-plugin.version>1.5.2</maven-replacer-plugin.version>
        <nodejs-maven-plugin.version>1.0.3</nodejs-maven-plugin.version>
        <nodejs-maven-binaries.version>0.10.25</nodejs-maven-binaries.version>
        <jasmine-maven-plugin.version>1.3.1.5</jasmine-maven-plugin.version>
        <requirejs-maven-plugin.version>2.0.0</requirejs-maven-plugin.version>
        <maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
        <ant.version>1.8.4</ant.version>
        <dockerfile-maven-plugin.version>1.4.3</dockerfile-maven-plugin.version>

        <geronimo-ws-metadata_2.0_spec.version>1.1.3</geronimo-ws-metadata_2.0_spec.version>
    </properties>

    <modules>
        <module>parent</module>

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

        <module>locations/jclouds</module>
        <module>locations/container</module>

        <module>software/base</module>
        <module>software/winrm</module>

        <module>server-cli</module>
        <module>launcher-common</module>
        <module>launcher</module>
        <module>logging/logback-includes</module>
        <module>logging/logback-xml</module>
        <module>rest/rest-api</module>
        <module>rest/rest-resources</module>
        <module>rest/rest-server</module>
        <module>test-framework</module>
        <module>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>

        <module>karaf</module>

        <module>utils/rt-felix</module>

    </modules>

</project>
