java-base-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>java-base-parent</artifactId>
<version>28</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">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.yusiwen</groupId>
<artifactId>java-base-parent</artifactId>
<version>28</version>
<packaging>pom</packaging>
<name>java-base-parent</name>
<description>Parent pom for java projects</description>
<url>https://github.com/yusiwen/java-base-parent</url>
<inceptionYear>2021</inceptionYear>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>yusiwen</id>
<name>Siwen Yu</name>
<email>yusiwen@gmail.com</email>
</developer>
</developers>
<scm>
<connection>scm:git:ssh://git@github.com/yusiwen/java-base-parent.git</connection>
<developerConnection>scm:git:ssh://git@github.com/yusiwen/java-base-parent.git</developerConnection>
<tag>v28</tag>
<url>https://github.com/yusiwen/java-base-parent</url>
</scm>
<issueManagement>
<system>Github</system>
<url>https://github.com/yusiwen/java-base-parent/issues</url>
</issueManagement>
<ciManagement>
<system>travis-ci</system>
<url>https://travis-ci.org/yusiwen/java-base-parent</url>
</ciManagement>
<properties>
<!-- Copyright -->
<copyright>2021-2025</copyright>
<!-- Maven minimum version -->
<maven.min-version>3.6.3</maven.min-version>
<!-- Maven date configuration -->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<!-- Default JDK version -->
<java.version>17</java.version>
<java.release.version>17</java.release.version>
<java.test.version>17</java.test.version>
<java.test.release.version>17</java.test.release.version>
<toolchain.jdk.version>[17,)</toolchain.jdk.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.testSource>${java.test.version}</maven.compiler.testSource>
<maven.compiler.testTarget>${java.test.version}</maven.compiler.testTarget>
<maven.compiler.release>${java.release.version}</maven.compiler.release>
<maven.compiler.testRelease>${java.test.release.version}</maven.compiler.testRelease>
<!-- Signature Settings -->
<signature.artifact>java18</signature.artifact>
<signature.version>1.0</signature.version>
<!-- Default file encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Indent -->
<indent.size>4</indent.size>
<!-- Build -->
<build.environment>dev</build.environment>
<!-- OSGi configuration properties -->
<osgi.symbolicName>${project.groupId}.${project.artifactId}</osgi.symbolicName>
<osgi.export>${project.groupId}.*;version=${project.version};-noimport:=true</osgi.export>
<osgi.import>*</osgi.import>
<osgi.dynamicImport />
<osgi.private />
<!-- Docker build -->
<docker.build.name>${project.groupId}.${project.artifactId}:${project.version}-${build.environment}</docker.build.name>
<docker.image.skip>true</docker.image.skip>
<!-- Maven plugins -->
<animal-sniffer.plugin>1.24</animal-sniffer.plugin>
<dependency-check-maven.version>12.1.6</dependency-check-maven.version>
<directory-maven-plugin.version>1.0</directory-maven-plugin.version>
<exec-maven-plugin.version>3.6.1</exec-maven-plugin.version>
<maven-toolchains-plugin.version>3.2.0</maven-toolchains-plugin.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
<maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version>
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
<maven-release-plugin.version>3.1.1</maven-release-plugin.version>
<central-publishing-maven-plugin.version>0.9.0</central-publishing-maven-plugin.version>
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
<maven-install-plugin.version>3.1.4</maven-install-plugin.version>
<maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
<!-- checks -->
<error-prone.version>2.42.0</error-prone.version>
<modernizer.plugin>3.2.0</modernizer.plugin>
<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
<!--checkstyle check插件 -->
<checkstyle.version>11.1.0</checkstyle.version>
<findsecbugs.version>1.14.0</findsecbugs.version>
<sb-contrib.version>7.6.15</sb-contrib.version>
<bug-pattern.version>1.5.0</bug-pattern.version>
<spotbugs-maven-plugin.version>4.9.6.0</spotbugs-maven-plugin.version>
<spotbugs.version>4.9.6</spotbugs.version>
<properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
<maven-pmd-plugin.version>3.21.2</maven-pmd-plugin.version>
<p3c-pmd.version>2.2.1.0x</p3c-pmd.version>
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
<maven-build-helper.version>1.5.4</maven-build-helper.version>
<jacoco.version>0.8.14</jacoco.version>
<sonar-maven-plugin.version>5.2.0.4988</sonar-maven-plugin.version>
<!-- test -->
<surefire.plugin>3.5.4</surefire.plugin>
<!-- site -->
<doxia.version>2.0.0</doxia.version>
<fluido.version>2.1.0</fluido.version>
<site.plugin>3.21.0</site.plugin>
<wagon-git.version>2.0.4</wagon-git.version>
<!-- report -->
<changelog.plugin>2.3</changelog.plugin>
<changes.plugin>2.12.1</changes.plugin>
<javancss.plugin>2.1</javancss.plugin>
<jdepend.plugin>2.1</jdepend.plugin>
<maven-jxr-plugin.version>3.6.0</maven-jxr-plugin.version>
<project-info.plugin>3.9.0</project-info.plugin>
<taglist.plugin>3.2.1</taglist.plugin>
<versions.plugin>2.19.1</versions.plugin>
<!-- build -->
<antrun-plugin.version>3.1.0</antrun-plugin.version>
<docker-maven-plugin.version>0.46.0</docker-maven-plugin.version>
<git-commit.plugin>4.9.10</git-commit.plugin>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
<maven-war-plugin.version>3.4.0</maven-war-plugin.version>
<!-- format -->
<formatter.plugin>2.29.0</formatter.plugin>
<impsort.plugin>1.12.0</impsort.plugin>
<sortpom.plugin>4.0.0</sortpom.plugin>
<tidy.plugin>1.4.0</tidy.plugin>
<whitespace.plugin>1.5.0</whitespace.plugin>
<xml-format.plugin>4.1.0</xml-format.plugin>
<rewrite.plugin>6.19.0</rewrite.plugin>
<flatten.plugin>1.7.3</flatten.plugin>
<!-- others -->
<bnd.version>7.1.0</bnd.version>
<bnd.plugin>7.1.0</bnd.plugin>
<license.plugin>5.0.0</license.plugin>
<license-git.version>5.0.0</license-git.version>
<enforcer.plugin>3.6.2</enforcer.plugin>
<flyway-maven-plugin.version>11.13.2</flyway-maven-plugin.version>
<htmlcompressor.plugin>2.2.0</htmlcompressor.plugin>
<htmlcompressor.version>2.0.2</htmlcompressor.version>
<wagon.plugin>2.0.2</wagon.plugin>
<wagon-ssh.version>3.5.3</wagon-ssh.version>
<yuicompressor.plugin>1.5.1</yuicompressor.plugin>
<yuicompressor.version>2.4.8</yuicompressor.version>
<utility.version>1.0.0-SNAPSHOT</utility.version>
<lombok.version>1.18.42</lombok.version>
<!-- git -->
<git-build-hook-plugin.version>3.6.0</git-build-hook-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>${spotbugs.version}</version>
</dependency>
<dependency>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-annotations</artifactId>
<version>${modernizer.plugin}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-annotations</artifactId>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>cn.yusiwen.maven.plugins</groupId>
<artifactId>utility-maven-plugin</artifactId>
<version>${utility.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven-checkstyle-plugin.version}</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${checkstyle.version}</version>
</dependency>
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>maven-build-helper</artifactId>
<version>${maven-build-helper.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>checkstyle-validation</id>
<goals>
<goal>check</goal>
</goals>
<phase>compile</phase>
<configuration>
<violationSeverity>warn</violationSeverity>
<!--suppress UnresolvedMavenProperty -->
<configLocation>checkstyle.xml</configLocation>
<includeTestSourceDirectory>false</includeTestSourceDirectory>
<inputEncoding>UTF-8</inputEncoding>
<consoleOutput>true</consoleOutput>
<failOnViolation>true</failOnViolation>
<failsOnError>true</failsOnError>
<excludes>**/enums/*Enum.java,**/Launcher.java,**/*Application.java</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${maven-pmd-plugin.version}</version>
<configuration>
<linkXRef>false</linkXRef>
<aggregate>true</aggregate>
<inputEncoding>${project.build.sourceEncoding}</inputEncoding>
<targetJdk>${java.version}</targetJdk>
<printFailingErrors>true</printFailingErrors>
<failurePriority>2</failurePriority>
<rulesets>
<!--由checkstyle检查 <ruleset>rulesets/java/ali-comment.xml</ruleset>-->
<ruleset>rulesets/java/ali-concurrent.xml</ruleset>
<!--由checkstyle检查 <ruleset>rulesets/java/ali-constant.xml</ruleset>-->
<ruleset>rulesets/java/ali-exception.xml</ruleset>
<ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
<ruleset>rulesets/java/ali-naming.xml</ruleset>
<ruleset>rulesets/java/ali-oop.xml</ruleset>
<ruleset>rulesets/java/ali-orm.xml</ruleset>
<ruleset>rulesets/java/ali-other.xml</ruleset>
<ruleset>rulesets/java/ali-set.xml</ruleset>
</rulesets>
</configuration>
<dependencies>
<dependency>
<groupId>com.xenoamess.p3c</groupId>
<artifactId>p3c-pmd</artifactId>
<version>${p3c-pmd.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
<!-- findbugs插件 -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs-maven-plugin.version}</version>
<configuration>
<!-- 设置分析工作的等级,可以为Min、Default和Max -->
<effort>Max</effort>
<!-- Low、Medium和High (Low最严格) -->
<threshold>Medium</threshold>
<!--发现错误则中断构建-->
<failOnError>true</failOnError>
<!--不检查test代码 -->
<includeTests>false</includeTests>
<!--findbugs需要忽略的错误的配置文件-->
<!--suppress UnresolvedMavenProperty -->
<excludeFilterFile>findbugs-exclude-filter.xml</excludeFilterFile>
<plugins>
<plugin>
<groupId>com.mebigfatguy.sb-contrib</groupId>
<artifactId>sb-contrib</artifactId>
<version>${sb-contrib.version}</version>
</plugin>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>${findsecbugs.version}</version>
</plugin>
<plugin>
<groupId>jp.skypencil.findbugs.slf4j</groupId>
<artifactId>bug-pattern</artifactId>
<version>${bug-pattern.version}</version>
</plugin>
</plugins>
</configuration>
<dependencies>
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>maven-build-helper</artifactId>
<version>${maven-build-helper.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>run-findbugs</id>
<goals>
<goal>check</goal>
</goals>
<!-- validate 阶段触发执行findbugs检查,比如执行 mvn clean package -->
<phase>compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>${maven-toolchains-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>select-jdk-toolchain</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
<configuration>
<encoding>${project.build.resourceEncoding}</encoding>
<delimiters>
<!-- 使用${*}作为变量分隔符 -->
<delimiter>${*}</delimiter>
</delimiters>
<!--禁止使用默认: 默认delimiter包括 ${*}和@ -->
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<scmCommentPrefix>release</scmCommentPrefix>
<scmDevelopmentCommitComment>@{prefix}: prepare for next development iteration</scmDevelopmentCommitComment>
<scmReleaseCommitComment>@{prefix}: release @{releaseLabel}</scmReleaseCommitComment>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central-portal</publishingServerId>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${enforcer.plugin}</version>
<configuration>
<rules>
<requireMavenVersion>
<version>[${maven.min-version},)</version>
</requireMavenVersion>
</rules>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>current.time</name>
<pattern>yyyyMMdd</pattern>
<timeZone>GMT+8</timeZone>
<locale>zh_CN</locale>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin}</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<excludes>
<exclude>**/po/**</exclude>
<exclude>*/dto/**</exclude>
<exclude>**/vo/**</exclude>
<exclude>**/feign/**</exclude>
<exclude>**/enums/**</exclude>
<exclude>**/config/**</exclude>
<exclude>**/utils/**</exclude>
<exclude>**/domain/**</exclude>
</excludes>
<destFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
<!-- rules里面指定覆盖规则 -->
<rules>
<rule implementation="org.jacoco.maven.RuleConfiguration">
<element>BUNDLE</element>
<limits>
<!-- 方法覆盖率到100% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>METHOD</counter>
<value>MISSEDCOUNT</value>
<maximum>0</maximum>
</limit>
<!-- 指令覆盖率到90% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>INSTRUCTION</counter>
<value>COVEREDRATIO</value>
<minimum>0.90</minimum>
</limit>
<!-- 行覆盖率到90% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.90</minimum>
</limit>
<!-- 指定类覆盖到100%,不能遗失任何类 -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>CLASS</counter>
<value>MISSEDCOUNT</value>
<maximum>0</maximum>
</limit>
</limits>
</rule>
</rules>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<goals>
<goal>report</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>${flyway-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${antrun-plugin.version}</version>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker-maven-plugin.version}</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<skip>${docker.image.skip}</skip>
<images>
<image>
<!--suppress UnresolvedMavenProperty -->
<name>${docker.build.name}</name>
<build>
<!--suppress UnresolvedMavenProperty -->
<dockerFile>${docker.build.dockerfile}</dockerFile>
<contextDir>${project.basedir}</contextDir>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker</id>
<goals>
<goal>build</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>registry</id>
<goals>
<goal>push</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
<!-- Sonar -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar-maven-plugin.version}</version>
</plugin>
<!-- OWASP Vulnerabilities check -->
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>${dependency-check-maven.version}</version>
<configuration>
<!-- Disable .net analyzer -->
<assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
<nugetconfAnalyzerEnabled>false</nugetconfAnalyzerEnabled>
<nuspecAnalyzerEnabled>false</nuspecAnalyzerEnabled>
<!-- Disable node analyzer -->
<nodeAnalyzerEnabled>false</nodeAnalyzerEnabled>
<nodeAuditAnalyzerEnabled>false</nodeAuditAnalyzerEnabled>
<!-- Disable python analyzer -->
<pyDistributionAnalyzerEnabled>false</pyDistributionAnalyzerEnabled>
<pyPackageAnalyzerEnabled>false</pyPackageAnalyzerEnabled>
<pipAnalyzerEnabled>false</pipAnalyzerEnabled>
<pipfileAnalyzerEnabled>false</pipfileAnalyzerEnabled>
<!-- Disable ruby analyzer -->
<rubygemsAnalyzerEnabled>false</rubygemsAnalyzerEnabled>
<cmakeAnalyzerEnabled>false</cmakeAnalyzerEnabled>
<autoconfAnalyzerEnabled>false</autoconfAnalyzerEnabled>
<composerAnalyzerEnabled>false</composerAnalyzerEnabled>
<cpanfileAnalyzerEnabled>false</cpanfileAnalyzerEnabled>
<yarnAuditAnalyzerEnabled>false</yarnAuditAnalyzerEnabled>
<pnpmAuditAnalyzerEnabled>false</pnpmAuditAnalyzerEnabled>
</configuration>
</plugin>
<plugin>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-plugin</artifactId>
<version>${modernizer.plugin}</version>
<configuration>
<javaVersion>${maven.compiler.target}</javaVersion>
</configuration>
</plugin>
<!-- Formatter -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tidy-maven-plugin</artifactId>
<version>${tidy.plugin}</version>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>${formatter.plugin}</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<configFile>p3c-formatter-${indent.size}spaces.xml</configFile>
</configuration>
<dependencies>
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>maven-build-helper</artifactId>
<version>${maven-build-helper.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<version>${impsort.plugin}</version>
<configuration>
<groups>com,java,javax,lombok,mockit,net,org</groups>
<staticGroups>java,*</staticGroups>
<removeUnused>true</removeUnused>
</configuration>
</plugin>
<plugin>
<groupId>com.github.ekryd.sortpom</groupId>
<artifactId>sortpom-maven-plugin</artifactId>
<version>${sortpom.plugin}</version>
<configuration>
<predefinedSortOrder>recommended_2008_06</predefinedSortOrder>
<createBackupFile>false</createBackupFile>
<expandEmptyElements>false</expandEmptyElements>
<keepBlankLines>true</keepBlankLines>
<nrOfIndentSpace>${indent.size}</nrOfIndentSpace>
<spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
</configuration>
</plugin>
<plugin>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>whitespace-maven-plugin</artifactId>
<version>${whitespace.plugin}</version>
</plugin>
<plugin>
<groupId>au.com.acegi</groupId>
<artifactId>xml-format-maven-plugin</artifactId>
<version>${xml-format.plugin}</version>
<configuration>
<indentSize>${indent.size}</indentSize>
<lineLength>120</lineLength>
<excludes>
<exclude>pom.xml</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>${rewrite.plugin}</version>
<configuration>
<activeRecipes>
<recipe>org.openrewrite.java.RemoveUnusedImports</recipe>
</activeRecipes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${flatten.plugin}</version>
<configuration>
<flattenMode>oss</flattenMode>
</configuration>
</plugin>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>${bnd.plugin}</version>
<configuration>
<manifestPath>${project.build.directory}/osgi/MANIFEST.MF</manifestPath>
<packagingTypes>jar,bundle,maven-plugin,war</packagingTypes>
<bnd><![CDATA[
// 'nouses' stops the "uses" clauses being added to "Export-Package" manifest entry
-nouses: true
// 'removeheaders' Stop the JAVA_n_HOME variables from being treated as headers by Bnd if found in settings.xml (obsolete versions removed, if found, cleanup settings.xml)
-removeheaders: JAVA_17_HOME,JAVA_21_HOME,JAVA_23_HOME,JAVA_24_HOME,JAVA_25_HOME
Bundle-Developers:
Bundle-DocURL: ${project.url}
Bundle-SymbolicName: ${osgi.symbolicName}
DynamicImport-Package: ${osgi.dynamicImport}
Export-Package: ${osgi.export}
Private-Package: ${osgi.private}
Import-Package: ${osgi.import}
]]></bnd>
</configuration>
<dependencies>
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
<version>${bnd.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${license.plugin}</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<header>${license.header}</header>
<excludes>
<exclude>**/*.lck</exclude>
<exclude>**/*.log</exclude>
<exclude>**/*maven-wrapper.properties</exclude>
<exclude>**/*MavenWrapperDownloader.java</exclude>
<exclude>.factorypath</exclude>
<exclude>.gitattributes</exclude>
<exclude>.gitignore</exclude>
<exclude>.format</exclude>
<exclude>.compress</exclude>
<exclude>.error-prone</exclude>
<exclude>LICENSE</exclude>
<exclude>LICENSE_HEADER</exclude>
<exclude>LICENSE.txt</exclude>
<exclude>LICENSE.TXT</exclude>
<exclude>license.txt</exclude>
<exclude>mvnw</exclude>
<exclude>mvnw.cmd</exclude>
</excludes>
</configuration>
<dependencies>
<dependency>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin-git</artifactId>
<version>${license-git.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- Wagon -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>${wagon.plugin}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>${animal-sniffer.plugin}</version>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>${signature.artifact}</artifactId>
<version>${signature.version}</version>
</signature>
</configuration>
</plugin>
<!-- Build Plugins -->
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit.plugin}</version>
<configuration>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<!-- Fixes occassional issue in commit id plugin - see
https://github.com/ktoso/maven-git-commit-id-plugin/issues/61 -->
<gitDescribe>
<always>true</always>
</gitDescribe>
</configuration>
</plugin>
<!-- Packaging types / tools -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<manifest>
<addBuildEnvironmentEntries>false</addBuildEnvironmentEntries>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
<Copyright>${copyright}</Copyright>
<!--suppress UnresolvedMavenProperty -->
<Git-Revision>${git.commit.id}</Git-Revision>
<Os-Name>${os.name}</Os-Name>
<Os-Arch>${os.arch}</Os-Arch>
<Os-Version>${os.version}</Os-Version>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
<X-Compile-Release-JDK>${maven.compiler.release}</X-Compile-Release-JDK>
</manifestEntries>
</archive>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<dependencies>
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>maven-build-helper</artifactId>
<version>${maven-build-helper.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
<Copyright>${copyright}</Copyright>
<!--suppress UnresolvedMavenProperty -->
<Git-Revision>${git.commit.id}</Git-Revision>
<Os-Name>${os.name}</Os-Name>
<Os-Arch>${os.arch}</Os-Arch>
<Os-Version>${os.version}</Os-Version>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>htmlcompressor-maven-plugin</artifactId>
<version>${htmlcompressor.plugin}</version>
<dependencies>
<dependency>
<groupId>com.github.hazendaz</groupId>
<artifactId>htmlcompressor</artifactId>
<version>${htmlcompressor.version}</version>
</dependency>
<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>${yuicompressor.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>${yuicompressor.plugin}</version>
<dependencies>
<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>${yuicompressor.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- Site -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${site.plugin}</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
<Copyright>${copyright}</Copyright>
<!--suppress UnresolvedMavenProperty -->
<Git-Revision>${git.commit.id}</Git-Revision>
<Os-Name>${os.name}</Os-Name>
<Os-Arch>${os.arch}</Os-Arch>
<Os-Version>${os.version}</Os-Version>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
</manifestEntries>
</archive>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-markdown</artifactId>
<version>${doxia.version}</version>
</dependency>
<dependency>
<groupId>net.trajano.wagon</groupId>
<artifactId>wagon-git</artifactId>
<version>${wagon-git.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon-ssh.version}</version>
</dependency>
<!-- For reporting only of versions -->
<dependency>
<groupId>org.apache.maven.skins</groupId>
<artifactId>maven-fluido-skin</artifactId>
<version>${fluido.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- Report Only -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javancss-maven-plugin</artifactId>
<version>${javancss.plugin}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jdepend-maven-plugin</artifactId>
<version>${jdepend.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changelog-plugin</artifactId>
<version>${changelog.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<version>${changes.plugin}</version>
<configuration>
<githubAPIScheme>https</githubAPIScheme>
<githubAPIPort>443</githubAPIPort>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>${maven-jxr-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${project-info.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${surefire.plugin}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
<version>${taglist.plugin}</version>
<configuration>
<tagListOptions>
<tagClasses>
<tagClass>
<displayName>FIXME Work</displayName>
<tags>
<tag>
<matchString>fixme</matchString>
<matchType>ignoreCase</matchType>
</tag>
<tag>
<matchString>@fixme</matchString>
<matchType>ignoreCase</matchType>
</tag>
</tags>
</tagClass>
<tagClass>
<displayName>Todo Work</displayName>
<tags>
<tag>
<matchString>todo</matchString>
<matchType>ignoreCase</matchType>
</tag>
<tag>
<matchString>@todo</matchString>
<matchType>ignoreCase</matchType>
</tag>
</tags>
</tagClass>
<tagClass>
<displayName>Deprecated Work</displayName>
<tags>
<tag>
<matchString>@deprecated</matchString>
<matchType>ignoreCase</matchType>
</tag>
</tags>
</tagClass>
</tagClasses>
</tagListOptions>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${versions.plugin}</version>
</plugin>
<plugin>
<groupId>com.rudikershaw.gitbuildhook</groupId>
<artifactId>git-build-hook-maven-plugin</artifactId>
<version>${git-build-hook-plugin.version}</version>
<configuration>
<installHooks>
<commit-msg>hooks/commit-msg</commit-msg>
<post-commit>hooks/post-commit</post-commit>
</installHooks>
</configuration>
<dependencies>
<dependency>
<groupId>cn.yusiwen</groupId>
<artifactId>maven-build-helper</artifactId>
<version>${maven-build-helper.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>install</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.commonjava.maven.plugins</groupId>
<!-- 用来生成顶级模块的绝对路径properties,提供其他插件使用-->
<artifactId>directory-maven-plugin</artifactId>
<version>${directory-maven-plugin.version}</version>
<executions>
<execution>
<id>directories</id>
<goals>
<!-- 顶级模块的绝对路径-->
<goal>highest-basedir</goal>
</goals>
<phase>validate</phase>
<configuration>
<!-- 顶级模块的绝对路径properties-->
<property>top.my.basedir</property>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
</execution>
<execution>
<id>enforce-clean</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>pre-clean</phase>
</execution>
<execution>
<id>enforce-site</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>pre-site</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-plugin</artifactId>
<executions>
<execution>
<id>modernizer</id>
<goals>
<goal>modernizer</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
<sourceDirectory>src/main/java</sourceDirectory>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon-ssh.version}</version>
</extension>
</extensions>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changelog-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>github-report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<!-- select non-aggregate reports -->
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- This plugin will fail if any POM is marked as Byte Order
Mark is UTF-8 (BOM). If this occurs, create a new POM and move the contents
in order to fix. For reference, this was a problem with mybatis/mybatis-spring
poms. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javancss-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jdepend-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<reportSets>
<reportSet>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>jar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<docker.image.skip>true</docker.image.skip>
</properties>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>docker</id>
<properties>
<docker.image.skip>false</docker.image.skip>
</properties>
</profile>
<profile>
<id>git-hook</id>
<activation>
<file>
<exists>.git</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.rudikershaw.gitbuildhook</groupId>
<artifactId>git-build-hook-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>compression</id>
<activation>
<file>
<exists>.compress</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>htmlcompressor-maven-plugin</artifactId>
<configuration>
<compressCss>true</compressCss>
<compressJavaScript>true</compressJavaScript>
<javascriptHtmlSprite>false</javascriptHtmlSprite>
<yuiJsNoMunge>true</yuiJsNoMunge>
<removeIntertagSpaces>true</removeIntertagSpaces>
<srcFolder>${project.basedir}/src/main/resources</srcFolder>
<targetFolder>${project.basedir}/target/classes</targetFolder>
<fileExt>
<fileExt>html</fileExt>
<fileExt>xhtml</fileExt>
<fileExt>xml</fileExt>
</fileExt>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<goals>
<goal>html</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<configuration>
<nomunge>true</nomunge>
<nosuffix>true</nosuffix>
<excludes>
<exclude>**/*.min.js</exclude>
<exclude>**/*.min.css</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<goals>
<goal>compress</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>format</id>
<activation>
<file>
<exists>.format</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>sort</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.ekryd.sortpom</groupId>
<artifactId>sortpom-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>sort</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>whitespace-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>trim</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>au.com.acegi</groupId>
<artifactId>xml-format-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>xml-format</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>bundle</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<attach>true</attach>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>base-bundle</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>license</id>
<activation>
<file>
<exists>LICENSE_HEADER</exists>
</file>
</activation>
<properties>
<license.header>LICENSE_HEADER</license.header>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sort</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tidy-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>pom</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>error-prone-common</id>
<activation>
<file>
<exists>.error-prone</exists>
</file>
</activation>
<dependencies>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>${error-prone.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<profile>
<id>jdk8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<checkstyle.version>9.3</checkstyle.version>
<spotbugs-maven-plugin.version>4.8.6.6</spotbugs-maven-plugin.version>
<formatter.plugin>2.16.0</formatter.plugin>
<impsort.plugin>1.6.2</impsort.plugin>
<flyway-maven-plugin.version>9.22.3</flyway-maven-plugin.version>
<sonar-maven-plugin.version>3.11.0.3922</sonar-maven-plugin.version>
<dependency-check-maven.version>10.0.4</dependency-check-maven.version>
<license.plugin>4.6</license.plugin>
<license-git.version>4.6</license-git.version>
<htmlcompressor.plugin>1.7.3</htmlcompressor.plugin>
</properties>
</profile>
<profile>
<id>jdk8-error-prone</id>
<activation>
<jdk>1.8</jdk>
<file>
<exists>.error-prone</exists>
</file>
</activation>
<properties>
<!-- using github.com/google/error-prone-javac is required when running on JDK 8 -->
<javac.version>9+181-r4173-1</javac.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<compilerArgs combine.children="append">
<arg>-J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/${javac.version}/javac-${javac.version}.jar</arg>
</compilerArgs>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>javac</artifactId>
<version>${javac.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jdk9+</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<!-- JAXB -->
<javax.activation.version>1.2.0</javax.activation.version>
<jaxb.api.version>2.3.0</jaxb.api.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>${javax.activation.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>jdk9-error-prone</id>
<activation>
<jdk>[9,16)</jdk>
<file>
<exists>.error-prone</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-XDcompilePolicy=simple</arg>
<arg>-Xplugin:ErrorProne</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${error-prone.version}</version>
</path>
<!-- Other annotation processors go here.
If 'annotationProcessorPaths' is set, processors will no longer be
discovered on the regular -classpath; see also 'Using Error Prone
together with other annotation processors' below. -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jdk16-error-prone</id>
<activation>
<jdk>[16,)</jdk>
<file>
<exists>.error-prone</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<compilerArgs>
<arg>-XDcompilePolicy=simple</arg>
<arg>-Xplugin:ErrorProne</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${error-prone.version}</version>
</path>
<!-- Other annotation processors go here.
If 'annotationProcessorPaths' is set, processors will no longer be
discovered on the regular -classpath; see also 'Using Error Prone
together with other annotation processors' below. -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>eclipse</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>[${build-helper-maven-plugin.version},)</versionRange>
<goals>
<goal>validate</goal>
</goals>
</pluginExecutionFilter>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.commonjava.maven.plugins</groupId>
<artifactId>directory-maven-plugin</artifactId>
<versionRange>[${directory-maven-plugin.version},)</versionRange>
<goals>
<goal>validate</goal>
<goal>highest-basedir</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.github.hazendaz.maven</groupId>
<artifactId>htmlcompressor-maven-plugin</artifactId>
<versionRange>[${htmlcompressor.plugin},)</versionRange>
<goals>
<goal>html</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[${yuicompressor.plugin},)</versionRange>
<goals>
<goal>compress</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<versionRange>[${spotbugs-maven-plugin.version},)</versionRange>
<goals>
<goal>check</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<versionRange>[${formatter.plugin},)</versionRange>
<goals>
<goal>format</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<versionRange>[${impsort.plugin},)</versionRange>
<goals>
<goal>sort</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>cn.yusiwen</groupId>
<artifactId>whitespace-maven-plugin</artifactId>
<versionRange>[${whitespace.plugin},)</versionRange>
<goals>
<goal>trim</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[${enforcer.plugin},)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>
</project>