<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- 声明项目描述符遵循的 POM 模型版本 -->
    <modelVersion>4.0.0</modelVersion>

    <!-- 声明父项目的坐标，继承其属性，artifactId、name、prerequisites 不会继承 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <!-- 项目的 Maven 坐标 -->
    <groupId>com.github.drtrang</groupId>
    <artifactId>parent2</artifactId>
    <version>1.1.2</version>
    <packaging>pom</packaging>

    <!-- 项目描述 -->
    <name>parent</name>
    <description>
        Parent pom providing dependency and plugin management for applications built with Maven
    </description>
    <url>https://github.com/drtrang/parent</url>

    <inceptionYear>2017</inceptionYear>

    <!-- 组织信息 -->
    <organization>
        <name>trang</name>
        <url>http://blog.trang.space/</url>
    </organization>

    <!-- 开发者信息 -->
    <developers>
        <developer>
            <id>trang</id>
            <name>trang</name>
            <email>donghao.l@hotmail.com</email>
            <timezone>+8</timezone>
            <url>http://blog.trang.space/</url>
        </developer>
    </developers>

    <!-- 许可信息 -->
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <!-- 源码管理 -->
    <scm>
        <connection>scm:git:https://github.com/drtrang/parent.git</connection>
        <developerConnection>scm:git:git@github.com:drtrang/parent.git</developerConnection>
        <url>https://github.com/drtrang/parent</url>
    </scm>

    <!-- 问题管理 -->
    <issueManagement>
        <system>github</system>
        <url>https://github.com/drtrang/parent/issues</url>
    </issueManagement>

    <!-- Maven 的版本条件 -->
    <prerequisites>
        <maven>3.0.3</maven>
    </prerequisites>

    <!-- 自定义属性 -->
    <properties>
        <!-- 工程参数 -->
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 基础依赖 -->
        <asm.version>6.1.1</asm.version>
        <automon.version>1.0.2</automon.version>
        <cglib.version>3.2.6</cglib.version>
        <chronicle-map.version>3.14.5</chronicle-map.version>
        <commons-collections4.version>4.1</commons-collections4.version>
        <commons-compress.version>1.16.1</commons-compress.version>
        <commons-configuration2.version>2.2</commons-configuration2.version>
        <commons-digester3.version>3.2</commons-digester3.version>
        <commons-io.version>2.6</commons-io.version>
        <commons-lang3.version>3.7</commons-lang3.version>
        <commons-logging.version>99.0-does-not-exist</commons-logging.version>
        <commons-math3.version>3.6.1</commons-math3.version>
        <commons-net.version>3.6</commons-net.version>
        <commons-pool2.version>2.5.0</commons-pool2.version>
        <commons-validator.version>1.6</commons-validator.version>
        <druid.version>1.1.9</druid.version>
        <easypoi.version>3.1.0</easypoi.version>
        <fastjson.version>1.2.47</fastjson.version>
        <fastutil.version>8.1.1</fastutil.version>
        <freemarker.version>2.3.28</freemarker.version>
        <fst.version>2.57</fst.version>
        <guava.version>24.1-jre</guava.version>
        <hppc.version>0.7.3</hppc.version>
        <httpclient.version>4.5.5</httpclient.version>
        <httpcore.version>4.4.9</httpcore.version>
        <javax-persistence.version>1.0</javax-persistence.version>
        <javasimon.version>4.1.4</javasimon.version>
        <junit-params.version>1.1.1</junit-params.version>
        <leakcanary.version>1.5.4</leakcanary.version>
        <logback.version>1.2.3</logback.version>
        <mapper-spring-boot-starter.version>1.1.7</mapper-spring-boot-starter.version>
        <mapper.version>3.4.6</mapper.version>
        <!-- 升级到 1.3.6 版本后出现子 Module 依赖找不到的问题 -->
        <mybatis-generator.version>1.3.5</mybatis-generator.version>
        <mybatis-generator-extension.version>0.0.5</mybatis-generator-extension.version>
        <mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>
        <mybatis-spring.version>1.3.2</mybatis-spring.version>
        <mybatis.version>3.4.6</mybatis.version>
        <netty.version>4.1.22.Final</netty.version>
        <okhttp3.version>3.10.0</okhttp3.version>
        <pagehelper.version>5.1.2</pagehelper.version>
        <pagehelper-spring-boot-starter.version>1.2.3</pagehelper-spring-boot-starter.version>
        <pdfbox.version>2.0.9</pdfbox.version>
        <poi.version>3.17</poi.version>
        <reactor.version>3.1.1.RELEASE</reactor.version>
        <redisson.version>3.6.4</redisson.version>
        <rxjava.version>2.1.12</rxjava.version>
        <sharding-jdbc.version>2.0.3</sharding-jdbc.version>
        <spring-boot.version>2.0.1.RELEASE</spring-boot.version>
        <spring-kafka.version>2.1.5.RELEASE</spring-kafka.version>
        <streamex.version>0.6.6</streamex.version>
        <strman.version>0.4.0</strman.version>
        <swagger2.version>2.8.0</swagger2.version>
        <tablesaw.version>0.12.0</tablesaw.version>
        <thumbnailator.version>0.4.8</thumbnailator.version>
        <trove4j.version>3.0.3</trove4j.version>
        <univocity-parsers.version>2.6.1</univocity-parsers.version>
        <xerces.version>2.11.0</xerces.version>
        <zkclient.version>0.10</zkclient.version>
        <zxing.version>3.3.2</zxing.version>
        <!-- Maven 插件 -->
        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
        <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
        <coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
        <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
        <jacoco-maven-plugin.version>0.8.1</jacoco-maven-plugin.version>
        <maven-archetype-plugin.version>3.0.1</maven-archetype-plugin.version>
        <maven-assembly-plugin.version>3.1.0</maven-assembly-plugin.version>
        <maven-clean-plugin.version>3.0.0</maven-clean-plugin.version>
        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
        <maven-dependency-plugin.version>3.0.2</maven-dependency-plugin.version>
        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
        <maven-enforcer-plugin.version>3.0.0-M1</maven-enforcer-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-install-plugin.version>2.5.2</maven-install-plugin.version>
        <maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>
        <maven-javadoc-plugin.version>3.0.0</maven-javadoc-plugin.version>
        <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
        <maven-resources-plugin.version>3.0.2</maven-resources-plugin.version>
        <maven-shade-plugin.version>3.1.0</maven-shade-plugin.version>
        <maven-site-plugin.version>3.7</maven-site-plugin.version>
        <maven-source-plugin.version>3.0.1</maven-source-plugin.version>
        <maven-surefire-plugin.version>2.21.0</maven-surefire-plugin.version>
        <maven-war-plugin.version>3.2.0</maven-war-plugin.version>
        <versions-maven-plugin.version>2.5</versions-maven-plugin.version>
    </properties>

    <!--
        1. 日志：Slf4j、LogBack
        2. JSON 解析：Jackson、Gson、FastJson
        3. 单元测试：JUnit、Mockito
        4. 通用类库：Apache Commons、Guava
        5. HTTP：Apache HttpClient、HttpCore
        6：XML 解析：Xerces2, JAXB, JAXP, Dom4j, Xstream
        7. Excel 读写：Apache POI
        8. PDF 读写：iText、PDFBox
        9. 字节码库：Javassist、Cglib
        10. 集合类库：Apache Commons Collections、Goldman Sachs Collections、Guava 、Trove、FastUtil
        11. 邮件：Apache Commons Email、javax.mail
        12. HTML 解析：JSoup
        13. 加密：Apache Commons Codec、Guava
    -->
    <!-- 项目依赖管理 -->
    <dependencyManagement>
        <dependencies>
            <!-- druid 数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- mysql 驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <scope>runtime</scope>
            </dependency>
            <!-- h2 数据库 -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${h2.version}</version>
            </dependency>
            <!-- sharding-jdbc 数据库分片中间件 -->
            <dependency>
                <groupId>io.shardingjdbc</groupId>
                <artifactId>sharding-jdbc-core</artifactId>
                <version>${sharding-jdbc.version}</version>
            </dependency>
            <!-- mybatis orm 框架 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
                <version>${mybatis-spring-boot-starter.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis-spring-boot-starter.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis-spring.version}</version>
            </dependency>
            <!-- mybatis 通用 mapper -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>${mapper-spring-boot-starter.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.mybatis.spring.boot</groupId>
                        <artifactId>mybatis-spring-boot-starter</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper</artifactId>
                <version>${mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.persistence</groupId>
                <artifactId>persistence-api</artifactId>
                <version>${javax-persistence.version}</version>
            </dependency>
            <!-- mybatis pagehelper 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
                <version>${pagehelper-spring-boot-starter.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper-spring-boot-starter.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.mybatis.spring.boot</groupId>
                        <artifactId>mybatis-spring-boot-starter</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- mybatis generator -->
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>${mybatis-generator.version}</version>
            </dependency>
            <!-- netty -->
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-bom</artifactId>
                <version>${netty.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- zookeeper -->
            <dependency>
                <groupId>com.101tec</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- redisson -->
            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson</artifactId>
                <version>${redisson.version}</version>
            </dependency>
            <!-- rx java -->
            <dependency>
                <groupId>io.reactivex.rxjava2</groupId>
                <artifactId>rxjava</artifactId>
                <version>${rxjava.version}</version>
            </dependency>
            <!-- fast 序列化 -->
            <dependency>
                <groupId>de.ruedigermoeller</groupId>
                <artifactId>fst</artifactId>
                <version>${fst.version}</version>
            </dependency>
            <!-- spring-kafka -->
            <dependency>
                <groupId>org.springframework.kafka</groupId>
                <artifactId>spring-kafka</artifactId>
                <version>${spring-kafka.version}</version>
            </dependency>
            <!-- okhttp3 -->
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>logging-interceptor</artifactId>
                <version>${okhttp3.version}</version>
            </dependency>
            <!-- swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger2.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger2.version}</version>
            </dependency>
            <!-- 动态代理 -->
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>${cglib.version}</version>
            </dependency>
            <!-- 字节码 -->
            <dependency>
                <groupId>org.ow2.asm</groupId>
                <artifactId>asm</artifactId>
                <version>${asm.version}</version>
            </dependency>
            <!-- java8 stream 拓展 -->
            <dependency>
                <groupId>one.util</groupId>
                <artifactId>streamex</artifactId>
                <version>${streamex.version}</version>
            </dependency>
            <!-- json 解析 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
            <!-- 二维码 -->
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>${zxing.version}</version>
            </dependency>
            <!-- csv -->
            <dependency>
                <groupId>com.univocity</groupId>
                <artifactId>univocity-parsers</artifactId>
                <version>${univocity-parsers.version}</version>
            </dependency>
            <!-- 图片剪裁 -->
            <dependency>
                <groupId>net.coobird</groupId>
                <artifactId>thumbnailator</artifactId>
                <version>${thumbnailator.version}</version>
            </dependency>
            <!-- 通用类库 -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.code.findbugs</groupId>
                        <artifactId>jsr305</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons-compress.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-configuration2</artifactId>
                <version>${commons-configuration2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-digester3</artifactId>
                <version>${commons-digester3.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>cglib</groupId>
                        <artifactId>cglib</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math3</artifactId>
                <version>${commons-math3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>${commons-pool2.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-validator</groupId>
                <artifactId>commons-validator</artifactId>
                <version>${commons-validator.version}</version>
            </dependency>
            <!-- 字符串 -->
            <dependency>
                <groupId>com.shekhargulati</groupId>
                <artifactId>strman</artifactId>
                <version>${strman.version}</version>
            </dependency>
            <!-- 集合 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-collections4</artifactId>
                <version>${commons-collections4.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sf.trove4j</groupId>
                <artifactId>trove4j</artifactId>
                <version>${trove4j.version}</version>
            </dependency>
            <dependency>
                <groupId>it.unimi.dsi</groupId>
                <artifactId>fastutil</artifactId>
                <version>${fastutil.version}</version>
            </dependency>
            <dependency>
                <groupId>com.carrotsearch</groupId>
                <artifactId>hppc</artifactId>
                <version>${hppc.version}</version>
            </dependency>
            <dependency>
                <groupId>net.openhft</groupId>
                <artifactId>chronicle-map</artifactId>
                <version>${chronicle-map.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.openhft</groupId>
                        <artifactId>chronicle-bytes</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>net.openhft</groupId>
                        <artifactId>chronicle-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- 数据处理 -->
            <dependency>
                <groupId>tech.tablesaw</groupId>
                <artifactId>tablesaw-core</artifactId>
                <version>${tablesaw.version}</version>
            </dependency>
            <dependency>
                <groupId>tech.tablesaw</groupId>
                <artifactId>tablesaw-plot</artifactId>
                <version>${tablesaw.version}</version>
            </dependency>
            <dependency>
                <groupId>tech.tablesaw</groupId>
                <artifactId>tablesaw-smile</artifactId>
                <version>${tablesaw.version}</version>
            </dependency>
            <dependency>
                <groupId>tech.tablesaw</groupId>
                <artifactId>tablesaw-beakerx</artifactId>
                <version>${tablesaw.version}</version>
            </dependency>
            <dependency>
                <groupId>tech.tablesaw</groupId>
                <artifactId>tablesaw-aggregate</artifactId>
                <version>${tablesaw.version}</version>
            </dependency>
            <!-- http client -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>${httpcore.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore-nio</artifactId>
                <version>${httpcore.version}</version>
            </dependency>
            <!-- xml 解析 -->
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
                <version>${xerces.version}</version>
            </dependency>
            <!-- pdf 读写 -->
            <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox</artifactId>
                <version>${pdfbox.version}</version>
            </dependency>
            <!-- office 读写 -->
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-annotation</artifactId>
                <version>${easypoi.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-base</artifactId>
                <version>${easypoi.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.validation</groupId>
                        <artifactId>validation-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.poi</groupId>
                        <artifactId>poi</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.poi</groupId>
                        <artifactId>poi-ooxml</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.poi</groupId>
                        <artifactId>poi-ooxml-schemas</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-web</artifactId>
                <version>${easypoi.version}</version>
            </dependency>
            <!-- 性能测试 -->
            <dependency>
                <groupId>org.javasimon</groupId>
                <artifactId>javasimon-core</artifactId>
                <version>${javasimon.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javasimon</groupId>
                <artifactId>javasimon-spring</artifactId>
                <version>${javasimon.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javasimon</groupId>
                <artifactId>javasimon-jdbc41</artifactId>
                <version>${javasimon.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javasimon</groupId>
                <artifactId>javasimon-console-embed</artifactId>
                <version>${javasimon.version}</version>
            </dependency>
            <dependency>
                <groupId>org.automon</groupId>
                <artifactId>automon</artifactId>
                <version>${automon.version}</version>
            </dependency>
            <!-- 内存泄漏 -->
            <dependency>
                <groupId>com.squareup.leakcanary</groupId>
                <artifactId>leakcanary-watcher</artifactId>
                <version>${leakcanary.version}</version>
            </dependency>
            <!-- 单元测试 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring-boot.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.ow2.asm</groupId>
                        <artifactId>asm</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>pl.pragmatists</groupId>
                <artifactId>JUnitParams</artifactId>
                <version>${junit-params.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 项目发布管理 -->
    <distributionManagement>
        <snapshotRepository>
            <id>oss</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>oss</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <!-- 项目 profile 信息 -->
    <profiles>
        <!-- 默认 profile -->
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 测试 profile -->
        <profile>
            <id>coveralls</id>
            <build>
                <plugins>
                    <!-- JUnit 测试 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${maven-surefire-plugin.version}</version>
                        <configuration>
                            <skip>false</skip>
                            <skipTests>false</skipTests>
                            <includes>
                                <include>**/test/coveralls/*.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                    <!-- 代码覆盖率检测 -->
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${jacoco-maven-plugin.version}</version>
                        <configuration>
                            <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                            <outputEncoding>${project.build.sourceEncoding}</outputEncoding>
                        </configuration>
                        <executions>
                            <execution>
                                <id>prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- 代码覆盖率检测 -->
                    <plugin>
                        <groupId>org.eluder.coveralls</groupId>
                        <artifactId>coveralls-maven-plugin</artifactId>
                        <version>${coveralls-maven-plugin.version}</version>
                        <configuration>
                            <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- 正式版 profile -->
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <!-- java doc 插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <docencoding>${project.build.sourceEncoding}</docencoding>
                            <charset>${project.build.sourceEncoding}</charset>
                            <!-- 修复 Java8 中生成 JavaDoc 失败的问题 -->
                            <additionalJOption>-Xdoclint:none</additionalJOption>
                        </configuration>
                    </plugin>
                    <!-- gpg 签名插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- 上传插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>${maven-deploy-plugin.version}</version>
                        <configuration>
                            <updateReleaseInfo>true</updateReleaseInfo>
                        </configuration>
                    </plugin>
                    <!-- 发布插件 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>${maven-release-plugin.version}</version>
                        <configuration>
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                            <useReleaseProfile>true</useReleaseProfile>
                            <releaseProfiles>release</releaseProfiles>
                            <pushChanges>true</pushChanges>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!-- 项目构建信息 -->
    <build>
        <!-- 项目插件管理 -->
        <pluginManagement>
            <plugins>
                <!-- 规则检查插件，避免被依赖的依赖引入过期的 jar 包 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-banned-dependencies</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <!-- 检查是否有符合禁止条件的依赖，如果有则失败 -->
                                    <bannedDependencies>
                                        <!-- 是否查找传递依赖 -->
                                        <searchTransitive>true</searchTransitive>
                                        <!-- 被禁止的依赖，表达式规则：groupId[:artifactId][:version][:type][:scope][:classifier] -->
                                        <excludes>
                                            <exclude>org.slf4j:*</exclude>
                                            <exclude>aspectj:aspectj*</exclude>
                                            <exclude>org.springframework</exclude>
                                            <exclude>org.springframework.boot</exclude>
                                        </excludes>
                                        <!-- 例外依赖，只能包含 excludes 中已有的依赖 -->
                                        <includes>
                                            <!-- 当 groupId 为 org.springframework 时，只能使用其 4.0 版本的 jar 包 -->
                                            <include>org.slf4j:slf4j-api</include>
                                            <include>org.slf4j:*-slf4j</include>
                                            <include>org.springframework:*:4.*</include>
                                            <include>org.springframework.boot:*:1.5.*</include>
                                        </includes>
                                    </bannedDependencies>
                                    <!-- 检查 Maven 版本，要求在 3.0.3 以上 -->
                                    <requireMavenVersion>
                                        <version>3.0.3</version>
                                    </requireMavenVersion>
                                    <!-- 检查 JDK 版本，要求在 1.6 以上 -->
                                    <requireJavaVersion>
                                        <version>1.6</version>
                                    </requireJavaVersion>
                                </rules>
                                <fail>true</fail>
                                <failFast>true</failFast>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${build-helper-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>${mybatis-generator.version}</version>
                    <configuration>
                        <configurationFile>
                            ${basedir}/src/main/resources/generator/generatorConfig.xml
                        </configurationFile>
                        <overwrite>true</overwrite>
                        <verbose>true</verbose>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>${mysql.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>${mapper.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.github.drtrang</groupId>
                            <artifactId>mybatis-generator-extension</artifactId>
                            <version>${mybatis-generator-extension.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.freemarker</groupId>
                            <artifactId>freemarker</artifactId>
                            <version>${freemarker.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${maven-war-plugin.version}</version>
                    <configuration>
                        <warName>${project.artifactId}</warName>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven-javadoc-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <docencoding>${project.build.sourceEncoding}</docencoding>
                        <charset>${project.build.sourceEncoding}</charset>
                        <!-- 修复 Java8 中生成 JavaDoc 失败的问题 -->
                        <additionalJOption>-Xdoclint:none</additionalJOption>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${maven-assembly-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>${exec-maven-plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${maven-gpg-plugin.version}</version>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${maven-deploy-plugin.version}</version>
                    <configuration>
                        <updateReleaseInfo>true</updateReleaseInfo>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${maven-release-plugin.version}</version>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <useReleaseProfile>true</useReleaseProfile>
                        <releaseProfiles>release</releaseProfiles>
                        <pushChanges>true</pushChanges>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.eluder.coveralls</groupId>
                    <artifactId>coveralls-maven-plugin</artifactId>
                    <version>${coveralls-maven-plugin.version}</version>
                    <configuration>
                        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>${cobertura-maven-plugin.version}</version>
                    <configuration>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <format>xml</format>
                        <maxmem>256m</maxmem>
                        <aggregate>true</aggregate>
                        <check>
                            <haltOnFailure>true</haltOnFailure>
                        </check>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${jacoco-maven-plugin.version}</version>
                    <configuration>
                        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                        <outputEncoding>${project.build.sourceEncoding}</outputEncoding>
                    </configuration>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>${maven-archetype-plugin.version}</version>
                    <configuration>
                        <archetypeGroupId>${project.groupId}</archetypeGroupId>
                        <archetypeArtifactId>${project.artifactId}</archetypeArtifactId>
                        <archetypeVersion>${project.version}</archetypeVersion>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <defaultEncoding>${project.build.sourceEncoding}</defaultEncoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <!-- 项目插件 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>${maven-dependency-plugin.version}</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
                    <outputEncoding>${project.build.sourceEncoding}</outputEncoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>${versions-maven-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>${maven-clean-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>${maven-resources-plugin.version}</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <includeEmptyDirs>true</includeEmptyDirs>
                    <addDefaultExcludes>false</addDefaultExcludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <useIncrementalCompilation>false</useIncrementalCompilation>
                    <!--<verbose>true</verbose>-->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <!-- 跳过整个 test 阶段，包括编译 -->
                    <skip>true</skip>
                    <!-- 跳过执行测试用例 -->
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven-jar-plugin.version}</version>
                <configuration>
                    <skipIfEmpty>true</skipIfEmpty>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>${maven-source-plugin.version}</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>${maven-install-plugin.version}</version>
            </plugin>
        </plugins>
    </build>

</project>