<?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.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

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

    <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>com.hazelcast</groupId>
                <artifactId>hazelcast-client</artifactId>
                <version>${hazelcast-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:httpcore</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>
