<?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">
    <parent>
        <artifactId>camel-spring-boot-dm</artifactId>
        <groupId>org.apache.camel</groupId>
        <version>2.18.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>camel-starter-parent</artifactId>
    <packaging>pom</packaging>
    <name>Camel :: Spring-Boot :: Dependency Management :: Starter Parent</name>
    <description>Camel Spring-Boot Starters Parent POM</description>

    <dependencies>
        <!-- Dependencies added for all starters -->

        <!-- Logback is the default logging implementation in spring-boot but it doesn't provide the log4j2 binding -->
        <!-- Not a problem for now -->
        <!--<dependency>-->
            <!--<groupId>org.apache.logging.log4j</groupId>-->
            <!--<artifactId>log4j-to-slf4j</artifactId>-->
            <!--<version>${log4j2-version}</version>-->
        <!--</dependency>-->

        <!-- Force the reactor build order -->
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-dependencies</artifactId>
            <version>${project.version}</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <dependencyManagement>

        <dependencies>

            <!-- The spring-boot dependencies will be used by end users, so it's ok to use it in the parent -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- What's in the user BOM is OK for the parent -->
            <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-spring-boot-dependencies</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Testing -->
            <dependency>
                <groupId>org.jboss.arquillian.junit</groupId>
                <artifactId>arquillian-junit-container</artifactId>
                <version>${arquillian-version}</version>
                <scope>test</scope>
            </dependency>

            <!-- Forcing Hadoop in starters -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-auth</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-mapreduce-client-core</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-yarn-common</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-annotations</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>${hadoop2-version}</version>
            </dependency>

            <!-- Netty cannot be forced at the moment -->

            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-all</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-buffer</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-codec-http</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-codec</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-handler</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-transport-native-epoll</artifactId>-->
                <!--<classifier>linux-x86_64</classifier>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-common</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-resolver</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>io.netty</groupId>-->
                <!--<artifactId>netty-transport</artifactId>-->
                <!--<version>${netty-version}</version>-->
            <!--</dependency>-->

        </dependencies>
    </dependencyManagement>

</project>