<?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.activemq</groupId>
        <artifactId>artemis-pom</artifactId>
        <version>2.8.0</version>
    </parent>

    <artifactId>artemis-hawtio-pom</artifactId>
    <name>ActiveMQ Artemis Cons</name>

    <!-- hawtio plugins are almost always war files -->
    <packaging>pom</packaging>

    <properties>

        <activemq.basedir>${project.basedir}/..</activemq.basedir>

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        
        <hawtio.version>1.5.5</hawtio.version>
        <jline.version>3.2.0</jline.version>
        <junit-version>4.11</junit-version>
        <log4j-version>1.2.17</log4j-version>
        <maven-version>3.0.4</maven-version>
        <maven-antrun-plugin-version>1.7</maven-antrun-plugin-version>
        <maven-bundle-plugin-version>3.0.1</maven-bundle-plugin-version>
        <maven-plugin-version>3.3</maven-plugin-version>
        <maven-source-plugin-version>2.1.2</maven-source-plugin-version>
        <maven-resources-plugin-version>2.6</maven-resources-plugin-version>
        <maven-surefire-plugin-version>2.19.1</maven-surefire-plugin-version>
        <servlet-api-version>2.5</servlet-api-version>

        <!-- use slf4j-api 1.6.x to be easy compatible with older Karaf/Camel releases -->
        <slf4j-api-version>1.6.6</slf4j-api-version>
        <slf4j-version>1.7.21</slf4j-version>

        <war-plugin-version>2.6</war-plugin-version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- we only need to embed this dependency in the war, this contains
              a nice helper class that our plugin can use to export it's plugin
              mbean -->
            <dependency>
                <groupId>io.hawt</groupId>
                <artifactId>hawtio-plugin-mbean</artifactId>
                <version>${hawtio.version}</version>
            </dependency>

            <!-- servlet API is provided by the container -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api-version}</version>
                <scope>provided</scope>
            </dependency>

            <!-- logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j-version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j-version}</version>
                <scope>provided</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <modules>
        <module>activemq-branding</module>
        <module>artemis-plugin</module>
        <module>artemis-console</module>
    </modules>

</project>
