<?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>
  <groupId>cn.ponfee</groupId>
  <artifactId>commons-core</artifactId>
  <version>1.2</version>

  <!-- Maven:
    > deploy: mvn -Drevision=_ versions:set -DnewVersion=1.2-SNAPSHOT && mvn clean deploy -DskipTests -Dcheckstyle.skip -U

    > maven wrapper：https://maven.apache.org/wrapper/index.html
    > 1）Install：会生成mvnw和mvnw.cmd脚本
    >   1.1）Apache maven wrapper：mvn wrapper:wrapper [-Dmaven=3.8.4]
    >   1.2）Takari maven wrapper(建议用apache的)：mvn -N io.takari:maven:wrapper -Dmaven=3.8.4
    > 2）Usage：
    >   2.1）Linux：./mvnw clean install -Dmaven.test.skip=true
    >   2.2）Windows：mvnw.cmd clean install -Dmaven.test.skip=true

    > javac: 不加“-g”则默认为“-g:source,lines”
    >   lines：字节码文件中对应源码的行号(Line number debugging information)
    >   vars：字节码文件中对应源码的局部变量的符号表(Local variable debugging information)
    >   source：将该类文件对应的源文件名称写进字节码中(Source file debugging information，针对非public修饰类场景)
    >   -g                     生成所有调试信息
    >   -g:none                不生成任何调试信息
    >   -g:{lines,vars,source} 只生成某些调试信息
    >   -source: version
    >   -target: version

    > Alibaba P3C手册：https://github.com/alibaba/p3c
    > sonar参考文章：https://www.jianshu.com/p/68a3ed571314
  -->

  <!-- Logging:
    slf4j-ext.jar         —>                                  扩展功能
    slf4j-nop.jar         —>    (slf4j    —>  null)           slf4j的空接口输出绑定，丢弃所有日志输出
    slf4j-simple.jar      —>    (slf4j    —>  slf4j-simple)   slf4j的自带的简单日志输出实现
    slf4j-android.jar     —>    (android  —>  slf4j)          将android环境下的日志，桥接到slf4j
    log4j-1.2-api.jar     —>    (log4j    —>  log4j2)         将log4j的日志转接到log4j2日志框架

    slf4j的具体实现：slf4j-simple、logback

    slf4j adapter to impl(LogImpl)：http://www.slf4j.org/manual.html
      log4j  : slf4j-api -> org.slf4j:slf4j-log4j12, log4j:log4j
      log4j2 : slf4j-api -> org.apache.logging.log4j:(log4j-slf4j-impl, log4j-api, log4j-core)
      logback: slf4j-api -> ch.qos.logback:(logback-classic, logback-core)
      jcl    : slf4j-api -> org.slf4j:slf4j-jcl, commons-logging:commons-logging
      jul    : slf4j-api -> org.slf4j:slf4j-jdk14, java.util.logging

    log api bridge to slf4j：http://www.slf4j.org/legacy.html
      log4j            : log4j-over-slf4j(log4j api)  -> slf4j-api -> LogImpl
      log4j2           : log4j-to-slf4j  (log4j2 api) -> slf4j-api -> LogImpl
      logback          : logback就是slf4j的原生实现（即logback的api就是slf4j-api）
      commons-logging  : jcl-over-slf4j  (jcl api)    -> slf4j-api -> LogImpl
      java.util.logging: jul-to-slf4j    (jul api)    -> slf4j-api -> LogImpl（SLF4JBridgeHandler.removeHandlersForRootLogger();SLF4JBridgeHandler.install();）
      osgi             : osgi-over-slf4j (osgi api)   —> slf4j-api -> LogImpl（将osgi环境下的日志，桥接到slf4j）
   -->

  <name>Commons core</name>
  <description>A commons tool java lib</description>
  <url>https://github.com/ponfee/commons-core</url>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>Ponfee</name>
      <email>ponfee.cn@gmail.com</email>
      <organization>ponfee.cn</organization>
      <organizationUrl>http://www.ponfee.cn/</organizationUrl>
    </developer>
  </developers>
  <scm>
    <connection>scm:git:https://github.com/ponfee/commons-core.git</connection>
    <developerConnection>scm:git:https://github.com/ponfee/commons-core.git</developerConnection>
    <url>https://github.com/ponfee/commons-core</url>
    <tag>HEAD</tag>
  </scm>
  <!-- 根据version中是否带有“-SNAPSHOT”来判断是分发到snapshots库还是releases库 -->
  <distributionManagement>
    <!-- 添加到maven的安装目录的settings.xml中
    <servers>
      <server>
        <id>ossrh</id>
        <username>username</username>
        <password>password</password>
      </server>
    </servers> -->
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <properties>
    <revision>1.2-SNAPSHOT</revision>
    <file.encoding>UTF-8</file.encoding>
    <project.build.sourceEncoding>${file.encoding}</project.build.sourceEncoding>
    <project.reporting.outputEncoding>${file.encoding}</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <maven.compiler.compilerVersion>${java.version}</maven.compiler.compilerVersion>

    <spring-framework.version>5.3.24</spring-framework.version>
    <slf4j.version>1.7.36</slf4j.version>
    <log4j2.version>2.19.0</log4j2.version>
    <bouncycastle.version>1.72</bouncycastle.version>
    <jackson.version>2.14.1</jackson.version>
  </properties>

  <profiles>
    <!-- 1、查看处于激活状态的profile：mvn help:active-profiles
         2、查看计算机上的这些OS属性：mvn enforcer:display-info
         3、查看系统属性：mvn help:system | grep "os\."
      -->
    <profile>
      <id>unix</id>
      <activation>
        <os><family>unix</family></os>
      </activation>
      <properties>
        <system.separator>:</system.separator>
      </properties>
    </profile>
    <profile>
      <id>windows</id>
      <activation>
        <os><family>windows</family></os>
      </activation>
      <properties>
        <system.separator>;</system.separator>
      </properties>
    </profile>

    <profile>
      <!-- clean deploy -Dmaven.test.skip=true -P dev -->
      <id>dev</id>
      <!--<activation>前面加了OS的profile后，此处的默认设置无效
        <activeByDefault>true</activeByDefault>
      </activation>-->
      <properties>
      </properties>
    </profile>
    <profile>
      <!-- clean deploy -Dmaven.test.skip=true -P prod -->
      <id>prd</id>
      <properties>
      </properties>
    </profile>
  </profiles>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-bom</artifactId>
        <version>2.6.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
      <optional>true</optional>
      <scope>provided</scope>
    </dependency>

    <!-- ==============================logger============================== -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- adapter to slf4j-api -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>log4j-over-slf4j</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <!-- log4j2：当使用log4j2为日志实现时，需注释此依赖项 -->
    <!-- <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-to-slf4j</artifactId>
      <version>${log4j2.version}</version>
    </dependency> -->

    <!-- 具体的日志实现 -->
    <!-- logback为日志实现：logback.xml -->
    <!-- <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
      <scope>runtime</scope>
    </dependency> -->
    <!-- log4j为日志实现：log4j.properties -->
    <!-- <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency> -->
    <!-- log4j2为日志实现：log4j2.xml -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4j2.version}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-web</artifactId>
      <version>${log4j2.version}</version>
      <scope>runtime</scope>
    </dependency>
    <!-- <context-param> web.xml自定义配置文件的位置
      <param-name>log4jConfiguration</param-name>
      <param-value>/WEB-INF/classes/log4j2.xml</param-value>
    </context-param> -->
    <!-- commons-logging桥接到Log4j2 -->
    <!-- <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-jcl</artifactId>
      <version>${log4j2.version}</version>
    </dependency> -->
    <!-- java.util.logging桥接到Log4j2 -->
    <!-- <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-jul</artifactId>
      <version>${log4j2.version}</version>
    </dependency> -->
    <!-- ====================logger==================== -->


    <!-- commons -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.12.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
      <version>1.10.0</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.11.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math3</artifactId>
      <version>3.6.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.11.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
      <version>1.9.0</version>
    </dependency>
    <dependency>
      <groupId>org.dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>2.1.3</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>31.1-jre</version>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.10.13</version>
    </dependency>
    <dependency>
      <groupId>net.lingala.zip4j</groupId>
      <artifactId>zip4j</artifactId>
      <version>2.11.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-parsers-standard-package</artifactId>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itextpdf</artifactId>
      <version>5.5.13.3</version>
    </dependency>
    <dependency>
      <groupId>javax.money</groupId>
      <artifactId>money-api</artifactId>
      <version>1.1</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.javamoney</groupId>
      <artifactId>moneta</artifactId>
      <version>1.4.2</version>
      <type>pom</type>
      <optional>true</optional>
    </dependency>

    <!-- jakarta(当前版本是“javax”的包名空间，再往上升级版本就是“jakarta”包名空间) -->
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>4.0.4</version>
      <optional>true</optional>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jakarta.annotation</groupId>
      <artifactId>jakarta.annotation-api</artifactId>
      <version>1.3.5</version>
    </dependency>
    <dependency>
      <groupId>jakarta.validation</groupId>
      <artifactId>jakarta.validation-api</artifactId>
      <version>2.0.2</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>6.2.5.Final</version>
    </dependency>

    <!-- ====================spring==================== -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring-framework.version}</version>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring-framework.version}</version>
    </dependency>

    <!-- ====================excel poi==================== -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>5.2.3</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.monitorjbl</groupId>
      <artifactId>xlsx-streamer</artifactId>
      <version>2.2.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.poi</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- ====================序列化==================== -->
    <dependency>
      <groupId>com.esotericsoftware</groupId>
      <artifactId>kryo</artifactId>
      <version>5.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jsr310</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.caucho</groupId>
      <artifactId>hessian</artifactId>
      <version>4.0.66</version>
    </dependency>
    <dependency>
      <groupId>de.ruedigermoeller</groupId>
      <artifactId>fst</artifactId>
      <version>2.57</version>
      <exclusions>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.objenesis</groupId>
          <artifactId>objenesis</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.protostuff</groupId>
      <artifactId>protostuff-runtime</artifactId>
      <version>1.8.0</version>
    </dependency>
    <dependency>
      <groupId>io.protostuff</groupId>
      <artifactId>protostuff-core</artifactId>
      <version>1.8.0</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83</version>
    </dependency>

    <!-- ====================mybatis==================== -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.15</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.11</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.1.0</version>
    </dependency>
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.3.2</version>
    </dependency>

    <!-- ====================加解密==================== -->
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcmail-jdk18on</artifactId>
      <version>${bouncycastle.version}</version>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpg-jdk18on</artifactId>
      <version>${bouncycastle.version}</version>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bctls-jdk18on</artifactId>
      <version>${bouncycastle.version}</version>
    </dependency>
     <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-ext-jdk18on</artifactId>
      <version>${bouncycastle.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.15</version>
    </dependency>

    <!-- ====================test==================== -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring-framework.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.zeroturnaround</groupId>
      <artifactId>zt-zip</artifactId>
      <version>1.14</version>
      <scope>test</scope>
      <type>jar</type>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.13.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
      <version>3.4.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.14</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.14.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>3.11.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>transmittable-thread-local</artifactId>
      <version>2.11.4</version>
      <scope>test</scope>
    </dependency>
    <!-- 密码哈希处理 -->
    <dependency>
      <groupId>de.mkammerer</groupId>
      <artifactId>argon2-jvm</artifactId>
      <version>2.6</version>
      <scope>test</scope>
    </dependency>
    <!-- Java Object Layout -->
    <dependency>
      <groupId>org.openjdk.jol</groupId>
      <artifactId>jol-core</artifactId>
      <version>0.16</version>
      <scope>test</scope>
    </dependency>
    <!-- 二维码生成 -->
    <!-- <dependency>
      <groupId>com.github.kenglxn.QRGen</groupId>
      <artifactId>javase</artifactId>
      <version>2.6.0</version>
      <scope>test</scope>
    </dependency> -->
  </dependencies>

  <repositories>
    <repository>
      <!-- 1、“https://repo1.maven.org/maven2”与“https://repo.maven.apache.org/maven2”是同一个仓库(central，即mavenCentral)
           2、central是在“$MAVEN_HOME/lib/maven-model-builder.jar!/org/apache/maven/model/pom-4.0.0.xml”中配置的
           3、central仓的镜像：https://maven.aliyun.com/repository/central
           4、central仓和jcenter仓的聚合镜像仓：https://maven.aliyun.com/repository/public
           5、搜索地址：https://search.maven.org/
           6、文档：https://developer.aliyun.com/mvn/guide
      -->
      <id>central</id>
      <url>https://repo.maven.apache.org/maven2</url>
    </repository>
    <!--<repository>
      2022-02-01后jcenter不再支持下载(已停用)
      <id>jcenter</id>
      <url>https://jcenter.bintray.com</url>
    </repository>-->
    <repository>
      <id>nexus.nuiton.org-central</id>
      <url>https://nexus.nuiton.org/nexus/content/repositories/central</url>
    </repository>
    <repository>
      <id>nexus.nuiton.org-thirdparty</id>
      <url>https://nexus.nuiton.org/nexus/content/repositories/thirdparty</url>
    </repository>
  </repositories>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <!-- filtering用于替换资源文件(*.xml、*.properties)中的占位符(${...}) -->
        <!-- https://blog.csdn.net/luckyzhoustar/article/details/50411962 -->
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <filtering>false</filtering>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>false</filtering>
      </testResource>
    </testResources>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.13.0</version>
        <configuration>
          <generateBackupPoms>false</generateBackupPoms>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <encoding>${file.encoding}</encoding>
        </configuration>
      </plugin>
      <plugin>
        <!-- http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
          <compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
          <encoding>${file.encoding}</encoding>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
          <!-- <fork>true</fork> 乱码 -->
          <!--<compilerArgument>-Xlint:unchecked,deprecation</compilerArgument>-->
          <!-- <compilerArgument>-verbose -parameters -bootclasspath ${java.home}\lib\rt.jar</compilerArgument> -->
          <compilerArgs>
            <arg>-bootclasspath</arg>
            <!-- windows用“;”号分隔；linux用“:”号分隔；${JAVA_HOME}/lib/tools.jar； -->
            <arg>${java.home}/lib/rt.jar${system.separator}${java.home}/lib/jce.jar${system.separator}${java.home}/lib/jsse.jar</arg>
            <arg>-parameters</arg>
            <arg>-Xlint:unchecked,deprecation</arg>
          </compilerArgs>
          <excludes>
            <exclude>node_modules/**</exclude>
          </excludes>
          <!--<debug>false</debug>
          <debuglevel>none</debuglevel>
          <skipMain>true</skipMain>-->
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.4.1</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <doclint>none</doclint>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- 
        http://wvengen.github.io/proguard-maven-plugin
        https://github.com/wvengen/proguard-maven-plugin
        https://blog.csdn.net/xiao190128/article/details/81777912
       -->
      <!-- <plugin>
        <groupId>com.github.wvengen</groupId>
        <artifactId>proguard-maven-plugin</artifactId>
        <version>2.6.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>proguard</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <obfuscate>true</obfuscate>
          <addMavenDescriptor>false</addMavenDescriptor>
          <inFilter>!application.properties</inFilter>
          <injarNotExistsSkip>true</injarNotExistsSkip>

          <injar>classes</injar>
          <attach>false</attach>
          <outjar>${project.build.finalName}-proguard.jar</outjar>

          <!—— <injar>${project.build.finalName}.jar</injar>
          <attach>true</attach>
          <attachArtifactClassifier>proguard</attachArtifactClassifier>
          <attachArtifactType>jar</attachArtifactType> ——>

          <outputDirectory>${project.build.directory}</outputDirectory>
          <libs>
            <lib>${java.home}/lib/rt.jar</lib>
            <lib>${java.home}/lib/jce.jar</lib>
            <lib>${java.home}/lib/jsse.jar</lib>
          </libs>
          <options>
            <option>-target ${java.version}</option>
            <option>-ignorewarnings</option>
            <option>-dontshrink</option>
            <option>-dontoptimize</option>
            <option>-dontskipnonpubliclibraryclasses</option>
            <option>-dontskipnonpubliclibraryclassmembers</option>
            <option>-keeppackagenames</option>
            <option><![CDATA[-keep class * {*;}]]></option>
          </options>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>net.sf.proguard</groupId>
            <artifactId>proguard-base</artifactId>
            <version>6.2.2</version>
          </dependency>
        </dependencies>
      </plugin> -->


      <!-- http://maven.apache.org/plugins/maven-assembly-plugin/single-mojo.html -->
      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>cn.ponfee.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <finalName>${project.artifactId}</finalName>
              <skipAssembly>false</skipAssembly>
              <descriptors>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin> -->

      <!-- 
        https://blog.csdn.net/u011499747/article/details/83045928
        http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html
          maven-jar-plugin:
          maven-assembly-plugin: mvn assembly:assembly
          maven-shade-plugin: mvn clean package
       -->
      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>cn.ponfee.Main</mainClass>
                </transformer>
              </transformers>
              <createSourcesJar>true</createSourcesJar>
              <artifactSet>
                <includes>
                  <include>${project.groupId}:*:*</include>
                </includes>
                <excludes>
                  <!—— log jar file provide by flink ——>
                  <exclude>org.slf4j:*</exclude>
                  <exclude>log4j:*</exclude>
                </excludes>
              </artifactSet>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                    <!—— log conf file provide by flink ——>
                    <exclude>log4j2.xml</exclude>
                  </excludes>
                </filter>
              </filters>
            </configuration>
          </execution>
        </executions>
      </plugin> -->

      <!--  package jar -->
      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>cn.ponfee.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-a-jar</id>
            <phase>compile</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>compile</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>
                ${project.build.directory}/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin> -->

      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
        <configuration>
          <!—— warSourceExcludes是在编译完成后从warSourceDirectory目录复制文件时忽略，
               packagingExcludes是在从target/${artifactId}-${version}目录打包时忽略 ——>
          <!—— <warSourceDirectory>src/main/webapp | WebRoot | WebContent</warSourceDirectory>
          <warSourceExcludes>page/**,js/**,css/**,imgs/**</warSourceExcludes> ——>
          <warSourceIncludes>WEB-INF/lib/**,WEB-INF/web.xml,WEB-INF/mvc-config.xml,WEB-INF/jetty-web.xml</warSourceIncludes>

          <!—— packagingExcludes在warSourceExcludes后面执行：排除src/main/resources或从远程仓库pull下来的 
          <packagingExcludes>WEB-INF/classes/logback.xml,WEB-INF/lib/commons-logging-*.jar,%regex[WEB-INF/lib/log4j-(?!over-slf4j).*.jar]</packagingExcludes>
          <packagingIncludes></packagingIncludes> ——>
          <failOnMissingWebXml>true</failOnMissingWebXml>
        </configuration>
      </plugin> -->
    </plugins>

  </build>
</project>
