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

  <artifactId>camel-spring-boot-dm</artifactId>
  <packaging>pom</packaging>
  <name>Camel :: Platforms :: Spring-Boot :: Dependency Management</name>

  <modules>
    <module>camel-spring-boot-generator-bom</module>
    <module>camel-spring-boot-dependencies</module>
    <module>camel-starter-parent</module>
  </modules>

  <properties>
    <!-- Spring-Boot target version -->
    <spring-boot-version>1.5.2.RELEASE</spring-boot-version>

    <!-- The following dependencies should be aligned with the ones in standard camel parent -->
    <avro-version>1.8.1</avro-version>
    <cassandra-driver-guava-version>18.0</cassandra-driver-guava-version>
    <jackson-version>1.9.12</jackson-version>

    <egit-github-core-version>2.1.5</egit-github-core-version>
    <google-guava-version>19.0</google-guava-version>
    <lucene3-version>3.6.0</lucene3-version>
    <scala-version>2.11.7</scala-version>
    <scalaxml-version>1.0.4</scalaxml-version>

    <maven-checkstyle-plugin-version>2.17</maven-checkstyle-plugin-version>
    <maven-checkstyle-version>6.17</maven-checkstyle-version>

    <arquillian-version>1.1.11.Final</arquillian-version>
    <hadoop2-version>2.7.2</hadoop2-version>

    <!-- Custom dependency required by some modules -->
    <ahc-netty-version>4.0.40.Final</ahc-netty-version>
    <cassandra-netty-version-testing>4.0.37.Final</cassandra-netty-version-testing>

    <!-- The following versions should be aligned with the ones in spring-boot-repo/spring-boot-dependencies/pom.xml (for the targeted version of spring-boot) -->
    <jackson2-version>2.8.7</jackson2-version>
    <scala-jackson2-version>2.8.7</scala-jackson2-version>
    <jetty9-version>9.4.2.v20170220</jetty9-version>
    <jetty-version>${jetty9-version}</jetty-version>
    <jna-version>4.2.2</jna-version>
    <hazelcast-version>3.7.5</hazelcast-version>
    <htmlunit-version>2.21</htmlunit-version>
    <log4j2-version>2.7</log4j2-version>
    <slf4j-version>1.7.22</slf4j-version>
    <spring-version>4.3.7.RELEASE</spring-version>
    <spring-data-releasetrain-version>Ingalls-SR1</spring-data-releasetrain-version>
    <spring-integration-version>4.3.8.RELEASE</spring-integration-version>
    <spring-security-version>4.2.2.RELEASE</spring-security-version>
  </properties>

  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${maven-checkstyle-plugin-version}</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-buildtools</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>${maven-checkstyle-version}</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <configuration>
              <includeResources>false</includeResources>
              <configLocation>camel-checkstyle.xml</configLocation>
              <consoleOutput>true</consoleOutput>
              <failsOnError>true</failsOnError>
              <linkXRef>false</linkXRef>
              <suppressionsLocation>camel-checkstyle-suppressions.xml</suppressionsLocation>
              <encoding>UTF-8</encoding>
              <sourceDirectory>${basedir}/src</sourceDirectory>
              <excludes>**/archetype-resources/**/*.java</excludes>
            </configuration>
            <goals>
              <goal>checkstyle</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin-version}</version>
        <configuration>
          <source>${jdk.version}</source>
          <target>${jdk.version}</target>
          <maxmem>512M</maxmem>
          <fork>${compiler.fork}</fork>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <attach>true</attach>
          <source>${jdk.version}</source>
          <quiet>true</quiet>
          <bottom>Apache Camel</bottom>
          <detectOfflineLinks>false</detectOfflineLinks>
          <javadocVersion>${jdk.version}</javadocVersion>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

    </plugins>
  </build>

</project>
