<?xml version="1.0" encoding="UTF-8"?>
<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>
        <groupId>cn.home1</groupId>
        <artifactId>deps-spring-boot</artifactId>
        <version>3.0.2</version>
    </parent>

    <artifactId>deps-spring-boot-2.1</artifactId>
    <description>Dependency management for spring-boot (2.1), spring-data, spring-cloud</description>
    <name>deps-spring-boot-2.1</name>
    <packaging>pom</packaging>

    <modules>
        <module>deps-spring-boot-2.1.3.RELEASE</module>
    </modules>

    <properties>
    </properties>

    <profiles>
        <profile>
            <id>spring-and-its-dependencies</id>
            <activation>
                <property>
                    <name>!suppress-spring-and-its-dependencies</name>
                </property>
            </activation>
            <properties>
                <!-- org.springframework.boot:spring-boot-dependencies -->
                <version.spring-boot>2.1.3.RELEASE</version.spring-boot>
                <!-- org.springframework.data:spring-data-releasetrain -->
                <version.spring-data-releasetrain>Lovelace-SR5</version.spring-data-releasetrain>


                <!-- org.springframework.cloud:spring-cloud-dependencies -->
                <version.spring-cloud>Greenwich.SR1</version.spring-cloud>
                <version.spring-mobile>1.1.5.RELEASE</version.spring-mobile>

                <version.spring-integration>5.1.3.RELEASE</version.spring-integration>
                <version.spring-integration-kafka>3.1.1.RELEASE</version.spring-integration-kafka>
                <version.spring-session>Bean-SR3</version.spring-session>
                <version.spring-statemachine>2.1.0.RELEASE</version.spring-statemachine>

                <!-- org.springframework.boot:spring-boot-dependencies -->
                <version.aspectj>1.9.2</version.aspectj>
                <version.commons-lang3>3.8.1</version.commons-lang3>
                <version.log4j2>2.11.2</version.log4j2>
                <!-- io.spring.platform:platform-bom -->
                <version.bouncycastle>1.56</version.bouncycastle>
                <version.hibernate-jpa-2.1-api>1.0.2.Final</version.hibernate-jpa-2.1-api>
                <version.jackson>2.9.8</version.jackson>
                <version.jackson1>1.9.13</version.jackson1>
                <version.lombok>1.18.6</version.lombok>
                <!-- org.springframework.cloud:spring-cloud-dependencies -->

                <!-- third-party -->
                <version.gson-jodatime-serialisers>1.6.0</version.gson-jodatime-serialisers>
                <version.disruptor>3.4.2</version.disruptor>
                <version.jjwt>0.9.1</version.jjwt>

                <!-- third-party (potential risk of conflicts) -->
                <!-- note:  commons-beanutils, commons-collections, commons-digester version -->
                <version.commons-validator>1.6</version.commons-validator>
                <version.commons-collections4>4.2</version.commons-collections4>
                <!-- conflict: hibernate-validator & io.springfox:springfox-swagger2 -->
                <version.classmate>1.4.0</version.classmate>
                <version.guava>20.0</version.guava>
                <!-- note: org.apache.kafka:kafka_2.11 com.101tec:zkclient version -->
                <version.zookeeper>3.4.12</version.zookeeper>
                <!-- note: hibernate version -->
                <version.usertype>6.0.1.GA</version.usertype>
                <!-- note: org.javassist:javassist version -->
                <version.javassist>3.23.1-GA</version.javassist>
                <!-- note: classmate version -->
                <version.springfox-swagger>2.9.2</version.springfox-swagger>
                <version.swagger>1.5.22</version.swagger>
                <!-- conflict: spring-io-platform & orika-core -->
                <version.orika>1.5.2</version.orika>
                <!-- conflict: org.eclipse.jetty:jetty-annotations & com.netflix.governator:governator -->
                <version.asm>6.2</version.asm>
                <!-- note: cglib version -->
                <version.p6spy>3.7.0</version.p6spy>
            </properties>
            <dependencyManagement>
                <dependencies>
                    <!--<dependency><groupId>io.netty</groupId><artifactId>netty-bom</artifactId><version>${version.netty}</version><type>pom</type><scope>import</scope></dependency>-->
                    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${version.spring-boot}</version><type>pom</type><scope>import</scope></dependency>
                    <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-releasetrain</artifactId><version>${version.spring-data-releasetrain}</version><type>pom</type><scope>import</scope></dependency>
                    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${version.spring-cloud}</version><type>pom</type><scope>import</scope></dependency>
                    <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-bom</artifactId><version>${version.spring-session}</version><type>pom</type><scope>import</scope></dependency>
                    <dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-bom</artifactId><version>${version.spring-integration}</version><type>pom</type><scope>import</scope></dependency>
                    <!--
                    org.springframework.integration:spring-integration-java-dsl
                    org.springframework.integration:spring-integration-aws
                    org.springframework.integration:spring-integration-smb
                    org.springframework.integration:spring-integration-zip
                    org.springframework.integration:org.springframework.integration.event
                    org.springframework.integration:spring-integration-hazelcast
                    -->
                    <dependency><groupId>org.springframework.statemachine</groupId><artifactId>spring-statemachine-bom</artifactId><version>${version.spring-statemachine}</version><type>pom</type><scope>import</scope></dependency>

                    <!-- For this to work, you must go to: Preferences->Editor->Code Style->Formatter Control and check Enable formatter markers in comments -->
                    <!-- @formatter:off -->
                    <!--<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><version>[1.0.0.RELEASE,)</version><scope>provided</scope></dependency>-->
                    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><version>${version.spring-boot}</version><scope>provided</scope></dependency>
                    <dependency>
                        <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${version.spring-boot}</version>
                        <exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${version.spring-boot}</version>
                        <exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
                    </dependency>
                    <!--<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>[1.0.0.RELEASE,)</version><scope>provided</scope></dependency>-->
                    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>${version.spring-boot}</version><scope>provided</scope></dependency>
                    <dependency>
                        <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jersey</artifactId><version>${version.spring-boot}</version>
                        <exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${version.spring-boot}</version>
                        <exclusions>
                            <exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion>
                            <exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion>
                        </exclusions>
                    </dependency>

                    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mobile</artifactId><version>${version.spring-boot}</version></dependency>
                    <dependency><groupId>org.springframework.mobile</groupId><artifactId>spring-mobile-device</artifactId><version>${version.spring-mobile}</version></dependency>

                    <dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-kafka</artifactId><version>${version.spring-integration-kafka}</version></dependency>

                    <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${version.aspectj}</version></dependency>
                    <dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${version.aspectj}</version></dependency>
                    <dependency><groupId>commons-validator</groupId><artifactId>commons-validator</artifactId><version>${version.commons-validator}</version></dependency>

                    <dependency><groupId>com.fasterxml</groupId><artifactId>classmate</artifactId><version>${version.classmate}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-joda</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-jaxb-annotations</artifactId><version>${version.jackson}</version></dependency>
                    <dependency><groupId>com.fatboyindustrial.gson-jodatime-serialisers</groupId><artifactId>gson-jodatime-serialisers</artifactId><version>${version.gson-jodatime-serialisers}</version></dependency>
                    <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${version.guava}</version></dependency>

                    <dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>${version.disruptor}</version></dependency>

                    <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>${version.commons-collections4}</version></dependency>
                    <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${version.commons-lang3}</version></dependency>

                    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${version.log4j2}</version></dependency>
                    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${version.log4j2}</version></dependency>
                    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${version.log4j2}</version></dependency>
                    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-1.2-api</artifactId><version>${version.log4j2}</version></dependency>
                    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>${version.log4j2}</version></dependency>

                    <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>${version.zookeeper}</version></dependency>

                    <!--The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms.
                    This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.-->
                    <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>${version.bouncycastle}</version></dependency>
                    <!--The Bouncy Castle Java APIs for CMS, PKCS, EAC, TSP, CMP, CRMF, OCSP, and certificate generation.
                    This jar contains APIs for JDK 1.5 to JDK 1.8. The APIs can be used in conjunction with a JCE/JCA provider
                    such as the one provided with the Bouncy Castle Cryptography APIs.-->
                    <!--dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>${version.bouncycastle}</version></dependency-->
                    <!--The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms.
                    This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
                    Note: this package includes the NTRU encryption algorithms.-->
                    <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-ext-jdk15on</artifactId><version>${version.bouncycastle}</version></dependency>

                    <dependency><groupId>org.hibernate.javax.persistence</groupId><artifactId>hibernate-jpa-2.1-api</artifactId><version>${version.hibernate-jpa-2.1-api}</version></dependency>

                    <dependency><groupId>org.jadira.usertype</groupId><artifactId>usertype.core</artifactId><version>${version.usertype}</version></dependency>
                    <dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>${version.javassist}</version></dependency>
                    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${version.lombok}</version></dependency>

                    <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${version.jjwt}</version></dependency>

                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-bean-validators</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-core</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-data-rest</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-spi</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-staticdocs</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-common</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger1</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${version.springfox-swagger}</version></dependency>
                    <dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>${version.swagger}</version></dependency>
                    <dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>${version.swagger}</version></dependency>

                    <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>${version.orika}</version></dependency>

                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm</artifactId><version>${version.asm}</version></dependency>
                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm-all</artifactId><version>${version.asm}</version></dependency>
                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm-analysis</artifactId><version>${version.asm}</version></dependency>
                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm-commons</artifactId><version>${version.asm}</version></dependency>
                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm-debug-all</artifactId><version>${version.asm}</version></dependency>
                    <dependency><groupId>org.ow2.asm</groupId><artifactId>asm-tree</artifactId><version>${version.asm}</version></dependency>

                    <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>${version.p6spy}</version></dependency>
                    <!-- @formatter:on -->
                </dependencies>
            </dependencyManagement>
        </profile>
        <profile>
            <id>third-party</id>
            <activation>
                <property>
                    <name>!suppress-third-party</name>
                </property>
            </activation>
            <properties>
                <!-- third party -->
                <version.mybatis-spring-boot-starter>1.3.2</version.mybatis-spring-boot-starter>

                <version.aws-java-sdk-s3>1.11.125</version.aws-java-sdk-s3>
                <version.libphonenumber>8.9.6</version.libphonenumber>
                <version.html2pdf>2.0.2</version.html2pdf>
                <version.itextpdf>5.5.13</version.itextpdf>
                <version.druid>1.0.31</version.druid>
                <version.fastjson>1.2.38</version.fastjson>
                <version.beetl>2.2.7</version.beetl>
                <version.zkclient>0.10</version.zkclient>
                <version.protostuff>1.5.9</version.protostuff>
                <version.httpclient>4.5.5</version.httpclient>
                <version.poi>3.9</version.poi>
                <version.redisson>3.7.0</version.redisson>
                <version.reflection>0.9.11</version.reflection>
                <version.scala-library>2.11.11</version.scala-library>
                <version.simple-java-mail>4.2.3</version.simple-java-mail>
                <version.logstash-logback-encoder>5.0</version.logstash-logback-encoder>
                <version.super-csv>2.4.0</version.super-csv>
            </properties>
            <dependencyManagement>
                <!-- @formatter:off -->
                <dependencies>
                    <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${version.mybatis-spring-boot-starter}</version></dependency>

                    <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>${version.aws-java-sdk-s3}</version></dependency>

                    <dependency><groupId>com.googlecode.libphonenumber</groupId><artifactId>libphonenumber</artifactId><scope>provided</scope><version>${version.libphonenumber}</version></dependency>

                    <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><scope>provided</scope><version>${version.itextpdf}</version></dependency>
                    <dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><scope>provided</scope><version>${version.html2pdf}</version></dependency>

                    <!-- exclude system scope dependencies -->
                    <dependency>
                        <groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${version.druid}</version>
                        <exclusions>
                            <exclusion><artifactId>jconsole</artifactId><groupId>com.alibaba</groupId></exclusion>
                            <exclusion><artifactId>tools</artifactId><groupId>com.alibaba</groupId></exclusion>
                        </exclusions>
                    </dependency>
                    <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${version.fastjson}</version></dependency>

                    <dependency><groupId>com.ibeetl</groupId><artifactId>beetl</artifactId><version>${version.beetl}</version></dependency>

                    <dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>${version.zkclient}</version></dependency>

                    <dependency><groupId>io.protostuff</groupId><artifactId>protostuff-api</artifactId><version>${version.protostuff}</version></dependency>
                    <dependency><groupId>io.protostuff</groupId><artifactId>protostuff-core</artifactId><version>${version.protostuff}</version></dependency>
                    <dependency><groupId>io.protostuff</groupId><artifactId>protostuff-runtime</artifactId><version>${version.protostuff}</version></dependency>

                    <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${version.httpclient}</version></dependency>
                    <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>${version.httpclient}</version></dependency>

                    <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${version.poi}</version></dependency>
                    <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${version.poi}</version></dependency>

                    <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>${version.redisson}</version></dependency>
                    <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>${version.reflection}</version></dependency>

                    <dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${version.scala-library}</version></dependency>

                    <dependency><groupId>org.simplejavamail</groupId><artifactId>simple-java-mail</artifactId><version>${version.simple-java-mail}</version></dependency>

                    <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>${version.logstash-logback-encoder}</version></dependency>
                    <dependency><groupId>net.sf.supercsv</groupId><artifactId>super-csv</artifactId><version>${version.super-csv}</version></dependency>
                </dependencies>
                <!-- @formatter:on -->
            </dependencyManagement>
        </profile>
    </profiles>
</project>