spring-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.cmmplb</groupId>
<artifactId>spring-parent</artifactId>
<version>1.0.0</version>
</dependency><?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">
<!-- 指定当前POM模型的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 项目ID,项目坐标核心元素,项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。 -->
<groupId>io.github.cmmplb</groupId>
<!-- 项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。 -->
<artifactId>spring-parent</artifactId>
<!-- 项目版本 -->
<version>1.0.0</version>
<!-- 项目的打包类型:pom、jar、war -->
<packaging>pom</packaging>
<!-- 项目名称 -->
<name>${project.artifactId}</name>
<!-- 描述信息 -->
<description>parent工程</description>
<!-- 创始年份 -->
<inceptionYear>2021</inceptionYear>
<!-- 项目URL地址 -->
<url>https://gitee.com/cmmplb/spring-parent</url>
<!-- 开源协议 -->
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
<!--开发者相关信息-->
<developers>
<developer>
<name>momo</name>
<email>1045599379@qq.com</email>
</developer>
</developers>
<!-- 项目信息,scm:git:不变,后面改成克隆仓库时的https地址 -->
<scm>
<connection>scm:git:https://github.com/cmmplb/spring-parent.git</connection>
<developerConnection>scm:git:https://github.com/cmmplb/spring-parent.git</developerConnection>
<url>https://github.com/cmmplb/spring-parent.git</url>
</scm>
<!--
更多配置信息:
organization组织信息
developers开发者信息
issueManagement项目缺陷跟踪系统信息
ciManagement项目持续集成系统信息
scm:项目版本控制系统信息
mailingLists:邮件列表
properties:自定义属性
dependencies:依赖配置
dependencyManagement:依赖配置管理
pluginManagement: 插件依赖配置
repositories:仓库配置
build:构建信息,包括源码目录,输出目录,插件配置,插件管理配置
reporting:项目的报告输出目录配置,报告插件配置
-->
<!-- 版本依赖定义 -->
<properties>
<!-- 本地调试相关系统环境配置 -->
<project.port>80</project.port>
<project.address>127.0.0.1</project.address>
<revision>1.0.0</revision>
<!-- Encoding / Version -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven-javadoc-plugin.charset>UTF-8</maven-javadoc-plugin.charset>
<maven-javadoc-plugin.encoding>UTF-8</maven-javadoc-plugin.encoding>
<maven-javadoc-plugin.docencoding>UTF-8</maven-javadoc-plugin.docencoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven-surefire-argLine.encoding>-DFile.encoding=UTF-8</maven-surefire-argLine.encoding>
<java.version>1.8</java.version>
<!-- plugin -->
<maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
<maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
<maven-resources-plugin.version>3.0.1</maven-resources-plugin.version>
<maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version>
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version>
<jacoco-maven-plugin.version>0.7.5.201505241946</jacoco-maven-plugin.version>
<git-commit-id-plugin.version>5.0.0</git-commit-id-plugin.version>
<flyway-maven-plugin.version>7.14.0</flyway-maven-plugin.version>
<docker-maven-plugin-com.spotify.version>1.2.2</docker-maven-plugin-com.spotify.version>
<docker-maven-plugin-io.fabric8.version>0.40.0</docker-maven-plugin-io.fabric8.version>
<fabric8-maven-plugin.version>4.4.1</fabric8-maven-plugin.version>
<jpack-maven-plugin.version>1.5.1</jpack-maven-plugin.version>
<maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
<jasypt-maven-plugin.version>3.0.3</jasypt-maven-plugin.version>
<javapackager.version>1.6.5</javapackager.version>
<maven-site-plugin.version>4.0.0-M16</maven-site-plugin.version>
<maven-checkstyle-plugin.version>3.5.0</maven-checkstyle-plugin.version>
<findbugs-maven-plugin.version>3.5.0</findbugs-maven-plugin.version>
<spotbugs-maven-plugin.version>4.8.6.4</spotbugs-maven-plugin.version>
<maven-pmd-plugin.version>3.25.0</maven-pmd-plugin.version>
<maven-surefire-report-plugin.version>3.0.0-M5</maven-surefire-report-plugin.version>
<maven-jxr-plugin.version>3.5.0</maven-jxr-plugin.version>
<maven-gpg-plugin.version>3.2.6</maven-gpg-plugin.version>
<central-publishing-maven-plugin.version>0.6.0</central-publishing-maven-plugin.version>
<tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
<sonar-maven-plugin.version>3.9.1.2184</sonar-maven-plugin.version>
<plugin.skip>false</plugin.skip>
<!-- output -->
<spring.boot.outputDirectory>./target</spring.boot.outputDirectory>
<main-class><!-- com.*.*.SpringBootApplication --></main-class>
<!-- 版本依赖 -->
<spring-boot-dependencies.version>2.5.3</spring-boot-dependencies.version>
<spring-cloud-dependencies.version>2020.0.4</spring-cloud-dependencies.version>
<spring-cloud-alibaba-dependencies.version>2021.1</spring-cloud-alibaba-dependencies.version>
<spring-cloud-kubernetes-dependencies.version>2.1.3</spring-cloud-kubernetes-dependencies.version>
<!-- 基础依赖 -->
<lombok.version>1.18.20</lombok.version>
<activiti.version>7.1.0.M6</activiti.version>
<aliyun-java-sdk-core.version>4.6.0</aliyun-java-sdk-core.version>
<aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version>
<annotations.version>3.0.1</annotations.version>
<apt-maven-plugin.version>1.1.3</apt-maven-plugin.version>
<apollo.version>1.9.2</apollo.version>
<batik-transcoder.version>1.17</batik-transcoder.version>
<batik.batik-transcoder.version>1.6</batik.batik-transcoder.version>
<batik-codec.version>1.17</batik-codec.version>
<c3p0.version>0.9.5.5</c3p0.version>
<canal.client.version>1.1.4</canal.client.version>
<caffeine.version>2.8.8</caffeine.version><!-- 高版本会导致build失败 -->
<commons-beanutils.version>20030211.134440</commons-beanutils.version>
<commons-collections.version>3.2.2</commons-collections.version>
<commons-codec.version>1.15</commons-codec.version>
<commons-logging.version>1.2</commons-logging.version>
<commons-fileupload.version>1.4</commons-fileupload.version>
<commons-io.version>2.9.0</commons-io.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<commons-dbutils.version>1.7</commons-dbutils.version>
<commons-lang.version>20030203.000129</commons-lang.version>
<commons-lang3.version>3.7</commons-lang3.version>
<commons-pool2.version>2.11.1</commons-pool2.version>
<datafx.version>8.0.1</datafx.version>
<documents4j.version>1.0.3</documents4j.version>
<dom4j.version>1.6.1</dom4j.version>
<xstream.version>1.4.19</xstream.version>
<druid.version>1.2.8</druid.version>
<druid-spring-boot-starter.version>1.2.5</druid-spring-boot-starter.version>
<dubbo.version>2.6.12</dubbo.version>
<dynamic-datasource-spring-boot-starter.version>3.4.1</dynamic-datasource-spring-boot-starter.version>
<easyexcel.version>3.3.2</easyexcel.version>
<easypoi.version>4.1.3</easypoi.version>
<easy-captcha.version>1.6.2</easy-captcha.version>
<elasticsearch.version>7.16.1</elasticsearch.version>
<elasticsearch.client.version>7.16.1</elasticsearch.client.version>
<fastjson.version>1.2.76</fastjson.version>
<flow.version>8.0.1</flow.version>
<geoip2.version>2.12.0</geoip2.version>
<webp-imageio.version>0.1.6</webp-imageio.version>
<jai-codec.version>1.1.3</jai-codec.version>
<gson.version>2.9.0</gson.version>
<guava.version>33.2.0-jre</guava.version>
<!--<hutool-all.version>[5.7.8,)</hutool-all.version>--> <!-- 取5.7.8之后最新版本 -->
<h2.version>2.1.214</h2.version>
<httpclient.version>4.5.5</httpclient.version>
<hutool-all.version>5.7.8</hutool-all.version>
<hutool.version>5.8.10</hutool.version>
<ikonli-javafx.version>2.6.0</ikonli-javafx.version>
<ikonli-fontawesome5-pack.version>2.6.0</ikonli-fontawesome5-pack.version>
<itext-asian.version>5.2.0</itext-asian.version>
<itext-xtra.version>5.5.13.2</itext-xtra.version>
<itextpdf.version>5.5.13.2</itextpdf.version>
<junit4-runner.version>5.0.0-ALPHA</junit4-runner.version>
<jackson.version>2.13.1</jackson.version>
<jasypt-spring-boot-starter.version>3.0.5</jasypt-spring-boot-starter.version>
<javafx-controls.version>19</javafx-controls.version>
<javax.mail.version>1.6.2</javax.mail.version>
<javafx-fxml.version>19</javafx-fxml.version>
<jfoenix.version>8.0.9</jfoenix.version>
<bootstrapfx-core.version>0.2.4</bootstrapfx-core.version>
<cache2k.version>2.6.1.Final</cache2k.version>
<ehcache.version>2.10.9.2</ehcache.version>
<javassist.version>3.12.1.GA</javassist.version>
<jersey.version>1.19.4</jersey.version>
<joda-time.version>2.10.5</joda-time.version>
<jsoup.version>1.14.2</jsoup.version>
<jsp-api.version>2.2.1-b03</jsp-api.version>
<jsoup-xpath.version>2.5.1</jsoup-xpath.version>
<jstl.version>1.2</jstl.version>
<jxls.version>2.11.0</jxls.version>
<knife4j-spring-boot-starter.version>3.0.3</knife4j-spring-boot-starter.version>
<knife4j-aggregation-spring-boot-starter.version>2.0.9</knife4j-aggregation-spring-boot-starter.version>
<log4j.version>1.2.17</log4j.version>
<log4j2.version>2.15.0</log4j2.version> <!--漏洞修复-->
<mysql-connector-java.version>8.0.26</mysql-connector-java.version>
<mybatis.version>3.5.9</mybatis.version>
<mybatis-spring.version>2.0.7</mybatis-spring.version>
<mybatis-spring-boot-starter.version>2.1.4</mybatis-spring-boot-starter.version>
<mybatis-plus-boot-starter.version>3.4.3.1</mybatis-plus-boot-starter.version>
<mybatis.paginator.version>1.2.17</mybatis.paginator.version>
<mapper-spring-boot-starter.version>2.0.4</mapper-spring-boot-starter.version>
<mapstruct.version>1.5.2.Final</mapstruct.version>
<mapstruct-processor.version>1.3.1.Final</mapstruct-processor.version>
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
<nacos.version>2.0.3.1</nacos.version>
<!-- <netty-all.version>4.1.75.Final</netty-all.version> -->
<netty-all.version>4.1.66.Final</netty-all.version>
<netty-resolver-dns-native-macos.version>4.1.75.Final</netty-resolver-dns-native-macos.version>
<org-dom4j.version>2.1.3</org-dom4j.version>
<oracle.version>11.2.0.3</oracle.version>
<zxing.version>3.1.0</zxing.version>
<opencv.version>4.5.5-1.5.7</opencv.version>
<openblas.version>0.3.19-1.5.7</openblas.version>
<javacpp.version>1.5.7</javacpp.version>
<pinyin4j.version>2.5.0</pinyin4j.version>
<pagehelper.version>5.3.0</pagehelper.version>
<pagehelper-spring-boot-starter.version>1.3.0</pagehelper-spring-boot-starter.version>
<p6spy.version>3.9.1</p6spy.version>
<poi.version>4.1.2</poi.version>
<querydsl.version>4.2.1</querydsl.version>
<quartz.version>2.3.2</quartz.version>
<qiniu-java-sdk.version>7.9.3</qiniu-java-sdk.version>
<richtextfx.version>0.9.2</richtextfx.version>
<rocketmq-spring-boot-starter.version>2.2.1</rocketmq-spring-boot-starter.version>
<swagger-annotations.version>1.5.22</swagger-annotations.version>
<springfox-swagger2.version>3.0.0</springfox-swagger2.version>
<sqlserver.version>4.0</sqlserver.version>
<shiro-redis.version>3.3.1</shiro-redis.version>
<sa-token-spring-boot-starter.version>1.38.0</sa-token-spring-boot-starter.version>
<shiro-spring.version>1.8.0</shiro-spring.version>
<shiro-spring-boot-starter.version>1.8.0</shiro-spring-boot-starter.version>
<spring-boot-starter-security.version>2.5.4</spring-boot-starter-security.version>
<springboot-javafx-support.version>2.1.6</springboot-javafx-support.version>
<spring-boot-admin.version>2.5.1</spring-boot-admin.version>
<spring-boot-starter-velocity.version>1.4.7.RELEASE</spring-boot-starter-velocity.version>
<seata-spring-boot-starter.version>1.5.2</seata-spring-boot-starter.version>
<spring-boot-starter-captcha.version>1.3.0</spring-boot-starter-captcha.version>
<spring-cloud-starter-zipkin.version>2.2.8.RELEASE</spring-cloud-starter-zipkin.version>
<sharding-jdbc-spring-boot-starter.version>3.1.0</sharding-jdbc-spring-boot-starter.version>
<sharding-jdbc-spring-namespace.version>3.1.0</sharding-jdbc-spring-namespace.version>
<sharding-sphere.version>4.1.0</sharding-sphere.version>
<servlet-api.version>2.5</servlet-api.version>
<seata-all.version>1.5.2</seata-all.version>
<thumbnailator.version>0.4.8</thumbnailator.version>
<tk.mybatis.version>4.1.5</tk.mybatis.version>
<tools.version>1.8</tools.version>
<velocity.version>1.7</velocity.version>
<xxl-job-core.version>2.3.0</xxl-job-core.version>
<xml-apis.version>1.4.01</xml-apis.version>
<zookeeper.version>3.7.0</zookeeper.version>
<zkclient.version>0.1</zkclient.version>
<zipkin.version>2.6.1</zipkin.version>
<javacpp.platform.android-arm>android-arm</javacpp.platform.android-arm>
<javacpp.platform.android-arm64>android-arm64</javacpp.platform.android-arm64>
<javacpp.platform.android-x86>android-x86</javacpp.platform.android-x86>
<javacpp.platform.android-x86_64>android-x86_64</javacpp.platform.android-x86_64>
<javacpp.platform.ios-arm>ios-arm</javacpp.platform.ios-arm>
<javacpp.platform.ios-arm64>ios-arm64</javacpp.platform.ios-arm64>
<javacpp.platform.ios-x86>ios-x86</javacpp.platform.ios-x86>
<javacpp.platform.ios-x86_64>ios-x86_64</javacpp.platform.ios-x86_64>
<javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf>
<javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
<javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le>
<javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86>
<javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
<javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
<javacpp.platform.macosx-arm64>macosx-arm64</javacpp.platform.macosx-arm64>
<javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86>
<javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
</properties>
<!-- 依赖关系管理,对于其定义的版本,子模块pom可以继承也可以自定义 -->
<dependencyManagement>
<dependencies>
<!-- springBoot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springCloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springCloudAlibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud-kubernetes-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-dependencies</artifactId>
<version>${spring-cloud-kubernetes-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--hutool bom 工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-bom</artifactId>
<version>${hutool.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springBoot -->
<dependency>
<groupId>com.cmmplb</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springCloud -->
<dependency>
<groupId>com.cmmplb</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- ====================其他依赖==================== -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit4-runner</artifactId>
<version>${junit4-runner.version}</version>
</dependency>
<!-- tools.jar -->
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>${tools.version}</version>
</dependency>
<!-- commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
</dependency>
<!-- commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<!-- commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<!-- commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
</dependency>
<!-- commons-fileupload上传文件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<!-- commons -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<!-- commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<!-- commons-dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>${commons-dbutils.version}</version>
</dependency>
<!-- commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>${commons-pool2.version}</version>
</dependency>
<!-- 跨服务器上传文件jersey-core -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- lang3工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<!-- servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- jstl-impl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt-spring-boot-starter.version}</version>
</dependency>
<!-- dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${dom4j.version}</version>
</dependency>
<!-- xml-apis -->
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>${xml-apis.version}</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<!-- hutool工具 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<!-- dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${org-dom4j.version}</version>
</dependency>
<!-- 二维码解析 -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>${javacpp.version}</version>
<!--<classifier>macosx-arm64</classifier>-->
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>${javacpp.version}</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>openblas</artifactId>
<version>${openblas.version}</version>
<!--<classifier>windows-x86_64</classifier>-->
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>${opencv.version}</version>
<!--<classifier>windows-x86_64</classifier>-->
</dependency>
<!-- zxing二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>${zxing.version}</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>${zxing.version}</version>
</dependency>
<!-- xstream -->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
</dependency>
<!-- 日期处理-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
<!-- jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
<type>bundle</type>
</dependency>
<!-- jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
<type>bundle</type>
</dependency>
<!-- jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
<type>bundle</type>
</dependency>
<!-- javax.mail -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>${javax.mail.version}</version>
</dependency>
<!-- gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- annotations -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
<version>${annotations.version}</version>
</dependency>
<!-- 汉字转拼音 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>${pinyin4j.version}</version>
</dependency>
<!-- 处理Java字节码类库 -->
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<!-- swagger-annotations -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-annotations.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
<!-- knife4j接口文档 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j-spring-boot-starter.version}</version>
</dependency>
<!-- knife4j-aggregation集成 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
<version>${knife4j-aggregation-spring-boot-starter.version}</version>
</dependency>
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<!-- JsoupXpath -->
<dependency>
<groupId>cn.wanghaomiao</groupId>
<artifactId>JsoupXpath</artifactId>
<version>${jsoup-xpath.version}</version>
</dependency>
<!-- canal.client -->
<dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.client</artifactId>
<version>${canal.client.version}</version>
</dependency>
<!-- velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>${velocity.version}</version>
</dependency>
<!--
SpringBoot集成velocity模板引擎的注意事项,
springboot版本要低于1.5以下,velocity模板引擎被是springboot2.0已经遗弃
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-velocity</artifactId>
<version>${spring-boot-starter-velocity.version}</version>
</dependency>
<!-- netty -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty-all.version}</version>
</dependency>
<!-- netty-resolver-dns-native-macos -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns-native-macos</artifactId>
<!-- <scope>runtime</scope> -->
<!-- windows-x86_64 -->
<!-- osx-x86_64 -->
<classifier>osx-aarch_64</classifier>
<version>${netty-resolver-dns-native-macos.version}</version>
</dependency>
<!-- guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- mybatis-paginator -->
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
<version>${mybatis.paginator.version}</version>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- mybatis分页插件,pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper-spring-boot-starter.version}</version>
</dependency>
<!-- tk.mybatis -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${tk.mybatis.version}</version>
</dependency>
<!-- mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- 动态数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic-datasource-spring-boot-starter.version}</version>
</dependency>
<!-- SQL分析打印插件-(mybatis-plus-3.2.0以上版本移除了PerformanceInterceptor插件,只适用于开发环境,不建议生产环境使用) -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>${p6spy.version}</version>
</dependency>
<!-- oracle驱动-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
<!-- sqlserver驱动 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>${sqlserver.version}</version>
</dependency>
<!-- idea 插件:MapStruct Support -->
<!-- 单独引用的时候,lombok需要在mapstruct之上,否则无法设置set -->
<!-- mapstruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct-processor.version}</version>
</dependency>
<!-- 若我们使用的JDK版本高于1.8,当我们在pom里面导入依赖时候,建议使用坐标是:org.mapstruct:mapstruct-jdk8 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<!--
rocketmq-注意对应mq对应springboot版本,这里的mq版本是4.9.1,
下载地址:https://rocketmq.apache.org/release_notes/release-notes-4.9.1/
-->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq-spring-boot-starter.version}</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- jxls-excel导入导出 -->
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>${jxls.version}</version>
</dependency>
<!-- jxls-poi -->
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>${jxls.version}</version>
</dependency>
<!-- alibaba.easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<!-- itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>${itextpdf.version}</version>
</dependency>
<!-- itext-xtra -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-xtra</artifactId>
<version>${itext-xtra.version}</version>
</dependency>
<!-- itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>${itext-asian.version}</version>
</dependency>
<!-- word -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>${easypoi.version}</version>
</dependency>
<!-- easypoi-web -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>${easypoi.version}</version>
</dependency>
<!-- easypoi-annotation -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>${easypoi.version}</version>
</dependency>
<!-- documents4j-local -->
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>${documents4j.version}</version>
</dependency>
<!-- documents4j-transformer-msoffice-word -->
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>${documents4j.version}</version>
</dependency>
<!-- security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring-boot-starter-security.version}</version>
</dependency>
<!-- activiti -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-json-converter</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-transcoder</artifactId>
<version>${batik-transcoder.version}</version>
</dependency>
<dependency>
<groupId>batik</groupId>
<artifactId>batik-transcoder</artifactId>
<version>${batik.batik-transcoder.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-codec</artifactId>
<version>${batik-codec.version}</version>
</dependency>
<!-- flyway -->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>${flyway-maven-plugin.version}</version>
</dependency>
<!-- quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<!-- JAVAFX 视图相关工具 -->
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>${jfoenix.version}</version>
</dependency>
<!-- 图标编码:https://kordamp.org/ikonli/cheat-sheet-fontawesome.html -->
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-javafx</artifactId>
<version>${ikonli-javafx.version}</version>
</dependency>
<!-- fontawesome图标 java8 不支持 ikonli-fontawesome5-pack -->
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<version>${ikonli-fontawesome5-pack.version}</version>
</dependency>
<!-- datafx -->
<dependency>
<groupId>io.datafx</groupId>
<artifactId>datafx</artifactId>
<version>${datafx.version}</version>
</dependency>
<dependency>
<groupId>io.datafx</groupId>
<artifactId>flow</artifactId>
<version>${flow.version}</version>
</dependency>
<!-- h2database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
<dependency>
<groupId>org.fxmisc.richtext</groupId>
<artifactId>richtextfx</artifactId>
<version>${richtextfx.version}</version>
</dependency>
<!-- quartz-jobs -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxl-job-core.version}</version>
</dependency>
<!-- javafx核心包 -->
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-support</artifactId>
<version>${springboot-javafx-support.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx-controls.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx-fxml.version}</version>
</dependency>
<!-- 第三库样式依赖,也可以直接把bootstrapfx.css放到resources目录 -->
<dependency>
<groupId>org.kordamp.bootstrapfx</groupId>
<artifactId>bootstrapfx-core</artifactId>
<version>${bootstrapfx-core.version}</version>
</dependency>
<!-- cache2k缓存工具 -->
<dependency>
<groupId>org.cache2k</groupId>
<artifactId>cache2k-api</artifactId>
<version>${cache2k.version}</version>
</dependency>
<dependency>
<groupId>org.cache2k</groupId>
<artifactId>cache2k-core</artifactId>
<version>${cache2k.version}</version>
</dependency>
<dependency>
<groupId>org.cache2k</groupId>
<artifactId>cache2k-spring</artifactId>
<version>${cache2k.version}</version>
</dependency>
<!-- ehcache缓存 -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
</dependency>
<!-- 验证码工具 -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>${easy-captcha.version}</version>
</dependency>
<!--图片压缩-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>${thumbnailator.version}</version>
</dependency>
<!-- 滑块验证码 -->
<dependency>
<groupId>com.anji-plus</groupId>
<artifactId>spring-boot-starter-captcha</artifactId>
<version>${spring-boot-starter-captcha.version}</version>
</dependency>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!-- zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<!-- zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
</dependency>
<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>${sa-token-spring-boot-starter.version}</version>
</dependency>
<!-- shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro-spring.version}</version>
</dependency>
<!-- shiro-redis -->
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>${shiro-redis.version}</version>
</dependency>
<!-- shiro-spring-boot -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>${shiro-spring-boot-starter.version}</version>
</dependency>
<!-- 整合上面两个-版本没更新 -->
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>shiro-redis-spring-boot-starter</artifactId>
<version>${shiro-redis.version}</version>
</dependency>
<!-- admin-server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<!-- admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<!-- zipkin-server -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>${zipkin.version}</version>
</dependency>
<!-- zipkin-autoconfigure-ui -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>${zipkin.version}</version>
</dependency>
<!-- zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>${spring-cloud-starter-zipkin.version}</version>
</dependency>
<!-- apollo 携程apollo配置中心框架 -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>${apollo.version}</version>
</dependency>
<!-- seata-和spring-cloud-alibaba-dependencies父工程版本冲突导致间接依赖版本不一致 -->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>${seata-spring-boot-starter.version}</version>
</dependency>
<!-- caffeine -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>${caffeine.version}</version>
</dependency>
<!--sharding-jdbc-->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding-jdbc-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-namespace</artifactId>
<version>${sharding-jdbc-spring-namespace.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${sharding-sphere.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding-sphere.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-xa-core</artifactId>
<version>${sharding-sphere.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-base-seata-at</artifactId>
<version>${sharding-sphere.version}</version>
</dependency>
<!-- sdk -->
<!-- qiniu-java-sdk -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu-java-sdk.version}</version>
</dependency>
<!-- aliyun-java-sdk-core,阿里云 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>${aliyun-java-sdk-core.version}</version>
</dependency>
<!-- aliyun-java-sdk-dysmsapi -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>${aliyun-java-sdk-dysmsapi.version}</version>
</dependency>
<!-- GeoLite2依赖 -->
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>${geoip2.version}</version>
</dependency>
<!-- webp图片转换 -->
<dependency>
<groupId>org.sejda.imageio</groupId>
<artifactId>webp-imageio</artifactId>
<version>${webp-imageio.version}</version>
</dependency>
<!-- 图片裁剪 -->
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
<version>${jai-codec.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 编译及打包项目管理 -->
<build>
<!-- 插件管理 -->
<finalName>${project.name}</finalName>
<directory>${project.basedir}/target</directory>
<plugins>
<!-- 发布到中央仓库的代码还有一些其他的要求,除了提供普通的jar包之外,还需要提供maven-source-plugin以及maven-javadoc-plugin的jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<!-- 中央仓库新发布流程提供了一个新的maven插件,不需要再配置distributionManagement -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- spring-boot-maven打成直接运行的Jar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot-dependencies.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<!--配置入口-->
<mainClass>${main-class}</mainClass>
<!--配置打包存放路径-->
<outputDirectory>${spring.boot.outputDirectory}</outputDirectory>
<image>
<!--镜像名称-->
<name>${docker.image.name}</name>
<!-- 生成镜像后是否推送到镜像仓库 -->
<publish>false</publish>
<!-- 拉取镜像的策略,可选的值:ALWAYS, NEVER, IF_NOT_PRESENT -->
<pullPolicy>IF_NOT_PRESENT</pullPolicy>
</image>
<!-- 配置构建宿主机信息,本机不用配置 -->
<!-- 支持将应用程序打包成Docker镜像 -->
<docker>
<!--
工程中需要从github下载文件,会超时,不推荐使用
https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jre8u312+7-linux-amd64.tar.gz
远程docker daemon的连接地址和端口
docker环境远程管理地址,非镜像仓库地址
配置docker远程访问
在/usr/lib/systemd/system/docker.service文件ExecStart=/usr/bin/dockerd后面添加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
windows
由于构建需要docker环境,如果本地没有docker环境的话,可以用服务器上的,添加环境变量配置重启电脑
DOCKER_HOST tcp://192.168.68.129:2375
如果是mac m1
- -restart=always 这里是因为注释会报错,要去掉中间的空格
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2375:2375 \
bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
暴露端口访问
export DOCKER_HOST=tcp://localhost:2375
或者使用brew运行
# 安装socat
brew install socat
# 将 unix socket 代理到 tcp 端口
nohup socat TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock &> /dev/null &
export DOCKER_HOST=tcp://127.0.0.1:2375 # 设置环境变量
-->
<host>http://localhost:2375</host>
<!-- 如果使用https协议需要设置为true -->
<tlsVerify>false</tlsVerify>
<!-- Docker推送镜像仓库配置 -->
<publishRegistry>
<!--推送镜像仓库用户名-->
<username>${docker.account</username>
<!--推送镜像仓库密码-->
<password>${docker.password}</password>
<!-- 推送镜像仓库地址 -->
<url>${docker.repostory}</url>
</publishRegistry>
</docker>
</configuration>
</plugin>
<!--
maven-clean,清理构建生成的目录和文件
默认情况下会删除配置项所指定的目录
project.build.directory
project.build.outputDirectory
project.build.testOutputDirectory
project.reporting.outputDirectory
通过配置filesets标签,可以删除默认之外的其他目录和文件。
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
<configuration>
<!-- 禁止此插件的执行,跳过测试。默认false -->
<skip>${plugin.skip}</skip>
<!-- clean执行出错后还能继续执行其他命令,配置忽略错误,默认false -->
<failOnError>false</failOnError>
<!--
设置插件从项目的默认输出目录中删除文件时是否删除符号链接目录下面的文件。
无论是否存在符号链接,如果不删除则都需要更多的IO操作和内存。
所以在具有很多输出目录,可以将此参数设置为true以提高恨性能。默认false-->
<followSymLinks>false</followSymLinks>
<!-- 设置插件是否以详细模式运行,查看都删除了哪些目录和文件 -->
<verbose>false</verbose>
<!--当配置true时,只清理filesets里的文件,构建目录中得文件不被清理.默认flase.-->
<excludeDefaultDirectories>false</excludeDefaultDirectories>
<!-- 配置构建时需要清理构建目录以外的文件 -->
<filesets>
<fileset>
<!--要清理的目录位置,删除目录位置中符合条件的,但是不会删除目录位置-->
<directory>${basedir}/logs</directory>
<!--是否跟随符号链接 (symbolic links)-->
<followSymlinks>false</followSymlinks>
<!--默认有些文件是不会被清理的,比如.svn文件,如果设置成false,则全部按照自定义的来处理-->
<useDefaultExcludes>true</useDefaultExcludes>
<!--对这些文件进行清理-->
<includes>
<include>**/*</include>
</includes>
<!--对这些文件不清理-->
<excludes>
<exclude>*.gz</exclude>
</excludes>
</fileset>
</filesets>
</configuration>
<!--<executions>
<execution>
<id>maven-clean</id>
<!– [
validate, initialize, generate-sources, process-sources, generate-resources,
process-resources, compile, process-classes, generate-test-sources,
process-test-sources, generate-test-resources, process-test-resources,
test-compile, process-test-classes, test, prepare-package, package,
pre-integration-test, integration-test, post-integration-test,
verify, install, deploy
] –>
<!– 指定作用周期–>
<phase>initialize</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>-->
</plugin>
<!-- maven-resources-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>
<!-- 过滤后缀证文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>cer</nonFilteredFileExtension>
<nonFilteredFileExtension>pem</nonFilteredFileExtension>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>jkx</nonFilteredFileExtension>
<nonFilteredFileExtension>doc</nonFilteredFileExtension>
<nonFilteredFileExtension>docx</nonFilteredFileExtension>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>zip</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
<!--<executions>
<!– 资源拷贝 –>
<execution>
<id>copy-resources</id>
<!– [
validate, initialize, generate-sources, process-sources, generate-resources,
process-resources, compile, process-classes, generate-test-sources,
process-test-sources, generate-test-resources, process-test-resources,
test-compile, process-test-classes, test, prepare-package, package,
pre-integration-test, integration-test, post-integration-test,
verify, install, deploy
] –>
<!– 指定作用周期–>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!– 拷贝输出目录 –>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<resources>
<resource>
<directory>src/non-packaged-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>-->
</plugin>
<!-- maven-compiler-plugin编译Java文件时使用什么版本的jre -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<!-- 源代码使用的JDK版本 -->
<source>${maven.compiler.source}</source>
<!-- 需要生成的目标class文件的编译版本 -->
<target>${maven.compiler.target}</target>
<!-- 字符集编码 -->
<encoding>${project.build.sourceEncoding}</encoding>
<!-- 设置插件是否以详细模式运行 -->
<verbose>false</verbose>
<showWarnings>true</showWarnings>
<!-- 禁止此插件的执行,跳过测试。默认false -->
<skip>${plugin.skip}</skip>
<!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->
<compilerArgument>-Xlint:unchecked</compilerArgument>
<annotationProcessorPaths>
<!-- 引入 mapstruct-processor -->
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<!-- 引入 lombok-processor -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<!-- lombok-mapstruct-binding -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<!-- 如果是0.1.0可能出现实现类只创建对象,没有set赋值 -->
<version>${lombok-mapstruct-binding.version}</version>
</path>
<!-- 编译生成spring-configuration-metadata.json -->
<path>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot-dependencies.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!--
maven-surefire,单元测试插件,生成测试报告:maven-surefire-plugin 会在构建过程中生成测试报告,
这些报告通常位于项目的 target/surefire-reports 目录下
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<!-- 执行构建过程中的编码格式 -->
<argLine>${maven-surefire-argLine.encoding}</argLine>
<!-- 是否跳过测试 -->
<skipTests>false</skipTests>
</configuration>
</plugin>
<!-- maven-install,将获取的jar包安装到本地仓库 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
<configuration>
<!-- 禁止此插件的执行,跳过测试。默认false -->
<skip>${plugin.skip}</skip>
</configuration>
<executions>
<!-- 执行安装ojdbc -->
<!--<execution>
<id>install-external</id>
<phase>clean</phase>
<configuration>
<file>${project.basedir}/src/lib/ojdbc14.jar</file>
<groupId>ojdbc14</groupId>
<artifactId>ojdbc14</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>-->
</executions>
</plugin>
<!-- maven-deploy,发布到远程仓库 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
<configuration>
<!-- 禁止此插件的执行,跳过测试。默认false -->
<skip>${plugin.skip}</skip>
</configuration>
</plugin>
<!-- 将密钥上传到服务器,使用插件对生成的jar包进行签名 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 中央仓库新发布流程提供了一个新的maven插件 -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<!-- 对应推送仓库id -->
<publishingServerId>sonatype</publishingServerId>
<deploymentName>${project.groupId}:${project.artifactId}:${project.version}</deploymentName>
</configuration>
</plugin>
<!--
jacoco-maven
https://www.cnblogs.com/fnlingnzb-learner/p/10637802.html
Apache Maven方式 =》 http://www.eclemma.org/jacoco/trunk/doc/maven.html
jacoco-maven-plugin单元测试代码覆盖率报告,支持多种覆盖率的统计,包括:
行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。
类覆盖率:度量计算class类文件是否被执行。
分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。
方法覆盖率:度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。
指令覆盖:计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。
圈复杂度:在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。
-->
<plugin>
<!--
命令方式:
执行mvn命令时,加上“org.jacoco:jacoco-maven-plugin:prepare-agent
mvn clean test org.jacoco:jacoco-maven-plugin:${jacoco-maven-plugin.version}:prepare-agent install -Dmaven.test.failure.ignore=true
-Dmaven.test.failure.ignore=true建议加上,否则如果单元测试失败,就会直接中断,不会产生.exec文件
pom方式:
添加依赖
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</dependency>
mvn test生成index.html(即覆盖率报告)位置在
target/site/jacoco/index.html
-->
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!--这个report:对代码进行检测,然后生成index.html在 target/site/index.html中可以查看检测的详细结果-->
<!--<execution>
<id>post-unit-test</id>
<phase>test</phase> <!–<phase>package</phase>–>
<goals>
<goal>report</goal>
</goals>
</execution>-->
</executions>
</plugin>
<!--git插件-->
<!--<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
<executions>
<execution>
<id>get-the-git-infos</id>
<!– [
validate, initialize, generate-sources, process-sources, generate-resources,
process-resources, compile, process-classes, generate-test-sources,
process-test-sources, generate-test-resources, process-test-resources,
test-compile, process-test-classes, test, prepare-package, package,
pre-integration-test, integration-test, post-integration-test,
verify, install, deploy
] –>
<!– 绑定阶段initialize –>
<phase>initialize</phase>
<goals>
<!– 目标:revision –>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<!– 检查的仓库根目录,${project.basedir}:项目根目录,即包含pom.xml文件的目录 –>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<!– false:扫描路径时不打印更多信息,默认值false,可以不配置 –>
<verbose>false</verbose>
<!– 定义插件中所有时间格式,默认值:yyyy-MM-dd’T’HH:mm:ssZ –>
<dateFormat>yyyy-MM-dd HH:mm:ss</dateFormat>
<!– git属性文件中各属性前缀,默认值git,可以不配置 –>
<prefix>git</prefix>
<!– 生成git属性文件,默认false:不生成 –>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<!– 生成git属性文件路径及文件名,默认${project.build.outputDirectory}/git.properties –>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties
</generateGitPropertiesFilename>
<!–".git"文件夹未找到时,构建是否失败;若设置true,则构建失败;若设置false,则跳过执行该目标;默认值:true;–>
<failOnNoGitDirectory>true</failOnNoGitDirectory>
<!– 生成git属性文件格式,默认值properties,在编译后的classes目录下可以看到git.properties文件 –>
<format>json</format>
<!– 配置git-describe命令,git描述配置,由JGit提供实现; –>
<gitDescribe>
<!– 是否生成描述属性 –>
<skip>false</skip>
<!– 提交操作未发现tag时,仅打印提交操作ID –>
<always>false</always>
<!–
提交操作ID显式字符长度,最大值为:40;默认值:7;
0代表特殊意义;打印的object id的长度;
–>
<abbrev>7</abbrev>
<!–构建触发时,代码有修改时(即"dirty state"),添加指定后缀;默认值:"";–>
<dirty>-dirty</dirty>
<!–
always print using the "tag-commits_from_tag-g_commit_id-maybe_dirty" format, even if "on" a tag.
The distance will always be 0 if you're "on" the tag.
–>
<forceLongFormat>false</forceLongFormat>
</gitDescribe>
</configuration>
</plugin>-->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<version>${fabric8-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>resource</goal>
<goal>build</goal>
</goals>
</execution>
</executions>
<!-- 自定义配置 -->
<configuration>
<enricher>
<config>
<!-- k8s service 配置 将service开放类型改成NodePort -->
<fmp-service>
<type>NodePort</type>
</fmp-service>
</config>
</enricher>
<images>
<image>
<!-- 自定义镜像名 -->
<name>${docker.image.name}</name>
<build>
<!-- 自定义基础镜像-->
<from>jdk8</from>
<!-- 自定义文件发布 比如将项目 a-jarwithdepences.jar发布到镜像目录/deployment / -->
<assembly>
<descriptor>assembly.xml</descriptor>
<targetDir>/deployments</targetDir>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
<!-- docker-maven-plugin -->
<!--
io.fabric8.docker-maven-plugin 比较灵活(可dockerfile也可pom.xml配置)、支持直接操作容器,且仍在持续更新,推荐使用。
com.spotify.dockerfile-maven-plugin 支持dockerfile 近两年无更新,不支持操作容器,可以在dockerfile中使用pom.xml中指定的变量
org.springframework.boot.spring-boot-maven-plugin springboot官方插件,无需额外安装,但需要从github下载相关层文件,失败率高,需要多次尝试。
-->
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker-maven-plugin-io.fabric8.version}</version>
<configuration>
<!-- Docker 推送镜像仓库地址-->
<pushRegistry>${docker.repostory}</pushRegistry>
<!--
docker主机地址
windows
由于构建需要docker环境,如果本地没有docker环境的话,可以用服务器上的,添加环境变量配置重启电脑
DOCKER_HOST tcp://192.168.68.129:2375
如果是mac m1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2375:2375 \
bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
暴露端口访问
export DOCKER_HOST=tcp://localhost:2375
或者使用brew运行
# 安装socat
brew install socat
# 将 unix socket 代理到 tcp 端口
nohup socat TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock &> /dev/null &
export DOCKER_HOST=tcp://127.0.0.1:2375 # 设置环境变量
-->
<dockerHost>http://localhost:2375</dockerHost>
<!--
私服地址,全局配置,如果需要推送到不同地址,可在image标签下配置
一定不要加https,否则image.name的配置会找不到这个地址
-->
<!--<registry>http://ip:port</registry>-->
<authConfig>
<username>${docker.account}</username>
<password>${docker.password}</password>
</authConfig>
<!-- 镜像相关配置,支持多镜像 -->
<images>
<!-- 单个镜像配置 -->
<image>
<!--
推送到私有镜像仓库,镜像名需要添加仓库地址
注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功
镜像名称,格式为:命名空间/仓库名称:镜像版本号
如果registry地址以https开头,则格式为:私服地址/命名空间/仓库名称:镜像版本号-->
-->
<!-- 阿里云 -->
<!-- 镜像命名 阿里云镜像仓库地址/namespace/name:version -->
<name>${docker.image.name}</name>
<!-- dockerhub 账号/name:version -->
<!--<name>1045599379/${project.name}:${project.version}</name>-->
<!-- 私服地址,用于推送,拉取镜像 -->
<!-- <registry>registry.cn-shanghai.aliyuncs.com</registry>-->
<!--定义镜像构建行为-->
<build>
<!-- dockerfile地址,此插件也支持docker-compose配置 -->
<dockerFileDir>${project.basedir}/docker/</dockerFileDir>
<!--将jar包拷贝到docker build目录中,在target...docker目录,和dockerfile同级到maven-->
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<!--latest标签-->
<tags>
<!--<tag>latest</tag>-->
<tag>${project.version}</tag>
</tags>
</build>
<!--定义容器启动行为-->
<run>
<!--设置容器名,可采用通配符-->
<containerNamePattern>${project.artifactId}</containerNamePattern>
<!--设置端口映射-->
<!--<ports>
<port>80:80</port>
</ports>-->
<!--设置容器间连接-->
<!--<links>
<link>mysql:db</link>
</links>-->
<!--设置容器和宿主机目录挂载-->
<!--<volumes>
<bind>
<volume>/etc/localtime:/etc/localtime</volume>
</bind>
</volumes>-->
<!--<wait>
<tcp>
<host>127.0.0.1</host>
<ports>
<port>9324</port>
</ports>
</tcp>
</wait>-->
</run>
</image>
<!-- 生成多个image同理-->
<!--<image>
...
</image>-->
</images>
</configuration>
<executions>
<!-- 打包的时候同时生成镜像文件 -->
<!--<execution>
<!– 绑定mvn package阶段,当执行mvn package时 就会执行build-image–>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>-->
<!--<execution>
<id>docker-exec</id>
<!– 绑定mvn install阶段,当执行mvn install时 就会执行docker build 和docker push–>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>-->
</executions>
</plugin>
<!--
docker-maven
官网:https://github.com/spotify/docker-maven-plugin
使用教程:https://www.cnblogs.com/jpfss/p/10945324.html
配置docker远程访问
在/usr/lib/systemd/system/docker.service文件ExecStart=/usr/bin/dockerd后面添加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
由于构建需要docker环境,如果本地没有docker环境的话,可以用服务器上的,添加环境变量配置重启电脑
DOCKER_HOST tcp://192.168.68.129:2375
阿里云:docker login -/-username=夏目贵志co registry.cn-shanghai.aliyuncs.com
docker-hub:docker login docker.io
windows
由于构建需要docker环境,如果本地没有docker环境的话,可以用服务器上的,添加环境变量配置重启电脑
DOCKER_HOST tcp://192.168.68.129:2375
如果是mac m1
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2375:2375 \
bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
暴露端口访问
export DOCKER_HOST=tcp://localhost:2375
或者使用brew运行
# 安装socat
brew install socat
# 将 unix socket 代理到 tcp 端口
nohup socat TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock &> /dev/null &
export DOCKER_HOST=tcp://127.0.0.1:2375 # 设置环境变量
无法访问ip:2375,添加防火墙端口,即使防火墙没开,也打开之后配置端口号,去掉\
查看防火墙状态:systemctl status firewalld
启动防火墙 没有提示:systemctl start firewalld
添加2375端口:firewall-cmd -\-permanent -\-zone=public -\-add-port=2375/tcp
防火墙重启:firewall-cmd -\-reload
查看开放的端口:firewall-cmd -\-permanent -\-zone=public -\-list-ports
关闭防火墙:systemctl stop firewalld
docker tag [ImageId] 1045599379/cmmplb:spring-boot-start-1.0.0
手动到linux上推镜像:docker push 1045599379/cmmplb:spring-boot-start-1.0.0
mvn clean package docker:build -s D:\ProgramFileDev\Maven\apache-maven-3.6.3\conf\settings我的.xml -X
mvn clean package docker:build -DpushImage -s D:\ProgramFileDev\Maven\apache-maven-3.6.3\conf\settings我的.xml -X
=======命令========
mvn clean package docker:build 只执行 build 操作
mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像
mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像
===============
-X 打开调试模式
-s 指定maven配置文件
-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker-maven-plugin-com.spotify.version}</version>
<configuration>
<!--
指定镜像名称:
阿里仓库: 阿里云地址/namespace/:tagname
docker-hub仓库: account/repostory:tagname
注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功
详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed
-->
<!-- 镜像名称 -->
<imageName>${docker.image.name}</imageName>
<!-- 生成指定标签 -->
<!--<imageTags>
<imageTag>${project.name}-${project.version}</imageTag>
</imageTags>-->
<!--
docker:tag
指定需要打标签镜像名称
-->
<image>${docker.image.name}</image>
<!-- docker:tag时更改的名称 -->
<newName>${docker.image.name}</newName>
<!-- 推送镜像到仓库 -->
<pushImage>true</pushImage>
<!-- 推送tag -->
<pushImageTag>false</pushImageTag>
<!-- 基础镜像jdk 1.8,相关命令参数,写到docker-file里面了-->
<!--<baseImage>java</baseImage>-->
<!--<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>-->
<!--
制作者提供本人信息,[WARNING] Ignoring maintainer because dockerDirectory is set,
设置了dockerDirectory就会忽略maintainer
-->
<!--<maintainer>momo</maintainer>-->
<!--切换到/root目录 -->
<!--<workdir>/root</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>-->
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/docker/</dockerDirectory>
<!-- 指定远程 docker api地址 -->
<!--<dockerHost>tcp://192/168/68/129:2375</dockerHost>-->
<!--<dockerHost>http://0.0.0.0:2375</dockerHost>-->
<!-- 这里是复制jar包到docker容器指定目录配置-->
<resources>
<resource>
<targetPath>/</targetPath>
<!-- 用于指定需要复制的根目录,${project.build.directory}引用上面申明的target目录 -->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包 后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--
serverId可以随便命名,不过需要与的server下id保持一致。Maven中的Setting.xml配置,作为仓库的权限认证。
<servers>
<server>
<id>docker-hub</id>
<username>***</username>
<password>***</password>
<configuration>
<email>***@***.com</email>
</configuration>
</server>
</servers>
-->
<!-- 阿里云 -->
<!-- 阿里云的docker仓库地址。阿里云的容器镜像服务地址:https://cr.console.aliyun.com/ ,-->
<!--<serverId>docker-aliyun</serverId>
<registryUrl>${docker.aliyun.repostory}</registryUrl>-->
<!-- dockerhub,为了docker push到DockerHub使用 -->
<serverId>${docker.serverId}</serverId>
<registryUrl>${docker.repostory}</registryUrl>
</configuration>
<executions>
<!--
想跳过docker某个过程时:
-DskipDockerBuild 跳过 build 镜像
-DskipDockerTag 跳过 tag 镜像
-DskipDockerPush 跳过 push 镜像
-DskipDocker 跳过整个阶段
例如:执行package跳过tag过程,mvn package -DskipDockerTag
-->
<!--<execution>
<!– 执行package时使用build操作 –>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>-->
<!-- 执行package时使用tag操作 -->
<!--<execution>
<id>tag-image</id>
<phase>package</phase>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<image>
${docker.hub.account}/${docker.hub.repostory}:${project.name}-${project.version}
</image>
<newName>
docker.io/${docker.hub.account}/${docker.hub.repostory}:${project.name}-${project.version}
</newName>
</configuration>
</execution>-->
<!-- 执行mvn deploy时,执行build、tag、push操作 -->
<!--<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<imageName>
docker.io/${docker.hub.account}/${docker.hub.repostory}:${project.name}-${project.version}
</imageName>
</configuration>
</execution>-->
</executions>
</plugin>
<!--<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
<configuration>
<resources>
<labels>
<all>
<testProject>spring-boot-with-yaml-label-for-all</testProject>
</all>
</labels>
</resources>
<generator>
<config>
<spring-boot>
<color>always</color>
</spring-boot>
</config>
</generator>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>resource</goal>
<goal>build</goal>
<goal>helm</goal>
</goals>
</execution>
</executions>
</plugin>-->
<!--
https://github.com/blinkfox/jpack-maven-plugin
https://www.nuomiphp.com/github/zh/5febf8e889f2a06f365bc4bd.html
对 SpringBoot 服务打包为 Windows、Linux、Docker、Helm Chart下可部署包的 Maven 插件
mvn clean package jpack:build
-->
<plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<version>${jpack-maven-plugin.version}</version>
<!--<executions>
<execution>
<goals>
<!– 只需输入 mvn package 命令,jpack 就可以构建执行了 –>
<goal>build</goal>
</goals>
<!– 绑定install阶段执行build –>
<phase>install</phase>
</execution>
</executions>-->
<configuration>
<!-- docker配置 -->
<docker>
<extraGoals>
<!-- 使用 docker load < jpack-demo-1.0.0.tar 命令来将本离线镜像包导入到 Docker 中 -->
<!--
jpack 的 Docker 构建的默认目标是构建镜像,如果你需要其他目标的话,可以在此配置).
目前这里只支持导出镜像为 .tar 包(save).
-->
<param>save</param>
<!--
jpack 的 Docker 构建的默认目标是构建镜像,如果你需要其他目标的话,可以再此配置(可配多个).
目前这里支持导出镜像为 .tar 包(save)和 推送镜像到远程仓库(push) 两种.
-->
<param>push</param>
</extraGoals>
<!-- 构建 Docker 镜像的 Dockerfile 文件的相对路径,没有此配置项或者不填写,则使用默认的 Dockerfile 文件. -->
<dockerfile>${project.basedir}/docker/Dockerfile</dockerfile>
<!-- 构建镜像的几个基础参数, registry远程仓库地址,不填写默认视为 Dockerhub 的地址;
repo不填写则默认为 groupId,name 不填写则默认为 artifactId,tag不填写则默认为 version.-->
<registry>${docker.repostory}</registry>
<!--<repo></repo>-->
<!--<name></name>-->
<!--<tag>1.0.0</tag>-->
<!-- FROM 的镜像,如果没有配置该值,将默认是 openjdk:8-jdk-alpine. -->
<!--<fromImage>openjdk:8-jdk-alpine</fromImage>-->
<!-- 对外暴露的端口,不配置该值,将不会在 Dockerfile 中生成 EXPOSE 指令. -->
<!--<expose>8080</expose>-->
<!-- 挂载的数据卷,不填写则默认挂载 "/tmp" 和 "/logs" 目录. -->
<!--<volumes>
<param>/tmp</param>
<param>/logs</param>
</volumes>-->
<!-- 自定义的 Dockerfile 指令选项,可以填写多个值,每个值在 Dockerfile 中占一行,充当Dockerfile中的一条指令,例如:下面设置时区的一个指令. -->
<!--<customCommands>
<param>RUN echo 'Asia/Shanghai' >/etc/timezone</param>
</customCommands>-->
<!-- jpack 推送到远程私有镜像仓库的用户权限认证信息,通常至少需要填写用户名和密码两项信息,
serverAddress 不填写就默认使用 registry. -->
<registryUser>
<username>${docker.account}</username>
<password>${docker.password}</password>
<!-- 可以对用户名或密码进行加密,可同时加密,也可只加密用户名或密码,只要将用户名或密码以 'ENCRYPT#' 开头就表示是加过密的信息. -->
<!-- <password>ENCRYPT#xrrHHzgJsGUQrfkEasF6WahbGnMXTg==</password>-->
<!--<email>1045599379@qq.com</email>-->
<!--<serverAddress></serverAddress>--> <!-- registry 服务地址,不填写则使用上面 registry 的值. -->
<!--<identityToken></identityToken>--> <!-- 该 token 值通常不需要填写. -->
</registryUser>
<!--<vmOptions>-Xms1024m -Xmx2048m</vmOptions>-->
<!--<programArgs>--server.port=7070</programArgs>-->
<!--
需要复制到部署包中 config 目录下的 yml 或者 .properties 文件的配置文件路径,
它的值可以配置多个,可以是相对路径、绝对路径具体的目录或文件,也可以是网络资源.
注:强烈建议配置该值用来替代 programArgs,以便于在 Windows 或 Linux 下,直接让运维人员来修改配置文件的方式来使配置生效,而不是通过命令行参数的方式来修改配置。
-->
<configFiles>
<param>src/main/resources/bootstrap.yml</param>
<param>src/main/resources/config/local/application-context.yml</param>
</configFiles>
<!--<copyResources>
<copyResource>
<from>README.pdf</from>
<to>.</to>
</copyResource>
</copyResources>-->
<!--<excludeFiles>
<param>logs</param>
</excludeFiles>-->
</docker>
<!-- helm配置 -->
<helmChart>
<!-- helm chart 源文件的目录位置,目前仅支持本地文件的绝对路径或相对 pom.xml 的相对路径. -->
<location>kubernetes/helm</location>
<!-- 要推送 helm chart 所在仓库的 API URL 地址. -->
<chartRepoUrl>http://localhost:8082/api/chartrepo/cmmplb/charts</chartRepoUrl>
<!-- 该值表示 save 导出时,是否使用本插件 Docker 构建的镜像,将其也导出到最终的镜像包中,默认为 false. -->
<useDockerImage>true</useDockerImage>
<!-- goals 中有 save 时,需要导出的镜像名称或有标签的镜像名称,不填写会默认从上面 Docker 导出的镜像中获取. -->
<saveImages>
<param>localhost:8082/cmmplb/springboot:1.0.0</param>
</saveImages>
<!-- 表示导出镜像时的镜像文件名称,不填写,则默认是 'images.tgz'. -->
<saveImageFileName></saveImageFileName>
<!-- 构建目标,这里设置了 chart 打包、推送和导出. -->
<goals>
<param>package</param>
<param>push</param>
<param>save</param>
</goals>
<!-- 推送 Chart 到 Harbor 中的 registry 用户密码信息,可以进行 AES 加密. -->
<registryUser>
<username>admin</username>
<password>***</password>
</registryUser>
</helmChart>
<!--
打包哪些平台的包,不填写则代表所有平台. 目前支持 Windows、Linux 和 Dokcer 三个平台(大小写均可).
-->
<platforms>
<!-- <param>Windows</param> -->
<!-- <param>Linux</param> -->
<!-- <param>Docker</param> -->
</platforms>
<!--
JVM 运行所需的选项参数.
默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些 JVM 选项参数。
-->
<!--<vmOptions>-Xms1024m -Xmx2048m</vmOptions>-->
<!--
所集成的 SpringBoot 服务程序运行所需的参数.
默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些程序运行参数。
注:不太建议使用此配置项来使参数生效,这是命令行级别的生效,不便于运维人员修改,容易出错,建议使用 configFiles 配置文件的方式。
-->
<!--<programArgs>--server.port=7070</programArgs>-->
<!--
需要复制到部署包中 config 目录下的 yml 或者 .properties 文件的配置文件路径,
它的值可以配置多个,可以是相对路径、绝对路径具体的目录或文件,也可以是网络资源.
注:强烈建议配置该值用来替代 programArgs,以便于在 Windows 或 Linux 下,直接让运维人员来修改配置文件的方式来使配置生效,而不是通过命令行参数的方式来修改配置。
-->
<configFiles>
<param>src/main/resources/bootstrap.yml</param>
<param>src/main/resources/config/local/application-context.yml</param>
</configFiles>
<!--
遇到错误时是否跳过错误,目前仅Docker 下有用到此配置。默认是不填写或者 default,程序会自动处理,不需要你额外关注;
true的话,会忽略所有异常;false的话,遇到错误就直接报错。
-->
<skipError>default</skipError>
<!-- 表示执行打包命令是否清除之前生成的发布包数据,默认清除(true),可配置为 false。 -->
<cleanPackDir>true</cleanPackDir>
<!--
需要copy 哪些资源(from 的值可以是目录或者具体的相对、绝对或网络资源路径)到部署包中的某个目录;
to 的值只能是目录,为空或者 '.' 或者 '/' 符号则表示复制到各平台包的根目录中,否则就复制到具体的目录下
-->
<!--<copyResources>
<!– 复制本项目根目录的 README.md 到各平台包的根目录中. –>
<copyResource>
<from>README.md</from>
<to>.</to>
</copyResource>
<!– 复制本项目 docs 文件夾到各平台包的 docs 目录中. –>
<copyResource>
<from>docs</from>
<to>docs</to>
</copyResource>
<!– 复制本项目上层目录的 hello.pdf 文件到各平台包的 abc/def 目录中(会自动创建此目录). –>
<copyResource>
<from>../test-dir/hello.pdf</from>
<to>abc/def</to>
</copyResource>
<!– 复制网络资源 http://xxx.com/image.png 文件到各平台包的根目录中. –>
<copyResource>
<from>http://xxx.com/image.png</from>
<to>/</to>
</copyResource>
</copyResources>-->
<!-- 排除哪些文件或目录不需要打包进压缩包中,输入文件的相对路径即可. -->
<!--<excludeFiles>
<param>logs</param>
<param>README.md</param>
<param>xxxxx.abc</param>
</excludeFiles>-->
<!-- 以下是仅对 Windows 平台下生效的配置,配置之后会覆盖前面的值 -->
<!--<windows>
<vmOptions>-Xms1024m -Xmx2048m</vmOptions>
<programArgs>--server.port=7070</programArgs>
<configFiles>
<param>src/test/resources/application.yml</param>
<param>src/test/resources/application-dev.yml</param>
</configFiles>
<copyResources>
<copyResource>
<from>README.pdf</from>
<to>.</to>
</copyResource>
</copyResources>
<excludeFiles>
<param>logs</param>
</excludeFiles>
</windows>-->
<!-- 同windows -->
<!--<linux>
<vmOptions>-Xms1024m -Xmx2048m</vmOptions>
</linux>-->
</configuration>
</plugin>
<!--
maven-javadoc
生成javadoc文档包的插件,
添加环境变量防止乱码:JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8
idea中打包的话设置-File-Settings-Build-Execution-Deployment-Build Tools-Maven-Runner
在VM Options中添加-Dfile.encoding=GBK,注意这里是GBK,因为Maven的默认平台编码是GBK
mvn -version根据Default locale可以看出
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<charset>${maven-javadoc-plugin.charset}</charset>
<encoding>${maven-javadoc-plugin.encoding}</encoding>
<docencoding>${maven-javadoc-plugin.docencoding}</docencoding>
<!-- 禁用注释检查,jdk1.8要加上,1.7要去掉,否则会报错,防止生成doc时报错误:未知标记: date -->
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
</execution>
</executions>
</plugin>
<!-- maven-source,生成sources源码包的插件,在本地仓库中就会有...-sources.jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
jasypt
配置文件编写:
password=DEC(123456)
jasypt.encryptor.password=password
使用插件进行加密:(必须在配置文件中写jasypt.encryptor.password)
mvn jasypt:encrypt -Djasypt.encryptor.password=password
不想在配置文件中编写加密密码,则可以指定启动参数
在VM options: -Djasypt.encryptor.password=password
启动时使用命令传入密钥值
java -jar -Djasypt.encryptor.password=密钥值 xxx.jar
-->
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>${jasypt-maven-plugin.version}</version>
</plugin>
<!-- querydsl apt plugin -->
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>${apt-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- tomcat7插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tomcat7-maven-plugin.version}</version>
<configuration>
<!--端口号-->
<port>8080</port>
<!--path就相当于部署项目时候的ContextPath-->
<path>/</path>
</configuration>
</plugin>
<!--
https://gitee.com/lijian17/JavaPackager
JavaPackager是一款maven打包插件,支持win、mac、linux系统打包,8+以上均支持,支持jlink和精简jre。
-->
<plugin>
<groupId>io.github.fvarrui</groupId>
<artifactId>javapackager</artifactId>
<version>${javapackager.version}</version>
<configuration>
<bundleJre>true</bundleJre>
<mainClass>com.cmmplb.address.ToStart</mainClass>
<generateInstaller>true</generateInstaller>
<platform>auto</platform>
<createZipball>true</createZipball>
<administratorRequired>false</administratorRequired>
<customizedJre>true</customizedJre>
<winConfig>
<!-- general properties -->
<generateSetup>true</generateSetup>
<generateMsi>false</generateMsi>
<!-- setup generation properties -->
<setupMode>installForAllUsers</setupMode>
<createDesktopIconTask>true</createDesktopIconTask>
<disableDirPage>false</disableDirPage>
<disableFinishedPage>false</disableFinishedPage>
<disableRunAfterInstall>false</disableRunAfterInstall>
<disableWelcomePage>false</disableWelcomePage>
<createDesktopIconTask>false</createDesktopIconTask>
<setupLanguages>
<chinesesimp>compiler:Default.isl</chinesesimp>
<english>compiler:Languages\English.isl</english>
</setupLanguages>
</winConfig>
</configuration>
</plugin>
<!--
用于生成项目的站点文档。这个插件能够自动生成项目信息、报告、依赖关系图等,帮助开发者和其他项目参与者更好地理解项目。
mvn site 这个命令会读取 pom.xml 文件中配置的 maven-site-plugin 和其他报告插件,然后生成项目的站点文档,
并默认将其放置在项目的 target/site 目录下。打开 target/site/index.html 文件即可开始浏览。
点进去properties查看相关插件,比如projectInfoReportsPluginVersion
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<!--
代码规范检查,如果你想采用自定义的扫描规则,请在你的 pom.xml 同级目录下新建 checkstyle.xml 文件并在其中配置你的规则。
然后修改 pom.xml 中 maven-checkstyle-plugin 插件的 configLocation 配置 checkstyle.xml
https://www.cnblogs.com/ziyuyuyu/p/9870717.html
Goal 生成报告 描述
checkstyle:check 否 执行检查分析并向控制台输出违规或违规次数,会使构建失败。
checkstyle:checkstyle 是 执行检查分析并生成HTML检查报告。
checkstyle:checkstyle-aggregate 是 执行检查分析并生成HTML检查报告以及汇总信息。
checkstyle:help 否 帮助。mvn checkstyle:help -Ddetail=true -Dgoal=<goal-name>
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<configuration>
<!-- 指定 Checkstyle 规则文件的路径 -->
<configLocation>google_checks.xml</configLocation>
<!-- checkstyle自定义文件位置,自带两套扫描代码的规则,sun_checks.xml和google_checks.xml,则默认采用 sun_checks.xml -->
<!--<configLocation>config/checkstyle.xml</configLocation>-->
<!-- 排除检测的类的文件的位置 -->
<!--<suppressionsLocation>config/suppressions.xml</suppressionsLocation>-->
<!-- 当设置为 true 时,Maven 将跳过该插件或目标的执行。 -->
<skip>false</skip>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<linkXRef>false</linkXRef>
</configuration>
<!--<executions>
<execution>
<id>validate</id>
<!– 可以在构建过程中的任何阶段执行 Checkstyle –>
<phase>validate</phase>
<goals>
<!– 使用 checkstyle 目标来执行 Checkstyle 规则 –>
<goal>check</goal>
</goals>
</execution>
</executions>-->
</plugin>
<!--
Maven 构建过程中执行 FindBugs 静态代码分析工具,Findbugs已经于2016年后不再维护,注意使用记得编译
1. FindBugs支持通过注解来忽略特定的警告。这需要在代码中添加@SuppressFBWarnings注解,并指定要忽略的警告类型。
@SuppressFBWarnings(value = {"DMI_HARDCODED_ABSOLUTE_FILENAME"}, justification = "忽略DMI_HARDCODED_ABSOLUTE_FILENAME方法的警告")
2. 使用XML配置文件,这个配置文件会忽略com.example.MyClass类中myMethod方法上所有标记为DLS_DEAD_LOCAL_STORE的警告。
<FindBugsFilter>
<Match>
<Class name="com.example.MyClass"/>
<Method name="myMethod"/>
<Bug pattern="DLS_DEAD_LOCAL_STORE"/>
</Match>
</FindBugsFilter>
使用注解之前,需要确保项目中已经添加了FindBugs注解的依赖。
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.5</version>
</dependency>
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${findbugs-maven-plugin.version}</version>
<configuration>
<!-- 可以在这里配置FindBugs插件的特定选项 -->
<!-- 启用XML格式的输出报告 -->
<xmlOutput>true</xmlOutput>
<!-- XML输出报告的目录 -->
<xmlOutputDirectory>${project.build.directory}/findbugs</xmlOutputDirectory>
<!-- 当设置为 true 时,Maven 将跳过该插件或目标的执行。 -->
<skip>false</skip>
<!-- 其他配置选项... -->
</configuration>
<!--<executions>
<execution>
<id>analyze-compile</id>
<!– 或者选择其他Maven构建阶段,如果插件在编译之前执行,可能找不到要分析的类文件。 –>
<phase>compile</phase>
<goals>
<!– 使用check目标来执行FindBugs分析,也可以使用gui界面查看 –>
<goal>check</goal>
</goals>
</execution>
</executions>-->
</plugin>
<!-- FindBugs 是一个流行的静态字节码分析工具,用于查找 Java 字节码中的错误,使用方法和findbugs类似 -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs-maven-plugin.version}</version>
<configuration>
<!-- 插件配置 -->
<!-- 例如,你可以指定包含或排除的文件或目录 -->
<!--<includeFilterFile>spotbugs-include.xml</includeFilterFile>-->
<!--<excludeFilterFile>spotbugs-exclude.xml</excludeFilterFile>-->
<!-- 启用或禁用某些警告 -->
<effort>Max</effort>
<threshold>Low</threshold>
<!-- 其他配置... -->
</configuration>
<!--<executions>
<execution>
<goals>
<!– 在构建过程中运行SpotBugs检查 –>
<goal>check</goal>
</goals>
</execution>
</executions>-->
</plugin>
<!--
在 Maven 工程的源代码上自动运行 PMD(Programming Mistake Detector)代码分析工具,
以检查代码中的潜在问题,如未使用的变量、空的 catch 块、不必要的对象创建等。
在使用 maven-pmd-plugin 之前,确保项目中已经包含了 PMD 工具的依赖,因为 maven-pmd-plugin 需要 PMD 工具来执行代码分析。
pmd:pmd 生成的html形式的报告 pmd.html,pmd:aggregate-pmd生成xml格式的报告
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.25.0</version>
</dependency>
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${maven-pmd-plugin.version}</version>
<configuration>
<!-- 插件配置选项 -->
<rulesets>
<!-- 指定要使用的规则集文件 -->
<!-- 默认maven-pmd-plugin-default.xml -->
<!--<ruleset>path/to/your/ruleset.xml</ruleset>-->
</rulesets>
<!-- 排除某个类、包下面的文件不进行检查 -->
<excludes>
<!--<exclude>**/tController.java</exclude>-->
</excludes>
</configuration>
<!--<executions>
<execution>
<id>pmd-check</id>
<goals>
<!– 在构建过程中执行 PMD 检查 –>
<goal>check</goal>
</goals>
<!– 绑定到 Maven 的 verify 生命周期阶段 –>
<phase>verify</phase>
</execution>
</executions>-->
</plugin>
<!--
基于 JUnit 和 TestNG 等单元测试框架生成的测试结果报告转换成 HTML 格式
maven-site-plugin通常会自动识别并包含maven-surefire-report-plugin生成的报告。
mvn surefire-report:report,执行该命令后,Maven 将会编译你的源代码和测试用例,运行单元测试,
并使用 maven-surefire-report-plugin 插件将测试结果转换成 HTML 格式的报告。
生成的 HTML 报告将位于 ${basedir}/target/site/surefire-report.html 目录下(除非你在插件配置中指定了其他输出目录)。
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${maven-surefire-report-plugin.version}</version>
<configuration>
<!-- 自定义测试报告的名称 -->
<!--<outputName>测试报告</outputName>-->
<!-- 其他配置... -->
</configuration>
</plugin>
<!--
用于生成项目的 Java 源代码交叉引用(Cross-Reference)报告。这个报告以 HTML 格式呈现,
包含了项目中所有 Java 源代码的链接和交叉引用,使得开发者可以方便地浏览和理解代码结构,查找和定位代码中的特定部分。
/target/reports/xref/index.html
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>${maven-jxr-plugin.version}</version>
<executions>
<execution>
<id>generate-jxr</id>
<goals>
<!-- 执行 JXR 报告生成 -->
<goal>jxr</goal>
</goals>
<!-- 绑定到 Maven 的 site 生命周期阶段 -->
<phase>site</phase>
</execution>
</executions>
</plugin>
<!--sonar扫描插件-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar-maven-plugin.version}</version>
</plugin>
<!--sonar扫描插件-->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar-maven-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<!-- 默认情况下,Maven会从项目的src/main/resources目录下查找资源,让yml能引用maven变量@xxx@ -->
<resources>
<!-- java -->
<resource>
<!-- 指定资源目录包含的文件,这里防止一些资源找不到的问题,不指定目录,扫描全部 -->
<directory>src/main/resources</directory>
<!--<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.vm</include>
</includes>-->
<!-- 开启过滤,将maven中声明的参数替换directory下的⽂件中的参数 -->
<filtering>false</filtering>
</resource>
<!-- resources -->
<resource>
<!-- 打包时包含src/main/resources目录下所有文件 -->
<directory>src/main/resources</directory>
<!-- 替换目录下${}解析的变量 -->
<filtering>true</filtering>
<!-- 指定资源目录包含的文件,这里防止一些资源找不到的问题,不指定目录,扫描全部 -->
<!--<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.vm</include>
<include>META-INF/*</include>
</includes>-->
<!-- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 -->
<!--<excludes>
<exclude>config/local/**</exclude>
<exclude>config/dev/**</exclude>
<exclude>config/sit/**</exclude>
<exclude>config/prod/**</exclude>
</excludes>-->
</resource>
<!-- config -->
<!--<resource>
<directory>src/main/resources/config/${environment}</directory>
<!–指定src/main/resources/config/${environment}所有文件打包到src/main/resources/config/${environment}目录下 –>
<targetPath>config/${environment}</targetPath>
</resource>-->
</resources>
<!-- 单元测试时引用src/main/resources下的资源文件, 如果test下面有同类型的文件,则以test的为准 -->
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.xlsx</exclude>
<exclude>**/*.xls</exclude>
</excludes>
</testResource>
<testResource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!--<includes>
<include>**/*.xlsx</include>
<include>**/*.xls</include>
</includes>-->
</testResource>
</testResources>
</build>
<!--
<reporting>中的配置作用于Maven的site阶段,用于生成报表。<reporting>中也可以配置插件<plugins>,并通过一个<plugin>的<reportSet>为该插件配置参数。
注意,对于同时出现在<build>和<reporting>中的插件,<reporting>中对该插件的配置也能够在构建过程中生效,
即该插件的配置是<build>和<reporting>中的配置的合并
-->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<!-- 这里也可以配置插件的报告生成选项 -->
</plugin>
</plugins>
</reporting>
<!--
私服管理=>使用deploy命令即可将jar发布到私服,发布工程中的version,
如果以snapshot结尾,则可以发布到快照仓库,如果以release结尾,则可以发布到releases版本。
maven会判断版本后面是否带了-SNAPSHOT,如果带了就发布到snapshots仓库,否则发布到release仓库。
-->
<distributionManagement>
<!-- 私服 -->
<!--<repository>
<id>nexus-releases</id>
<name>nexus-releases</name>
<url>http://localhost:8081/repository/release/</url>
</repository>
<!–快照–>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>nexus-snapshots</name>
<url>http://localhost:8081/repository/snapshot/</url>
</snapshotRepository>-->
<!-- 中央仓库 -->
<!--<repository>
<id>sonatype</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<snapshotRepository>
<id>sonatype</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>-->
</distributionManagement>
<!--
设定除中央仓库(repo1.maven.org/maven2/)外的其他仓库,按设定顺序进行查询包含需要连接到远程仓库的信息。
-->
<repositories>
<!-- 阿里云仓库 -->
<repository>
<!--远程仓库唯一标识 -->
<id>aliyun-central</id>
<!--远程仓库名称 -->
<name>aliyun-central</name>
<!--如何处理远程仓库里发布版本的下载 -->
<releases>
<!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
<enabled>true</enabled>
<!--
该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。
这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。
-->
<updatePolicy>always</updatePolicy>
<!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
<checksumPolicy>warn</checksumPolicy>
</releases>
<!--
如何处理远程仓库里快照版本的下载。
有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。
例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素
-->
<snapshots>
<!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
<enabled>false</enabled>
<!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。
这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
<updatePolicy>always</updatePolicy>
<!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<!--远程仓库URL,按protocol://hostname/path形式 -->
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
<!-- 新版本地址:https://developer.aliyun.com/mvn/guide -->
<!-- <url>https://maven.aliyun.com/repository/public/</url>-->
<!--
用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。
Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。
我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。
-->
<layout>default</layout>
</repository>
<!-- jboss -->
<repository>
<id>jboss-repository</id>
<name>jboss-repository</name>
<url>https://repository.jboss.org/maven2/</url>
</repository>
<!-- 中央仓库 -->
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
<!-- 中央仓库1 -->
<repository>
<id>repo1</id>
<name>Human Readable Name for this Mirror.</name>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<!-- 设置仓库节点=>配置完repositories还需要再配置pluginRepositories -->
<pluginRepositories>
<!-- aliyun -->
<pluginRepository>
<id>aliyun-central</id>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
<!-- 新版本 -->
<!--<url>https://maven.aliyun.com/repository/public/</url>-->
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<!-- jboss -->
<pluginRepository>
<id>jboss-repository</id>
<url>https://repository.jboss.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<!-- 中央仓库 -->
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<!-- 中央仓库1 -->
<pluginRepository>
<id>repo1</id>
<url>https://repo1.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!-- 配置 -->
<profiles>
<profile>
<!-- 本地环境 -->
<id>local</id>
<properties>
<!-- 节点名字profiles.active是自己随意取的 -->
<profiles.active>local</profiles.active>
</properties>
<!-- 默认激活该profile节点-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
</profile>
<profile>
<!-- 测试环境 -->
<id>sit</id>
<properties>
<profiles.active>sit</profiles.active>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
</project>