<?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-SNAPSHOT</version>
  </parent>

  <artifactId>camel-spring-boot-generator-bom</artifactId>
  <packaging>pom</packaging>
  <name>Camel :: Platforms :: Spring-Boot :: Dependency Management :: BOM Generator</name>

  <dependencyManagement>

    <dependencies>

      <!-- Additional libraries related to Avro (version from Camel) -->
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro-mapred</artifactId>
        <version>${avro-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro-mapred</artifactId>
        <classifier>hadoop2</classifier>
        <version>${avro-version}</version>
      </dependency>


      <!-- Add a uniform jackson 1 (version from Camel) -->
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-xc</artifactId>
        <version>${jackson-version}</version>
      </dependency>

      <!-- Added to match the version of related libraries provided by spring-boot -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-ext</artifactId>
        <version>${slf4j-version}</version>
      </dependency>

      <!-- Added to match the version of related libraries provided by spring-boot -->
      <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna-platform</artifactId>
        <version>${jna-version}</version>
      </dependency>

      <!-- Added to match the version of related libraries provided by spring-boot -->
      <!-- Seems that htmlunit 2.21 is not present in Maven central -->
      <!--<dependency>-->
      <!--<groupId>net.sourceforge.htmlunit</groupId>-->
      <!--<artifactId>htmlunit-core-js</artifactId>-->
      <!--<version>${htmlunit-version}</version>-->
      <!--</dependency>-->

      <!-- Added to match the version of related libraries provided by spring-boot -->
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-util-ajax</artifactId>
        <version>${jetty-version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-rewrite</artifactId>
        <version>${jetty-version}</version>
      </dependency>

      <!-- Added to match the version of related libraries provided by spring-boot -->
      <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-api</artifactId>
        <version>${jetty-version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-common</artifactId>
        <version>${jetty-version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-servlet</artifactId>
        <version>${jetty-version}</version>
      </dependency>

      <!-- Added to match the version of related libraries provided by Spring-boot -->
      <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-scala_2.11</artifactId>
        <version>${scala-jackson2-version}</version>
      </dependency>


      <!-- Dependencies from Camel parent at the end -->
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-parent</artifactId>
        <version>${project.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>bom-generator-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <checkConflicts>
            <boms>
              <bom>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-version}</version>
              </bom>
              <!-- Other BOMs imported by SB should be listed explicitly -->
              <bom>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${spring-version}</version>
              </bom>
              <bom>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-releasetrain</artifactId>
                <version>${spring-data-releasetrain-version}</version>
              </bom>
              <bom>
                <groupId>org.springframework.integration</groupId>
                <artifactId>spring-integration-bom</artifactId>
                <version>${spring-integration-version}</version>
              </bom>
              <bom>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-bom</artifactId>
                <version>${spring-security-version}</version>
              </bom>
            </boms>
          </checkConflicts>
          <dependencies>
            <includes>
              <include>*:*</include>
            </includes>
            <excludes>

              <!-- These artifacts should not be included in the final (generated) BOM -->

              <!-- Different versions from the ones provided by spring-boot -->
              <exclude>de.flapdoodle*:*</exclude>
              <exclude>org.apache.activemq:*</exclude>
              <exclude>org.apache.commons:commons-pool2</exclude>
              <exclude>org.apache.httpcomponents:httpasyncclient</exclude>
              <exclude>org.apache.httpcomponents:httpclient</exclude>
              <exclude>org.apache.httpcomponents:httpclient-cache</exclude>
              <exclude>org.apache.httpcomponents:httpclient-osgi</exclude>
              <exclude>org.apache.httpcomponents:httpcore</exclude>
              <exclude>org.apache.httpcomponents:httpmime</exclude>
              <exclude>org.apache.derby:derby</exclude>
              <exclude>org.apache.logging.log4j:*</exclude>

              <exclude>org.codehaus.groovy:*</exclude>
              <exclude>org.hibernate:hibernate-entitymanager</exclude>
              <exclude>org.hsqldb:*</exclude>
              <exclude>org.mockito:*</exclude>

              <exclude>org.slf4j:jul-to-slf4j</exclude>
              <exclude>org.slf4j:log4j-over-slf4j</exclude>
              <exclude>org.slf4j:slf4j-api</exclude>
              <exclude>org.slf4j:slf4j-log4j12</exclude>
              <exclude>org.slf4j:slf4j-simple</exclude>

              <exclude>org.springframework*:*</exclude>

              <exclude>commons-codec:*</exclude>
              <exclude>commons-collections:*</exclude>
              <exclude>commons-dbcp:*</exclude>
              <exclude>commons-pool:*</exclude>

              <exclude>com.github.ben-manes.caffeine:caffeine</exclude>
              <exclude>com.datastax.cassandra:*</exclude>

              <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>
              <exclude>com.fasterxml.jackson.core:jackson-core</exclude>
              <exclude>com.fasterxml.jackson.core:jackson-databind</exclude>
              <exclude>com.fasterxml.jackson.dataformat:jackson-dataformat-cbor</exclude>
              <exclude>com.fasterxml.jackson.dataformat:jackson-dataformat-smile</exclude>
              <exclude>com.fasterxml.jackson.dataformat:jackson-dataformat-xml</exclude>
              <exclude>com.fasterxml.jackson.dataformat:jackson-dataformat-yaml</exclude>
              <exclude>com.fasterxml.jackson.datatype:jackson-datatype-jaxrs</exclude>
              <exclude>com.fasterxml.jackson.datatype:jackson-datatype-joda</exclude>
              <exclude>com.fasterxml.jackson.jaxrs:jackson-jaxrs-base</exclude>
              <exclude>com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider</exclude>
              <exclude>com.fasterxml.jackson.module:jackson-module-jaxb-annotations</exclude>

              <exclude>com.google.code.gson:*</exclude>
              <exclude>javax.servlet:javax.servlet-api</exclude>
              <exclude>junit:*</exclude>
              <exclude>net.sf.ehcache:ehcache</exclude>

              <exclude>xml-apis:*</exclude>

              <!-- Different versions required by some modules -->
              <exclude>com.google.inject:*</exclude>
              <exclude>com.google.guava:*</exclude>
              <exclude>io.netty*:*</exclude>
              <exclude>org.scala-lang:*</exclude>
              <exclude>org.apache.lucene:*</exclude>


              <!-- Unrelated -->
              <exclude>org.apache.servicemix.bundles:*</exclude>
              <exclude>org.ops4j.pax*:*</exclude>
              <exclude>org.codehaus.mojo:*</exclude>
              <exclude>org.apache.servicemix:*</exclude>
              <exclude>org.apache.aries.blueprint:*</exclude>
              <exclude>org.apache.felix:*</exclude>
              <exclude>org.apache.maven.archetype:*</exclude>
              <exclude>org.osgi:*</exclude>

              <!-- Unuseful -->
              <exclude>org.springframework:springloaded</exclude>
              <exclude>com.zaxxer:HikariCP-java6</exclude>
            </excludes>
          </dependencies>

          <sourcePom>${basedir}/src/main/resources/target-template-pom.xml</sourcePom>
          <targetPom>${basedir}/../camel-spring-boot-dependencies/pom.xml</targetPom>
        </configuration>

      </plugin>
    </plugins>
  </build>

</project>
