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

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

  <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>

  <profiles>
    <profile>
      <id>nochecks</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>

    <profile>
      <id>fastinstall</id>
      <activation>
        <property>
          <name>fastinstall</name>
        </property>
      </activation>
      <properties>
        <maven.test.skip.exec>true</maven.test.skip.exec>
        <assembly.skipAssembly>true</assembly.skipAssembly>
        <noassembly>true</noassembly>
      </properties>
    </profile>

    <profile>
      <id>sourcecheck</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>dependencycheck</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
