<?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>

    <artifactId>maven-build</artifactId>
    <description>Parent pom for maven based projects</description>
    <groupId>cn.home1</groupId>
    <name>maven-build</name>
    <packaging>pom</packaging>
    <url>https://github.com/ci-and-cd/maven-build</url>
    <version>3.0.2</version>

    <developers>
        <developer>
            <name>Haolun Zhang</name>
            <url>https://github.com/chshawkn</url>
        </developer>
    </developers>

    <!--
    To make formatter:off/on instructions work,
    you must go to 'Preferences->Editor->Code Style->Formatter Control' and check 'Enable formatter markers in comments'.
    -->
    <!-- @formatter:off -->
    <ciManagement><system>Travis CI</system><url>https://travis-ci.org/ci-and-cd/maven-build</url></ciManagement>
    <issueManagement><system>GitHub Issues</system><url>https://github.com/ci-and-cd/maven-build/issues</url></issueManagement>
    <licenses><license><name>MIT License</name><url>http://www.opensource.org/licenses/mit-license.php</url><distribution>repo</distribution></license></licenses>
    <scm>
        <url>https://github.com/ci-and-cd/maven-build</url>
        <connection>scm:git:https://github.com/ci-and-cd/maven-build.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/ci-and-cd/maven-build.git</developerConnection>
        <tag>HEAD</tag>
    </scm>
    <!-- @formatter:on -->

    <repositories>
        <!-- @formatter:off -->
        <repository>
            <id>central</id><url>https://repo1.maven.org/maven2/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-libs-release</id>
            <url>http://repo.spring.io/libs-release/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/milestone/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-libs-snapshot</id>
            <url>http://repo.spring.io/libs-snapshot/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
        </repository>
        <repository>
            <id>ossrh-nexus2-releases</id>
            <name>ossrh nexus2 releases</name>
            <url>https://oss.sonatype.org/content/repositories/releases/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <repository>
            <id>ossrh-nexus2-snapshots</id>
            <name>ossrh nexus2 snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
        </repository>
        <repository>
            <id>ossrh-nexus2-thirdparty</id>
            <name>central thirdparty</name>
            <url>https://oss.sonatype.org/content/repositories/third-party-releases/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <!-- Repo jvnet is for java.xml.bind (org.glassfish.jaxb:jaxb-runtime:2.4.0-b180608.0325) that removed in JDK 11 by JEP-320 -->
        <repository>
            <id>jvnet-nexus-staging</id>
            <url>http://maven.java.net/content/repositories/staging/</url>
            <layout>default</layout>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>
        <!-- @formatter:on -->
    </repositories>

    <pluginRepositories>
        <!-- @formatter:off -->
        <pluginRepository>
            <id>central</id>
            <url>https://repo1.maven.org/maven2/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-libs-release</id>
            <url>http://repo.spring.io/libs-release/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/milestone/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-libs-snapshot</id>
            <url>http://repo.spring.io/libs-snapshot/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>ossrh-nexus2-releases</id>
            <name>ossrh nexus2 releases</name>
            <url>https://oss.sonatype.org/content/repositories/releases/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>ossrh-nexus2-snapshots</id>
            <name>ossrh nexus2 snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>ossrh-nexus2-thirdparty</id>
            <name>central thirdparty</name>
            <url>https://oss.sonatype.org/content/repositories/third-party-releases/</url>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>github-mvn-repo-github-maven-plugins</id>
            <url>https://raw.github.com/ci-and-cd/maven-plugins/mvn-repo/</url>
            <name>Forked github-maven-plugins that upload faster</name>
            <layout>default</layout>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
        </pluginRepository>
        <pluginRepository>
            <id>github-mvn-repo-wagon-maven-plugin</id>
            <url>https://raw.github.com/ci-and-cd/wagon-maven-plugin/mvn-repo/</url>
            <name>Forked wagon-maven-plugin that can merge snapshots metadata correctly</name>
            <layout>default</layout>
            <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
            <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
        </pluginRepository>
        <!-- @formatter:on -->
    </pluginRepositories>

    <properties>
        <!-- Suppress 'Can not resolve symbol' errors in pom editor of IntelliJ IDEA -->
        <!-- maven and plugin properties -->
        <argLine></argLine>

        <checkstyle.consoleOutput>true</checkstyle.consoleOutput>
        <checkstyle.failOnViolation>false</checkstyle.failOnViolation>
        <checkstyle.failsOnError>false</checkstyle.failsOnError>
        <checkstyle.logViolationsToConsole>true</checkstyle.logViolationsToConsole>
        <checkstyle.maxAllowedViolations>10</checkstyle.maxAllowedViolations>
        <!-- Violations to ignore. This is a comma-separated list, each value being either a rule name, a rule category or a java package name of rule class. -->
        <!-- see: https://issues.apache.org/jira/browse/MCHECKSTYLE-347?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel&focusedCommentId=16314555#comment-16314555 -->
        <checkstyle.violation.ignore>foo,bar</checkstyle.violation.ignore>
        <!-- Valid values are "error", "warning" and "info" -->
        <checkstyle.violationSeverity>warning</checkstyle.violationSeverity>

        <downloadSources>true</downloadSources>

        <!-- findbugs.effort: Min, Default, Max -->
        <!--<findbugs.effort>Default</findbugs.effort>-->
        <!--<findbugs.failOnError>false</findbugs.failOnError>-->
        <!--<findbugs.fork>true</findbugs.fork>-->
        <!--<findbugs.includeTests>false</findbugs.includeTests>-->
        <!--<findbugs.jvmArgs>-Xmx1024m -Xms128m -XX:MaxMetaspaceSize=512m</findbugs.jvmArgs>-->
        <!--<findbugs.relaxed>false</findbugs.relaxed>-->
        <!-- findbugs.threshold: High, Default, Low, Ignore, If set to "High", only high confidence bugs are reported -->
        <!--<findbugs.threshold>Default</findbugs.threshold>-->

        <linkXRef>true</linkXRef>
        <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
        <maven.compiler.showWarnings>true</maven.compiler.showWarnings>
        <maven.javadoc.failsOnError>false</maven.javadoc.failsOnError>
        <maven.javadoc.skip>false</maven.javadoc.skip>
        <maven.source.skip>false</maven.source.skip>
        <maven.test.skip>false</maven.test.skip>

        <pmd.failOnViolation>false</pmd.failOnViolation>
        <!-- Minimum Priority = 5 Maximum Priority = 0 Default value is: 5. -->
        <pmd.failurePriority>4</pmd.failurePriority>
        <pmd.maxAllowedViolations>10</pmd.maxAllowedViolations>
        <pmd.printFailingErrors>true</pmd.printFailingErrors>
        <pmd.verbose>false</pmd.verbose>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <skipITs>false</skipITs>

        <!--
        publish, preview, issue .
        sonar.analysis.mode Deprecated since SQ 6.6
        This parameter is set to preview as part of non-Developer Edition PR decoration.
        https://github.com/SonarQubeCommunity/sonar-build-breaker
        This build breaker is only available in preview modes (sonar.analysis.mode=preview or sonar.analysis.mode=issues).
        In publish mode, issue severity data is not available to post-job checkers.
        -->
        <sonar.analysis.mode>publish</sonar.analysis.mode>
        <!-- Disabled, INFO, MINOR, MAJOR, CRITICAL, BLOCKER -->
        <sonar.buildbreaker.preview.issuesSeverity>MAJOR</sonar.buildbreaker.preview.issuesSeverity>
        <sonar.buildbreaker.queryInterval>10000</sonar.buildbreaker.queryInterval>
        <sonar.buildbreaker.queryMaxAttempts>30</sonar.buildbreaker.queryMaxAttempts>
        <sonar.buildbreaker.skip>true</sonar.buildbreaker.skip>
        <sonar.exclusions>**/git.properties</sonar.exclusions>

        <surefire.fork.count>1</surefire.fork.count>
        <surefire.fork.reuse>false</surefire.fork.reuse>


        <!-- maven-build properties -->
        <checkstyle.config.location>https://raw.githubusercontent.com/ci-and-cd/maven-build/master/src/main/checkstyle/google_checks_8.10.xml</checkstyle.config.location>
        <!-- https://npm.taobao.org/mirrors/node/ -->
        <frontend.nodeDownloadRoot>https://nodejs.org/dist/</frontend.nodeDownloadRoot>
        <!-- http://registry.npm.taobao.org/npm/-/ -->
        <frontend.npmDownloadRoot>https://registry.npmjs.org/npm/-/</frontend.npmDownloadRoot>
        <git.commit.id.skip>false</git.commit.id.skip>
        <github.global.oauth2Token>${git.auth.token}</github.global.oauth2Token>
        <github.global.repositoryName>unknown</github.global.repositoryName>
        <github.global.repositoryOwner>unknown</github.global.repositoryOwner>
        <github.site.path></github.site.path>
        <pmd.ruleset.location>https://raw.githubusercontent.com/ci-and-cd/maven-build/master/src/main/pmd/pmd-ruleset-6.8.0.xml</pmd.ruleset.location>
        <site.path>${project.groupId}</site.path>


        <!-- custom properties -->
        <jacoco.reportPath>${project.build.directory}/jacoco.exec</jacoco.reportPath>
        <jacoco.itReportPath>${project.build.directory}/jacoco-it.exec</jacoco.itReportPath>

        <!-- mvn install -Dprofile="profile name" -DprofileFormat=JSON,HTML -->
        <maven-profiler-report-directory>${maven.multiModuleProjectDirectory}/.mvn/profiler-report</maven-profiler-report-directory>

        <!--<relative.parent.dir>.</relative.parent.dir>-->
        <src.generated.dir>**/generated/**</src.generated.dir>


        <!-- versions -->
        <groovy.version>2.5.6</groovy.version>
        <kotlin.version>1.3.21</kotlin.version>
        <scala.version>2.12.8</scala.version>


        <version.asm>6.2</version.asm>
        <version.javassist>3.23.1-GA</version.javassist>

        <version.animal-sniffer-maven-plugin>1.16</version.animal-sniffer-maven-plugin>
        <version.ant-contrib>20020829</version.ant-contrib>
        <version.apt-maven-plugin>1.1.3</version.apt-maven-plugin>
        <version.asciidoctor-maven-plugin>1.5.7.1</version.asciidoctor-maven-plugin>
        <version.build-helper-maven-plugin>3.0.0</version.build-helper-maven-plugin>

        <!--<version.checkstyle>6.19</version.checkstyle>-->
        <version.checkstyle>8.14</version.checkstyle>
        <version.clirr-maven-plugin>2.8</version.clirr-maven-plugin>
        <!--<version.cobertura-maven-plugin>2.7</version.cobertura-maven-plugin>-->
        <version.com.google.errorprone_error_prone_core>2.3.1</version.com.google.errorprone_error_prone_core>

        <version.dependency-check-maven>5.0.0-M2</version.dependency-check-maven>
        <!-- Fix error of multiple processes connect to same h2 in embedded mode, use mixed mode replace (AUTO_SERVER=TRUE). -->
        <!--<dependency-check-maven.connectionString>jdbc:h2:file:%s;AUTOCOMMIT=ON;LOG=0;CACHE_SIZE=65536;AUTO_SERVER=TRUE;</dependency-check-maven.connectionString>-->
        <!--<dependency-check-maven.connectionString>jdbc:h2:file:%s;AUTOCOMMIT=ON;LOG=0;CACHE_SIZE=65536;AUTO_SERVER=TRUE;MV_STORE=FALSE;</dependency-check-maven.connectionString>-->

        <version.doxia-module-markdown>1.8</version.doxia-module-markdown>

        <version.echo-maven-plugin>0.3.0</version.echo-maven-plugin>

        <!-- Findbugs is no longer maintained, please use Spotbugs -->
        <version.findbugs-annotations>3.0.1u2</version.findbugs-annotations>
        <version.findbugs-jsr305>3.0.2</version.findbugs-jsr305>
        <!--<version.findbugs-maven-plugin>3.0.5</version.findbugs-maven-plugin>-->

        <version.spotbugs>3.1.12</version.spotbugs>
        <version.spotbugs-maven-plugin>3.1.11</version.spotbugs-maven-plugin>

        <version.frontend-maven-plugin>1.7.5</version.frontend-maven-plugin>

        <version.git-commit-id-plugin>2.2.6</version.git-commit-id-plugin>
        <version.gitflow-maven-plugin>1.11.0</version.gitflow-maven-plugin>

        <!--<version.gmaven-plugin>1.0</version.gmaven-plugin>-->

        <version.groovy-maven-plugin>2.1</version.groovy-maven-plugin>
        <!-- see: http://docs.groovy-lang.org/latest/html/documentation/tools-groovyc.html -->
        <!--<version.groovy-eclipse-compiler>2.9.3-01</version.groovy-eclipse-compiler>-->
        <!--<version.groovy-eclipse-batch>2.4.15-01</version.groovy-eclipse-batch>-->
        <version.groovy-eclipse-compiler>3.3.0-01</version.groovy-eclipse-compiler>
        <version.groovy-eclipse-batch>2.5.6-01</version.groovy-eclipse-batch>

        <version.javax.activation>1.1.1</version.javax.activation>
        <version.java18>1.0</version.java18>
        <version.jdepend-maven-plugin>2.0</version.jdepend-maven-plugin>
        <version.jetbrains-annotations>16.0.3</version.jetbrains-annotations>
        <version.jsch>0.1.54</version.jsch>
        <version.lombok>1.18.6</version.lombok>

        <version.maven-antrun-plugin>1.8</version.maven-antrun-plugin>
        <version.maven-changes-plugin>2.12.1</version.maven-changes-plugin>
        <version.maven-checkstyle-plugin>3.0.0</version.maven-checkstyle-plugin>
        <version.maven-clean-plugin>3.1.0</version.maven-clean-plugin>
        <version.maven-compiler-plugin>3.8.0</version.maven-compiler-plugin>
        <version.maven-dependency-plugin>3.1.1</version.maven-dependency-plugin>
        <!--<version.maven-deploy-plugin>2.8.2</version.maven-deploy-plugin>-->
        <version.maven-deploy-plugin>3.0.0-M1</version.maven-deploy-plugin>
        <version.maven-enforcer-plugin>3.0.0-M2</version.maven-enforcer-plugin>
        <!--<version.maven-failsafe-plugin>2.21.0</version.maven-failsafe-plugin>-->
        <version.maven-failsafe-plugin>3.0.0-M3</version.maven-failsafe-plugin>
        <version.maven-gpg-plugin>1.6</version.maven-gpg-plugin>
        <!--<version.maven-install-plugin>2.5.2</version.maven-install-plugin>-->
        <version.maven-install-plugin>3.0.0-M1</version.maven-install-plugin>
        <version.maven-jar-plugin>3.1.2</version.maven-jar-plugin>
        <version.maven-javadoc-plugin>3.1.0</version.maven-javadoc-plugin>
        <version.maven-jxr-plugin>3.0.0</version.maven-jxr-plugin>
        <!-- maven-pmd-plugin:3.6   depends on net.sourceforge.pmd:pmd:5.3.5 -->
        <!-- maven-pmd-plugin:3.7   depends on net.sourceforge.pmd:pmd:5.5.1 -->
        <!-- maven-pmd-plugin:3.9.0 depends on net.sourceforge.pmd:pmd:6.4.0 -->
        <!-- maven-pmd-plugin:3.10.0 depends on net.sourceforge.pmd:pmd:6.4.0 -->
        <!-- maven-pmd-plugin:3.11.0 depends on net.sourceforge.pmd:pmd:6.8.0 -->
        <version.maven-pmd-plugin>3.11.0</version.maven-pmd-plugin>
        <version.maven-project-info-reports-plugin>3.0.0</version.maven-project-info-reports-plugin>
        <version.maven-resources-plugin>3.1.0</version.maven-resources-plugin>
        <version.maven-site-plugin>3.7.1</version.maven-site-plugin>
        <version.maven-source-plugin>3.0.1</version.maven-source-plugin>
        <!--<version.maven-surefire-plugin>2.21.0</version.maven-surefire-plugin>-->
        <version.maven-surefire-plugin>3.0.0-M3</version.maven-surefire-plugin>
        <version.maven-surefire-report-plugin>3.0.0-M3</version.maven-surefire-report-plugin>
        <version.maven-toolchains-plugin>1.1</version.maven-toolchains-plugin>

        <version.nexus-staging-maven-plugin>1.6.8</version.nexus-staging-maven-plugin>

        <version.org.codehaus.plexus_plexus-compiler-javac-errorprone>2.8.5</version.org.codehaus.plexus_plexus-compiler-javac-errorprone>
        <version.org.jacoco_jacoco>0.8.3</version.org.jacoco_jacoco>
        <!--<version.org.sonarsource.java_sonar-jacoco-listeners>5.3.0.13828</version.org.sonarsource.java_sonar-jacoco-listeners>-->
        <!--<version.org.sonarsource.java_sonar-jacoco-listeners>5.9.1.16423</version.org.sonarsource.java_sonar-jacoco-listeners>-->
        <version.org.sonarsource.java_sonar-jacoco-listeners>5.11.0.17289</version.org.sonarsource.java_sonar-jacoco-listeners>

        <version.pegdown>1.6.0</version.pegdown>
        <version.properties-maven-plugin>1.0.0</version.properties-maven-plugin>
        <version.qualinsight-mojo-cobertura-core>2.0.0</version.qualinsight-mojo-cobertura-core>


        <version.site-maven-plugin>0.13.0.OSS-M1</version.site-maven-plugin>
        <version.scala-maven-plugin>4.0.1</version.scala-maven-plugin>

        <!--<version.sonar-maven-plugin>3.4.1.1168</version.sonar-maven-plugin>-->
        <!--<version.sonar-maven-plugin>3.5.0.1254</version.sonar-maven-plugin>-->
        <version.sonar-maven-plugin>3.6.0.1398</version.sonar-maven-plugin>

        <version.taglist-maven-plugin>2.4</version.taglist-maven-plugin>
        <version.umlgraph>5.6.6</version.umlgraph>
        <version.versions-maven-plugin>2.7</version.versions-maven-plugin>

        <version.io.fabric8_docker-maven-plugin>0.28.0</version.io.fabric8_docker-maven-plugin>
        <version.com.spotify_docker-maven-plugin>1.2.0</version.com.spotify_docker-maven-plugin>
        <version.com.spotify_dockerfile-maven-plugin>1.4.10</version.com.spotify_dockerfile-maven-plugin>

        <!-- Why org.codehaus.mojo:wagon-maven-plugin:wagon-maven-plugin-2.0.1-snapshot-chshawkn-1.6?
            see: https://www.mail-archive.com/users@maven.apache.org/msg129243.html -->
        <!--http://www.mojohaus.org/wagon-maven-plugin/usage.html-->
        <!--http://www.mojohaus.org/wagon-maven-plugin/-->
        <version.wagon-maven-plugin>wagon-maven-plugin-2.0.1-snapshot-chshawkn-1.6</version.wagon-maven-plugin>
        <version.wagon-ssh>3.0.0</version.wagon-ssh>
        <version.wagon-webdav-jackrabbit>3.0.0</version.wagon-webdav-jackrabbit>
        <!--<version.wrapper-maven-plugin>0.0.4</version.wrapper-maven-plugin>-->

        <custom.checkstyle.config.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/checkstyle/google_checks_8.10.xml</custom.checkstyle.config.location>
        <custom.docker.registry.url>https://docker.io/v2/</custom.docker.registry.url>
        <custom.frontend.nodeDownloadRoot>https://npm.taobao.org/mirrors/node/</custom.frontend.nodeDownloadRoot>
        <custom.frontend.npmDownloadRoot>http://registry.npm.taobao.org/npm/-/</custom.frontend.npmDownloadRoot>
        <!--<custom.nexus2>https://oss.sonatype.org/</custom.nexus2>-->
        <custom.nexus3>https://nexus3.infra.top/nexus/</custom.nexus3>
        <custom.pmd.ruleset.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/pmd/pmd-ruleset-6.8.0.xml</custom.pmd.ruleset.location>
        <custom.sonar.host.url>https://sonarqube.com</custom.sonar.host.url>

        <ossrh.checkstyle.config.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/checkstyle/google_checks_8.10.xml</ossrh.checkstyle.config.location>
        <ossrh.docker.registry.url>https://docker.io/v2/</ossrh.docker.registry.url>
        <ossrh.frontend.nodeDownloadRoot>https://npm.taobao.org/mirrors/node/</ossrh.frontend.nodeDownloadRoot>
        <ossrh.frontend.npmDownloadRoot>http://registry.npm.taobao.org/npm/-/</ossrh.frontend.npmDownloadRoot>
        <ossrh.nexus2>https://oss.sonatype.org/</ossrh.nexus2>
        <ossrh.nexus3>https://nexus3.infra.top/nexus/</ossrh.nexus3>
        <ossrh.pmd.ruleset.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/pmd/pmd-ruleset-6.8.0.xml</ossrh.pmd.ruleset.location>
        <ossrh.sonar.host.url>https://sonarqube.com</ossrh.sonar.host.url>

        <local.checkstyle.config.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/checkstyle/google_checks_8.10.xml</local.checkstyle.config.location>
        <local.docker.registry.url>http://nexus3:5000/v2/</local.docker.registry.url>
        <local.frontend.nodeDownloadRoot>https://npm.taobao.org/mirrors/node/</local.frontend.nodeDownloadRoot>
        <local.frontend.npmDownloadRoot>http://registry.npm.taobao.org/npm/-/</local.frontend.npmDownloadRoot>
        <!--<local.nexus2>http://nexus2:28081/nexus/</local.nexus2>-->
        <local.nexus3>http://nexus3:38081/nexus/</local.nexus3>
        <local.sonar.host.url>http://sonarqube:9000</local.sonar.host.url>
        <local.pmd.ruleset.location>https://github.com/ci-and-cd/maven-build/raw/master/src/main/pmd/pmd-ruleset-6.8.0.xml</local.pmd.ruleset.location>
    </properties>

    <build>
        <extensions>
            <!-- for the dependency type 'docker-info' to be supported -->
            <extension>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-extension</artifactId>
                <version>${version.com.spotify_dockerfile-maven-plugin}</version>
            </extension>
        </extensions>
        <pluginManagement>
            <plugins>
                <!-- @formatter:off -->
                <plugin><groupId>com.amashchenko.maven.plugin</groupId><artifactId>gitflow-maven-plugin</artifactId><version>${version.gitflow-maven-plugin}</version></plugin>
                <plugin>
                    <groupId>com.github.sviperll</groupId>
                    <artifactId>coreext-maven-plugin</artifactId>
                    <version>0.23</version>
                    <configuration>
                        <!-- Required core extensions: -->
                        <extensions combine.children="append">
                        </extensions>
                    </configuration>
                </plugin>
                <plugin><groupId>com.mysema.maven</groupId><artifactId>apt-maven-plugin</artifactId><version>${version.apt-maven-plugin}</version></plugin>
                <plugin><groupId>com.soebes.maven.plugins</groupId><artifactId>echo-maven-plugin</artifactId><version>${version.echo-maven-plugin}</version></plugin>
                <!-- Use groovy-maven-plugin for groovy scripts to replace gmaven-plugin -->
                <!--<plugin><groupId>org.codehaus.groovy.maven</groupId><artifactId>gmaven-plugin</artifactId><version>${version.gmaven-plugin}</version></plugin>-->
                <plugin>
                    <groupId>org.codehaus.gmaven</groupId><artifactId>groovy-maven-plugin</artifactId><version>${version.groovy-maven-plugin}</version>
                    <dependencies><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy</artifactId><classifier>indy</classifier><version>${groovy.version}</version></dependency></dependencies>
                </plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>${version.build-helper-maven-plugin}</version></plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>${version.properties-maven-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId><version>${version.maven-antrun-plugin}</version>
                    <dependencies>
                        <dependency><groupId>ant-contrib</groupId><artifactId>ant-contrib</artifactId><version>${version.ant-contrib}</version></dependency>
                    </dependencies>
                </plugin>
                <plugin><artifactId>maven-changes-plugin</artifactId><version>${version.maven-changes-plugin}</version></plugin>
                <plugin><artifactId>maven-clean-plugin</artifactId><version>${version.maven-clean-plugin}</version></plugin>
                <plugin><artifactId>maven-compiler-plugin</artifactId><version>${version.maven-compiler-plugin}</version></plugin>
                <plugin><artifactId>maven-dependency-plugin</artifactId><version>${version.maven-dependency-plugin}</version></plugin>
                <plugin><artifactId>maven-deploy-plugin</artifactId><version>${version.maven-deploy-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-enforcer-plugin</artifactId><version>${version.maven-enforcer-plugin}</version>
                    <configuration>
                        <rules>
                            <!-- Note: travis-ci uses old maven version  -->
                            <requireMavenVersion><version>[3.5.3,)</version></requireMavenVersion>
                            <!--requireUpperBoundDeps-->
                            <dependencyConvergence><uniqueVersions>false</uniqueVersions></dependencyConvergence>
                            <banTransitiveDependencies>
                                <excludes><exclude>*</exclude></excludes>
                                <includes>
                                    <!--<include>*:commons-logging</include>-->
                                </includes>
                            </banTransitiveDependencies>
                            <bannedDependencies>
                                <includes>
                                    <!--<include>*:commons-logging</include>-->
                                </includes>
                            </bannedDependencies>
                        </rules>
                        <fail>true</fail>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId><version>${version.maven-failsafe-plugin}</version>
                    <configuration>
                        <argLine>${jacoco.agent.it.arg} ${argLine}</argLine>
                        <skip>${skipITs}</skip>
                        <includes>
                            <include>**/*IT.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/Abstract*.java</exclude>
                            <exclude>**/Base*.java</exclude>
                            <exclude>**/deprecated/*.java</exclude>
                            <exclude>**/Deprecated*.java</exclude>
                            <exclude>**/*Test.java</exclude>
                            <exclude>**/*Tests.java</exclude>
                            <exclude>**/Test*.java</exclude>
                            <exclude>**/*TestCase.java</exclude>
                            <exclude>**/*Documentation.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin><artifactId>maven-gpg-plugin</artifactId><version>${version.maven-gpg-plugin}</version></plugin>
                <plugin><artifactId>maven-install-plugin</artifactId><version>${version.maven-install-plugin}</version></plugin>
                <plugin><artifactId>maven-jar-plugin</artifactId><version>${version.maven-jar-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId><version>${version.maven-javadoc-plugin}</version>
                    <configuration>
                        <additionalJOption>-J-Duser.language=en</additionalJOption>
                        <!--<additionalOptions>-views -all</additionalOptions>-->
                        <charset>${project.build.sourceEncoding}</charset>
                        <!--<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>-->
                        <!-- UML Graph needs to match HTML tag to insert images into javadoc -->
                        <!--<docletArtifact><groupId>org.umlgraph</groupId><artifactId>umlgraph</artifactId><version>${version.umlgraph}</version></docletArtifact>-->
                        <doclint>none</doclint>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <failOnError>${maven.javadoc.failsOnError}</failOnError>
                        <notimestamp>true</notimestamp>
                        <skip>${maven.javadoc.skip}</skip>
                        <useStandardDocletOptions>true</useStandardDocletOptions>
                    </configuration>
                </plugin>
                <plugin>
                    <!-- https://maven.apache.org/plugins/maven-source-plugin/test-jar-no-fork-mojo.html -->
                    <!-- Use 'jar-no-fork' not 'jar' to avoid trigger default lifecycle binding of @Execute( phase = LifecyclePhase.GENERATE_SOURCES ) -->
                    <artifactId>maven-source-plugin</artifactId><version>${version.maven-source-plugin}</version>
                    <configuration>
                        <skipSource>${maven.source.skip}</skipSource>
                    </configuration>
                </plugin>
                <plugin><artifactId>maven-resources-plugin</artifactId><version>${version.maven-resources-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId><version>${version.maven-surefire-plugin}</version>
                    <!--<configuration><skipTests>${skipTests}</skipTests></configuration>-->
                    <configuration>
                        <argLine>${jacoco.agent.ut.arg} ${argLine}</argLine>
                        <forkCount>${surefire.fork.count}</forkCount>
                        <reuseForks>${surefire.fork.reuse}</reuseForks>
                        <includes>
                            <include>**/*Test.java</include>
                            <include>**/*Tests.java</include>
                            <include>**/Test*.java</include>
                            <include>**/*TestCase.java</include>
                            <include>**/*Documentation.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/Abstract*.java</exclude>
                            <exclude>**/Base*.java</exclude>
                            <exclude>**/deprecated/*.java</exclude>
                            <exclude>**/Deprecated*.java</exclude>
                            <exclude>**/*IT.java</exclude>
                        </excludes>
                        <useSystemClassLoader>false</useSystemClassLoader>
                    </configuration>
                    <dependencies>
                        <dependency><groupId>org.ow2.asm</groupId><artifactId>asm</artifactId><version>${version.asm}</version></dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <artifactId>maven-toolchains-plugin</artifactId><version>${version.maven-toolchains-plugin}</version>
                    <configuration>
                        <toolchains><jdk><version>default</version><!--<vendor>oracle</vendor>--></jdk></toolchains>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId><version>${version.maven-project-info-reports-plugin}</version>
                </plugin>
                <!-- @formatter:on -->

                <!-- @formatter:off -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${version.maven-site-plugin}</version>
                    <configuration>
                        <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
                        <outputEncoding>${project.reporting.outputEncoding}</outputEncoding>
                    </configuration>
                    <dependencies>
                        <dependency><groupId>org.apache.maven.doxia</groupId><artifactId>doxia-module-markdown</artifactId><version>${version.doxia-module-markdown}</version></dependency>
                        <dependency><groupId>org.pegdown</groupId><artifactId>pegdown</artifactId><version>${version.pegdown}</version></dependency>
                        <dependency><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-webdav-jackrabbit</artifactId><version>${version.wagon-webdav-jackrabbit}</version></dependency>
                        <!-- org.apache.maven.wagon:wagon-ssh support ssh/scp and password only -->
                        <dependency>
                            <groupId>org.apache.maven.wagon</groupId>
                            <artifactId>wagon-ssh</artifactId>
                            <version>${version.wagon-ssh}</version>
                            <exclusions>
                                <exclusion><groupId>com.jcraft</groupId><artifactId>jsch</artifactId></exclusion>
                            </exclusions>
                        </dependency>
                        <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>${version.jsch}</version></dependency>
                        <!-- support for sshexe/scpexe and privateKey -->
                        <dependency><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh-external</artifactId><version>${version.wagon-ssh}</version></dependency>
                        <!-- provide org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider -->
                        <dependency>
                            <groupId>org.apache.maven.wagon</groupId>
                            <artifactId>wagon-ssh-common</artifactId>
                            <version>${version.wagon-ssh}</version>
                            <exclusions>
                                <exclusion><groupId>org.codehaus.plexus</groupId><artifactId>plexus-utils</artifactId></exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                <!-- @formatter:on -->

                <!-- @formatter:off -->
                <plugin><groupId>org.asciidoctor</groupId><artifactId>asciidoctor-maven-plugin</artifactId><version>${version.asciidoctor-maven-plugin}</version></plugin>
                <plugin>
                    <groupId>org.owasp</groupId><artifactId>dependency-check-maven</artifactId><version>${version.dependency-check-maven}</version>
                    <!--<configuration><connectionString>${dependency-check-maven.connectionString}</connectionString></configuration>-->
                </plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>animal-sniffer-maven-plugin</artifactId><version>${version.animal-sniffer-maven-plugin}</version></plugin>
                <!--<plugin>-->
                    <!--<groupId>org.codehaus.mojo</groupId><artifactId>findbugs-maven-plugin</artifactId><version>${version.findbugs-maven-plugin}</version>-->
                    <!--<configuration>-->
                        <!--<classFilesDirectory>${project.build.outputDirectory}</classFilesDirectory>-->
                        <!--<effort>${findbugs.effort}</effort>-->
                        <!--&lt;!&ndash;<excludeFilterFile>file:///${project.basedir}/${relative.parent.dir}/rulesets/findbugs-exclude-rules.xml</excludeFilterFile>&ndash;&gt;-->
                        <!--<failOnError>${findbugs.failOnError}</failOnError>-->
                        <!--<fork>${findbugs.fork}</fork>-->
                        <!--&lt;!&ndash;<includeFilterFile>file:///${project.basedir}/${relative.parent.dir}/rulesets/findbugs-rules.xml</includeFilterFile>&ndash;&gt;-->
                        <!--<includeTests>${findbugs.includeTests}</includeTests>-->
                        <!--<jvmArgs>${findbugs.jvmArgs}</jvmArgs>-->
                        <!--<relaxed>${findbugs.relaxed}</relaxed>-->
                        <!--<skip>${notGenerateReports}</skip>-->
                        <!--<threshold>${findbugs.threshold}</threshold>-->
                    <!--</configuration>-->
                <!--</plugin>-->
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>${version.spotbugs-maven-plugin}</version>
                    <dependencies>
                        <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
                        <dependency>
                            <groupId>com.github.spotbugs</groupId>
                            <artifactId>spotbugs</artifactId>
                            <version>${version.spotbugs}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>jdepend-maven-plugin</artifactId><version>${version.jdepend-maven-plugin}</version></plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>taglist-maven-plugin</artifactId><version>${version.taglist-maven-plugin}</version></plugin>
                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId><version>${version.versions-maven-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.maven-checkstyle-plugin}</version>
                    <configuration>
                        <configLocation>${checkstyle.config.location}</configLocation>
                        <consoleOutput>${checkstyle.consoleOutput}</consoleOutput>
                        <encoding>${project.reporting.outputEncoding}</encoding>
                        <excludes>${src.generated.dir}</excludes>
                        <failsOnError>${checkstyle.failsOnError}</failsOnError>
                        <maxAllowedViolations>${checkstyle.maxAllowedViolations}</maxAllowedViolations>
                        <skip>${notGenerateReports}</skip>
                        <sourceDirectories>
                            <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                        </sourceDirectories>
                    </configuration>
                    <dependencies>
                        <dependency><groupId>com.puppycrawl.tools</groupId><artifactId>checkstyle</artifactId><version>${version.checkstyle}</version></dependency>
                    </dependencies>
                </plugin>
                <plugin><artifactId>maven-jxr-plugin</artifactId><version>${version.maven-jxr-plugin}</version></plugin>
                <plugin>
                    <artifactId>maven-pmd-plugin</artifactId><version>${version.maven-pmd-plugin}</version>
                    <configuration>
                        <!-- Dont include clover instrumented src, when pmd  -->
                        <excludeRoots><excludeRoot>${project.build.directory}/clover/src</excludeRoot></excludeRoots>
                        <excludes><exclude>${src.generated.dir}</exclude></excludes>
                        <failOnViolation>${pmd.failOnViolation}</failOnViolation>
                        <linkXRef>${linkXRef}</linkXRef>
                        <printFailingErrors>${pmd.printFailingErrors}</printFailingErrors>
                        <rulesets><ruleset>${pmd.ruleset.location}</ruleset></rulesets>
                        <skip>${notGenerateReports}</skip>
                        <!--<targetJdk>${maven.compiler.target}</targetJdk>-->
                        <verbose>${pmd.verbose}</verbose>
                    </configuration>
                </plugin>
                <plugin><artifactId>maven-surefire-report-plugin</artifactId><version>${version.maven-surefire-report-plugin}</version></plugin>

                <plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>${version.nexus-staging-maven-plugin}</version></plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>${version.git-commit-id-plugin}</version>
                    <configuration>
                        <commitIdGenerationMode>flat</commitIdGenerationMode>
                        <dotGitDirectory>${maven.multiModuleProjectDirectory}/.git</dotGitDirectory>
                        <failOnNoGitDirectory>false</failOnNoGitDirectory>
                        <failOnUnableToExtractRepoInfo>true</failOnUnableToExtractRepoInfo>
                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                        <!--generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename-->
                        <generateGitPropertiesFilename>src/main/resources/git.properties</generateGitPropertiesFilename>
                        <injectAllReactorProjects>true</injectAllReactorProjects>
                        <prefix>git</prefix>
                        <skip>${git.commit.id.skip}</skip>
                        <skipPoms>false</skipPoms>
                        <verbose>false</verbose>
                    </configuration>
                </plugin>

                <plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>${version.wagon-maven-plugin}</version></plugin>

                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>${version.com.spotify_dockerfile-maven-plugin}</version>
                    <configuration>
                        <buildArgs>
                            <ARTIFACT_REPOSITORY>${nexus3}</ARTIFACT_REPOSITORY>
                            <BUILD_TIMESTAMP>${maven.build.timestamp}</BUILD_TIMESTAMP>
                            <DOCKER_REGISTRY>${docker.registry}</DOCKER_REGISTRY>
                            <GIT_BRANCH>${git.branch}</GIT_BRANCH>
                            <GIT_COMMIT_ID>${git.commit.id}</GIT_COMMIT_ID>
                            <GIT_COMMIT_ID_ABBREV>${git.commit.id.abbrev}</GIT_COMMIT_ID_ABBREV>
                            <GIT_COMMIT_TIME>${git.commit.time}</GIT_COMMIT_TIME>
                            <GIT_REMOTE_ORIGIN_URL>${git.remote.origin.url}</GIT_REMOTE_ORIGIN_URL>
                            <JAR_FILE>${project.build.finalName}-exec.jar</JAR_FILE>
                            <PROJECT_ARTIFACTID>${project.artifactId}</PROJECT_ARTIFACTID>
                            <PROJECT_GROUPID>${project.groupId}</PROJECT_GROUPID>
                            <PROJECT_VERSION>${project.version}</PROJECT_VERSION>
                        </buildArgs>
                        <tag>${project.version}</tag>
                        <useMavenSettingsForAuth>${dockerfile.useMavenSettingsForAuth}</useMavenSettingsForAuth>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>javax.activation</groupId>
                            <artifactId>activation</artifactId>
                            <version>${version.javax.activation}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <!--
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>${version.com.spotify_docker-maven-plugin}</version>
                    <configuration>
                        <imageTags>
                            <imageTag>${project.version}</imageTag>
                        </imageTags>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}.jar</include>
                                <include>${project.build.finalName}-exec.jar</include>
                            </resource>
                        </resources>
                        <dockerDirectory>${project.basedir}</dockerDirectory>
                        <noCache>true</noCache>
                    </configuration>
                    <executions>
                        <execution>
                            <id>remove-image</id>
                            <phase>clean</phase>
                            <goals>
                                <goal>removeImage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                -->
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>${version.io.fabric8_docker-maven-plugin}</version>
                </plugin>
                <!-- @formatter:on -->
            </plugins>
        </pluginManagement>
        <plugins>
            <!-- @formatter:off -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <!-- see: http://www.beanshell.org/ -->
                    <!--
                    <execution>
                        <id>negate-generateReports-on-pre_clean</id>
                        <phase>pre-clean</phase>
                        <goals><goal>bsh-property</goal></goals>
                        <configuration>
                            <source>
                                value = project.getProperties().getProperty("generateReports", session.getUserProperties().getProperty("generateReports"));
                                notGenerateReports = value == null || value.equals("") ? false : !Boolean.parseBoolean(value);
                            </source>
                            <properties><property>notGenerateReports</property></properties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>negate-generateReports-on-initialize</id>
                        <phase>initialize</phase>
                        <goals><goal>bsh-property</goal></goals>
                        <configuration>
                            <source>
                                value = project.getProperties().getProperty("generateReports", session.getUserProperties().getProperty("generateReports"));
                                notGenerateReports = value == null || value.equals("") ? false : !Boolean.parseBoolean(value);
                            </source>
                            <properties><property>notGenerateReports</property></properties>
                        </configuration>
                    </execution>
                    -->
                    <execution>
                        <id>gitRef-on-initialize</id>
                        <phase>initialize</phase>
                        <goals><goal>bsh-property</goal></goals>
                        <configuration>
                            <source>
                                gitRef = session.getUserProperties().getProperty("git.ref.name", System.getProperty("git.ref.name", project.getProperties().getProperty("git.ref.name")));
                            </source>
                            <properties><property>gitRef</property></properties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>releaseRef</id>
                        <phase>initialize</phase>
                        <goals><goal>bsh-property</goal></goals>
                        <configuration>
                            <source>
                                gitRef = project.getProperties().getProperty("gitRef");
                                releaseRef = gitRef == null || gitRef.equals("") ? false : gitRef.startsWith("hotfix/") || gitRef.startsWith("release/") || gitRef.startsWith("support/");
                            </source>
                            <properties><property>releaseRef</property></properties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>snapshotRef</id>
                        <phase>initialize</phase>
                        <goals><goal>bsh-property</goal></goals>
                        <configuration>
                            <source>
                                gitRef = project.getProperties().getProperty("gitRef");
                                snapshotRef = gitRef == null || gitRef.equals("") ? false : gitRef.equals("develop") || gitRef.startsWith("feature/");
                            </source>
                            <properties><property>snapshotRef</property></properties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- @formatter:on -->
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>echo-bsh-properties-on-pre_clean</id>
                        <phase>pre-clean</phase>
                        <goals><goal>run</goal></goals>
                        <configuration>
                            <target>
                                <echo>generateReports: '${generateReports}'</echo>
                                <echo>notGenerateReports: '${notGenerateReports}'</echo>
                                <echo>releaseRef: '${releaseRef}'</echo>
                                <echo>snapshotRef: '${snapshotRef}'</echo>
                            </target>
                        </configuration>
                    </execution>
                    <execution>
                        <id>echo-bsh-properties-on-initialize</id>
                        <phase>initialize</phase>
                        <goals><goal>run</goal></goals>
                        <configuration>
                            <target>
                                <echo>generateReports: '${generateReports}'</echo>
                                <echo>notGenerateReports: '${notGenerateReports}'</echo>
                                <echo>releaseRef: '${releaseRef}'</echo>
                                <echo>snapshotRef: '${snapshotRef}'</echo>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- see: https://github.com/KimJejun/gitflow-maven-plugin -->
            <plugin>
                <groupId>com.amashchenko.maven.plugin</groupId>
                <artifactId>gitflow-maven-plugin</artifactId>
                <configuration>
                    <tychoBuild>false</tychoBuild>

                    <installProject>false</installProject>
                    <verbose>false</verbose>

                    <gitFlowConfig>
                        <productionBranch>master</productionBranch>
                        <developmentBranch>develop</developmentBranch>
                        <featureBranchPrefix>feature/</featureBranchPrefix>
                        <releaseBranchPrefix>release/</releaseBranchPrefix>
                        <hotfixBranchPrefix>hotfix/</hotfixBranchPrefix>
                        <supportBranchPrefix>support/</supportBranchPrefix>
                        <versionTagPrefix>v</versionTagPrefix>
                    </gitFlowConfig>

                    <commitMessages>
                        <featureStartMessage>updating versions for feature branch</featureStartMessage>
                        <featureFinishMessage>updating versions for development branch</featureFinishMessage>

                        <hotfixStartMessage>updating versions for hotfix</hotfixStartMessage>
                        <hotfixFinishMessage>updating for next development version</hotfixFinishMessage>

                        <releaseStartMessage>updating versions for release</releaseStartMessage>
                        <releaseFinishMessage>updating for next development version</releaseFinishMessage>

                        <tagHotfixMessage>tagging hotfix</tagHotfixMessage>
                        <tagReleaseMessage>tagging release</tagReleaseMessage>
                    </commitMessages>
                </configuration>
            </plugin>
            <!-- @formatter:off -->
            <!-- see: https://github.com/google/error-prone -->
            <!-- override plexus-compiler-javac-errorprone's dependency on Error Prone with the latest version -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>
                    <!-- javac-with-errorprone not working on Eclipse m2e -->
                    <!--<compilerId>javac-with-errorprone</compilerId>-->
                    <!--<forceJavacCompilerUse>true</forceJavacCompilerUse>-->
                </configuration>
                <dependencies>
                    <dependency><groupId>org.codehaus.plexus</groupId><artifactId>plexus-compiler-javac-errorprone</artifactId><version>${version.org.codehaus.plexus_plexus-compiler-javac-errorprone}</version></dependency>
                    <dependency><groupId>com.google.errorprone</groupId><artifactId>error_prone_core</artifactId><version>${version.com.google.errorprone_error_prone_core}</version></dependency>
                </dependencies>
            </plugin>
            <!-- @formatter:on -->

            <!-- use mvn -N io.takari:maven:0.7.6:wrapper -Dmaven=3.6.1 instead of mvn wrapper:wrapper -->
            <!-- mvn wrapper:wrapper -->
            <!--<plugin>
                <groupId>com.rimerosolutions.maven.plugins</groupId><artifactId>wrapper-maven-plugin</artifactId><version>${version.wrapper-maven-plugin}</version>
                <configuration><mavenVersion>3.6.0</mavenVersion></configuration>
            </plugin>-->
        </plugins>

        <!--extensions>
        </extensions-->
    </build>

    <dependencyManagement>
        <!-- @formatter:off -->
        <dependencies>
            <dependency><groupId>com.google.code.findbugs</groupId><artifactId>annotations</artifactId><version>${version.findbugs-annotations}</version></dependency>
            <dependency><groupId>com.google.code.findbugs</groupId><artifactId>jsr305</artifactId><version>${version.findbugs-jsr305}</version></dependency>
            <dependency><groupId>org.jetbrains</groupId><artifactId>annotations</artifactId><version>${version.jetbrains-annotations}</version></dependency>
        </dependencies>
        <!-- @formatter:on -->
    </dependencyManagement>

    <modules>
    </modules>

    <profiles>
        <!-- @formatter:off -->
        <!--<profile>
            <id>attach-javadocs-and-test_javadocs-if-property-maven_javadoc_skip-absent</id>
            <activation><property><name>!maven.javadoc.skip</name></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <configuration><skip>${maven.javadoc.skip}</skip></configuration>
                                <id>attach-javadocs</id><goals><goal>jar</goal></goals><phase>prepare-package</phase>
                            </execution>
                            <execution>
                                <configuration><skip>${maven.javadoc.skip}</skip></configuration>
                                <id>attach-test-javadocs</id><goals><goal>test-jar</goal></goals><phase>prepare-package</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>-->
        <profile>
            <id>attach-javadocs-and-test_javadocs-if-property-maven_javadoc_skip-is-false</id>
            <activation><property><name>maven.javadoc.skip</name><value>false</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <configuration><skip>${maven.javadoc.skip}</skip></configuration>
                                <id>attach-javadocs</id><goals><goal>jar</goal></goals><!--<phase>prepare-package</phase>-->
                            </execution>
                            <execution>
                                <configuration><skip>${maven.javadoc.skip}</skip></configuration>
                                <id>attach-test-javadocs</id><goals><goal>test-jar</goal></goals><!--<phase>prepare-package</phase>-->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--<profile>
            <id>attach-source-if-property-maven_source_skip-absent</id>
            <activation><property><name>!maven.source.skip</name></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id><goals><goal>jar-no-fork</goal></goals><phase>prepare-package</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>-->
        <profile>
            <id>attach-source-if-property-maven_source_skip-is-false</id>
            <activation><property><name>maven.source.skip</name><value>false</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id><goals><goal>jar-no-fork</goal></goals><!--<phase>prepare-package</phase>-->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--<profile>
            <id>maven-enforcer-plugin-executions-if-property-enforcer_skip-absent</id>
            <activation><property><name>!enforcer.skip</name></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>enforce-banned-dependencies</id><goals><goal>enforce</goal></goals><phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>-->
        <profile>
            <id>maven-enforcer-plugin-executions-if-property-enforcer_skip-is-false</id>
            <activation><property><name>enforcer.skip</name><value>false</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>enforce-banned-dependencies</id><goals><goal>enforce</goal></goals><!--<phase>validate</phase>-->
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--<profile>
            <id>maven-failsafe-plugin-executions-if-property-maven_integrationtest_skip-absent</id>
            <activation><property><name>!skipITs</name></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>failsafe-integration-test</id><goals><goal>integration-test</goal></goals><phase>integration-test</phase>
                            </execution>
                            <execution>
                                <id>failsafe-verify</id><goals><goal>verify</goal></goals><phase>post-integration-test</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>-->
        <profile>
            <id>maven-failsafe-plugin-executions-if-property-maven_integrationtest_skip-is-false</id>
            <activation><property><name>skipITs</name><value>false</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>failsafe-integration-test</id><goals><goal>integration-test</goal></goals><phase>integration-test</phase>
                            </execution>
                            <execution>
                                <id>failsafe-verify</id><phase>post-integration-test</phase><goals><goal>verify</goal></goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--<profile>
            <id>maven-surefire-plugin-executions-if-skiptests-absent</id>
            <activation><property><name>!skipTests</name></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution><id>default-test</id><goals><goal>test</goal></goals></execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>-->
        <profile>
            <id>maven-surefire-plugin-executions-if-skiptests-is-false</id>
            <activation><property><name>skipTests</name><value>false</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution><id>default-test</id><goals><goal>test</goal></goals></execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>clean-file-basedir-src-main-resources-git_properties-if-present</id>
            <activation><file><exists>${basedir}/src/main/resources/git.properties</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>auto-clean-git-properties</id>
                                <phase>clean</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <delete failonerror="false"><fileset dir="${project.basedir}/src/main/resources" includes="git.properties"/></delete>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>notGenerateReports</id>
            <activation><property><name>notGenerateReports</name><value>true</value></property></activation>
            <properties>
                <checkstyle.failOnViolation>false</checkstyle.failOnViolation>
                <checkstyle.failsOnError>false</checkstyle.failsOnError>
                <!--<findbugs.failOnError>false</findbugs.failOnError>-->
                <maven.javadoc.failsOnError>false</maven.javadoc.failsOnError>
                <pmd.failOnViolation>false</pmd.failOnViolation>
                <sonar.buildbreaker.skip>true</sonar.buildbreaker.skip>
            </properties>
        </profile>
        <!--<profile>-->
            <!--<id>enable-findbugs-exclude-filter</id>-->
            <!--<activation><file><exists>${basedir}/findbugs-exclude-filter.xml</exists></file></activation>-->
            <!--<build>-->
                <!--<pluginManagement>-->
                    <!--<plugins>-->
                        <!--<plugin>-->
                            <!--<groupId>org.codehaus.mojo</groupId>-->
                            <!--<artifactId>findbugs-maven-plugin</artifactId>-->
                            <!--<configuration>-->
                                <!--<excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>-->
                            <!--</configuration>-->
                        <!--</plugin>-->
                    <!--</plugins>-->
                <!--</pluginManagement>-->
            <!--</build>-->
        <!--</profile>-->

        <profile>
            <id>git-commit-id</id>
            <!-- works on both git submodule and normal local repository -->
            <activation><file><exists>${maven.multiModuleProjectDirectory}/.git</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>pl.project13.maven</groupId><artifactId>git-commit-id-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>get-the-git-infos</id>
                                <phase>initialize</phase>
                                <goals><goal>revision</goal></goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- see: https://github.com/SonarSource/sonar-scanning-examples -->
            <id>sonar</id>
            <!-- if sonar=true, jacoco should be set to true also -->
            <activation><property><name>sonar</name><value>true</value></property></activation>
            <properties>
                <!-- see: https://docs.sonarqube.org/display/SONAR/Analysis+Parameters -->
                <!--<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>-->

                <sonar.groovy.binaries>target/classes</sonar.groovy.binaries>

                <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
                <sonar.jacoco.reportPath>${jacoco.reportPath}</sonar.jacoco.reportPath>
                <sonar.jacoco.itReportPath>${jacoco.itReportPath}</sonar.jacoco.itReportPath>

                <!-- sonar.java.binaries issue when force language java  -->
                <!--<sonar.language>java</sonar.language>-->

                <sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>

                <sonar.sources>.</sonar.sources>
                <!--
                Warning
                Specifying module-relative paths at project level in the property 'sonar.inclusions' is deprecated.
                To continue matching files like 'build-docker/pom.xml',
                update this property so that patterns refer to project-relative paths.
                -->
                <sonar.inclusions>pom.xml,src/main/**</sonar.inclusions>
                <sonar.test.inclusions>src/test/**</sonar.test.inclusions>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <!-- see: https://github.com/SonarSource/sonar-scanner-maven -->
                        <plugin>
                            <groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>${version.sonar-maven-plugin}</version></plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <!-- see: https://dzone.com/articles/integration-jenkins-jacoco-and-sonarqube -->
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <!-- Specific to generate mapping between tests and covered code -->
                            <properties>
                                <property><name>listener</name><value>org.sonar.java.jacoco.JUnitListener</value></property>
                            </properties>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <skip>${skipITs}</skip>
                            <properties>
                                <property><name>listener</name><value>org.sonar.java.jacoco.JUnitListener</value></property>
                            </properties>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals><goal>sonar</goal></goals>
                            </execution>
                        </executions>
                </plugin>
                </plugins>
            </build>
            <dependencies>
                <!-- sonar-jacoco-listeners's version should match version of sonar-java-plugin -->
                <dependency><artifactId>sonar-jacoco-listeners</artifactId><groupId>org.sonarsource.java</groupId><version>${version.org.sonarsource.java_sonar-jacoco-listeners}</version><scope>test</scope></dependency>
            </dependencies>
        </profile>

        <!-- http://www.eclemma.org/jacoco/trunk/doc/maven.html -->
        <!-- see: https://github.com/timp/juice -->
        <!-- see: https://github.com/jacoco/jacoco/issues/409 -->
        <!-- https://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/ -->
        <profile>
            <id>jacoco-build</id>
            <activation><property><name>jacoco</name><value>true</value></property></activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>${version.org.jacoco_jacoco}</version></plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-prepare-agent</id>
                                <goals><goal>prepare-agent</goal></goals>
                                <phase>test-compile</phase>
                                <!--<phase>process-test-classes</phase>-->
                                <configuration><propertyName>jacoco.agent.ut.arg</propertyName><skip>${maven.test.skip}</skip><!--<destFile>${project.build.directory}/jacoco.exec</destFile>--></configuration>
                            </execution>
                            <execution>
                                <id>default-prepare-agent-integration</id>
                                <goals><goal>prepare-agent-integration</goal></goals>
                                <phase>pre-integration-test</phase>
                                <configuration><append>true</append><propertyName>jacoco.agent.it.arg</propertyName><skip>${skipITs}</skip><!--<destFile>${project.build.directory}/jacoco-it.exec</destFile>--></configuration>
                            </execution>
                            <!--<execution><id>default-report</id><goals><goal>report</goal></goals><phase>test</phase></execution>-->
                            <!--<execution><id>default-report-integration</id><goals><goal>report-integration</goal></goals><phase>post-integration-test</phase></execution>-->
                            <execution>
                                <id>merge</id>
                                <phase>pre-site</phase>
                                <goals><goal>merge</goal></goals>
                                <configuration>
                                    <destFile>${project.build.directory}/jacoco-combined.exec</destFile>
                                    <fileSets>
                                        <fileSet>
                                            <directory>${project.build.directory}</directory>
                                            <includes><include>jacoco.exec</include><include>jacoco-it.exec</include></includes>
                                        </fileSet>
                                    </fileSets>
                                    <skip>${skipITs}</skip>
                                </configuration>
                            </execution>
                            <execution>
                                <id>composite</id>
                                <phase>pre-site</phase>
                                <goals><goal>report</goal></goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/jacoco-combined.exec</dataFile>
                                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-combined</outputDirectory>
                                    <skip>${skipITs}</skip>
                                    <title>Combined</title>
                                </configuration>
                            </execution>
                            <execution>
                                <id>default-check</id>
                                <goals><goal>check</goal></goals>
                                <configuration>
                                    <haltOnFailure>false</haltOnFailure>
                                    <rules>
                                        <rule implementation="org.jacoco.maven.RuleConfiguration">
                                            <element>BUNDLE</element>
                                            <limits>
                                                <limit implementation="org.jacoco.report.check.Limit"><counter>COMPLEXITY</counter><value>COVEREDRATIO</value><minimum>0.60</minimum></limit>
                                            </limits>
                                        </rule>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <dependencies>
                <dependency><groupId>org.jacoco</groupId><artifactId>org.jacoco.agent</artifactId><classifier>runtime</classifier><scope>test</scope><version>${version.org.jacoco_jacoco}</version></dependency>
            </dependencies>
        </profile>

        <!-- net.sourceforge.cobertura:cobertura is for cobertura-maven-plugin and qualinsight-mojo-cobertura -->
        <!-- force junit:junit version resolve cobertura transitive depends on old version, and SpringJUnit4ClassRunner requires JUnit 4.12 or higher -->
        <!-- cobertura-maven-plugin is deprecated, see: https://github.com/QualInsight/qualinsight-mojo-cobertura -->
        <!-- qualinsight-mojo-cobertura-core conflict with jacoco-maven-plugin
            [WARNING] Classes in bundle 'x' do no match with execution data.
            For report generation the same class files must be used as at runtime -->
        <profile>
            <id>cobertura</id>
            <activation><property><name>jacoco</name><value>false</value></property></activation>
            <properties>
                <version.net.sourceforge.cobertura_cobertura>2.1.1</version.net.sourceforge.cobertura_cobertura>
                <version.junit_junit>4.12</version.junit_junit>
            </properties>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>net.sourceforge.cobertura</groupId><artifactId>cobertura</artifactId><version>${version.net.sourceforge.cobertura_cobertura}</version>
                        <exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions>
                    </dependency>
                    <dependency>
                        <groupId>junit</groupId><artifactId>junit</artifactId><version>${version.junit_junit}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
            <dependencies>
                <dependency><groupId>net.sourceforge.cobertura</groupId><artifactId>cobertura</artifactId><scope>test</scope></dependency>
                <dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency>
            </dependencies>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin><groupId>com.qualinsight.mojo.cobertura</groupId><artifactId>qualinsight-mojo-cobertura-core</artifactId><version>${version.qualinsight-mojo-cobertura-core}</version></plugin>
                        <!--<plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>${version.cobertura-maven-plugin}</version></plugin>-->
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>com.qualinsight.mojo.cobertura</groupId>
                        <artifactId>qualinsight-mojo-cobertura-core</artifactId>
                        <executions>
                            <execution><id>instrument-ut</id><goals><goal>instrument-ut</goal></goals></execution>
                            <execution><id>instrument-it</id><goals><goal>instrument-it</goal></goals></execution>
                            <execution><id>report-ut-coverage</id><goals><goal>report-ut-coverage</goal></goals></execution>
                            <execution><id>report-it-coverage</id><goals><goal>report-it-coverage</goal></goals></execution>
                            <execution><id>report-overall-coverage</id><goals><goal>report-overall-coverage</goal></goals></execution>
                        </executions>
                    </plugin>
                    <!--<plugin>-->
                        <!--<groupId>org.codehaus.mojo</groupId>-->
                        <!--<artifactId>cobertura-maven-plugin</artifactId>-->
                        <!--<reportSets><reportSet><reports><report>cobertura</report></reports></reportSet></reportSets>-->
                    <!--</plugin>-->
                </plugins>
            </build>
        </profile>
        <!-- @formatter:on -->

        <!-- @formatter:off -->
        <profile>
            <id>gpg-when-gpg_keyname-present</id>
            <activation>
                <file><exists>${maven.multiModuleProjectDirectory}/codesigning.asc.enc</exists></file>
                <property><name>gpg.keyname</name></property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>gpg-when-gpg2_argument-gpg_loopback-present</id>
            <activation>
                <file><exists>${maven.multiModuleProjectDirectory}/codesigning.asc.enc</exists></file>
                <property><name>gpg.loopback</name><value>true</value></property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <configuration>
                            <gpgArguments>
                                <gpgArgument>--use-agent</gpgArgument>
                                <gpgArgument>--pinentry-mode</gpgArgument>
                                <gpgArgument>loopback</gpgArgument>
                            </gpgArguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!--
            For nexus3, see 'NXRM3 Maven Plugin'
            https://help.sonatype.com/integrations/nexus-and-continuous-integration/repository-manager-for-maven-plugin
            -->
            <id>nexus2_staging</id>
            <activation><property><name>nexus2.staging</name><value>true</value></property></activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.sonatype.plugins</groupId>
                            <artifactId>nexus-staging-maven-plugin</artifactId>
                            <configuration>
                                <altStagingDirectory>${wagonRepository}</altStagingDirectory>
                                <autoDropAfterRelease>true</autoDropAfterRelease>
                                <autoReleaseAfterClose>false</autoReleaseAfterClose>
                                <detectBuildFailures>true</detectBuildFailures>
                                <keepStagingRepositoryOnFailure>false</keepStagingRepositoryOnFailure>
                                <keepStagingRepositoryOnCloseRuleFailure>false</keepStagingRepositoryOnCloseRuleFailure>
                                <nexusUrl>${nexus2}</nexusUrl>
                                <serverId>${nexus.staging.serverId}</serverId>
                                <!--<sslAllowAll>true</sslAllowAll>-->
                                <stagingProgressPauseDurationSeconds>30</stagingProgressPauseDurationSeconds>
                                <stagingProgressTimeoutMinutes>60</stagingProgressTimeoutMinutes>

                                <!--
                                <skipLocalStaging>${snapshotRef}</skipLocalStaging>
                                <skipNexusStagingDeployMojo>${snapshotRef}</skipNexusStagingDeployMojo>
                                <skipRemoteStaging>${snapshotRef}</skipRemoteStaging>
                                <skipStaging>${snapshotRef}</skipStaging>
                                <skipStagingRepositoryClose>${snapshotRef}</skipStagingRepositoryClose>
                                -->
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>wagonRepository-on-initialize</id>
                                <phase>initialize</phase>
                                <goals><goal>bsh-property</goal></goals>
                                <configuration>
                                    <source>
                                        multiModuleProjectDirectory = System.getProperty("maven.multiModuleProjectDirectory", "");
                                        wagonRepository = multiModuleProjectDirectory + File.separator + ".mvn" + File.separator + "wagonRepository";
                                    </source>
                                    <properties><property>wagonRepository</property></properties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-deploy</id>
                                <phase>deploy</phase>
                                <goals><goal>deploy</goal></goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <!--<extensions>true</extensions>-->
                        <executions>
                            <execution>
                                <id>default-deploy</id>
                                <phase>deploy</phase>
                                <goals><goal>deploy</goal></goals>
                            </execution>
                            <!--
                            <execution>
                                <id>deploy-staged-repository</id>
                                <phase>deploy</phase>
                                <goals><goal>deploy-staged-repository</goal></goals>
                                <configuration>
                                    <repositoryDirectory>${wagonRepository}</repositoryDirectory>
                                </configuration>
                            </execution>
                            -->
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <properties>
                <nexus.staging.serverId>${infrastructure}-staging</nexus.staging.serverId>
            </properties>
        </profile>

        <profile>
            <!-- multi_module_root_only is a keyword for topinfra-maven-extension to activate this profile on root project only -->
            <id>clean-maven_profiler_report_directory-run-on-multi_module_root_only</id>
            <activation><property><name>profile</name></property></activation>
            <build>
                <plugins>
                    <!-- clean files deployed to local directory -->
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>maven-profiler-report-clean</id>
                                <!--<inherited>false</inherited>-->
                                <!--
                                phase none run 'mvn org.apache.maven.plugins:maven-antrun-plugin:run@maven-profiler-report-clean'
                                -->
                                <!--<phase>none</phase>-->
                                <phase>clean</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <echo message="maven-profiler-report-directory: ${maven-profiler-report-directory}"/>
                                        <delete failonerror="false" includeemptydirs="true" verbose="true"><fileset dir="${maven-profiler-report-directory}" includes="**/*"/></delete>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- multi_module_root_only is a keyword for topinfra-maven-extension to activate this profile on root project only -->
            <id>mvn-deploy_publish_segregation-wagon_repository-clean-run-on-multi_module_root_only</id>
            <activation><property><name>mvn.deploy.publish.segregation</name><value>true</value></property></activation>
            <build>
                <plugins>
                    <!-- @formatter:off -->
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>artifactDir-on-pre_clean</id>
                                <phase>pre-clean</phase>
                                <goals><goal>bsh-property</goal></goals>
                                <configuration>
                                    <source>
                                        artifactDir = project.getGroupId().replace('.', '/') + "/" + project.getArtifactId();
                                        System.setProperty("wagon.merge-maven-repos.artifactDir", artifactDir);
                                        session.getUserProperties().setProperty("wagon.merge-maven-repos.artifactDir", artifactDir);
                                        project.getProperties().setProperty("wagon.merge-maven-repos.artifactDir", artifactDir);
                                    </source>
                                    <properties><property>artifactDir</property></properties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- @formatter:on -->
                    <!--<plugin>
                        <groupId>org.codehaus.groovy.maven</groupId>
                        <artifactId>gmaven-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals><goal>execute</goal></goals>
                                <phase>pre-clean</phase>
                                <configuration><source>System.setProperty("wagon.merge-maven-repos.artifactDir", "${project.groupId}".replace('.', '/') + "/${project.artifactId}")</source></configuration>
                            </execution>
                        </executions>
                    </plugin>-->
                    <!--
                    groovy-maven-plugin error on java11:
                    [ERROR] WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
                    [ERROR] WARNING: Use -\-illegal-access=warn to enable warnings of further illegal reflective access operations
                    [ERROR] WARNING: All illegal access operations will be denied in a future release
                    -->
                    <!--<plugin>
                        <groupId>org.codehaus.gmaven</groupId>
                        <artifactId>groovy-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals><goal>execute</goal></goals>
                                <phase>pre-clean</phase>
                                <configuration><source>System.setProperty("wagon.merge-maven-repos.artifactDir", "${project.groupId}".replace('.', '/') + "/${project.artifactId}")</source></configuration>
                            </execution>
                        </executions>
                    </plugin>-->
                    <!-- clean files deployed to local directory -->
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>wagon-repository-clean</id>
                                <!--<inherited>false</inherited>-->
                                <!--
                                phase none run 'mvn org.apache.maven.plugins:maven-antrun-plugin:run@wagon-repository-clean'
                                -->
                                <!--<phase>none</phase>-->
                                <phase>clean</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <echo message="wagon.merge-maven-repos.source: ${wagon.merge-maven-repos.source}"/>
                                        <echo message="wagon.merge-maven-repos.artifactDir: ${wagon.merge-maven-repos.artifactDir}"/>
                                        <delete failonerror="false" includeemptydirs="true" verbose="true"><fileset dir="${wagon.merge-maven-repos.source}/${wagon.merge-maven-repos.artifactDir}" includes="**/*"/></delete>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- disable packages for wagon-maven-plugin -->
        <profile>
            <id>maven_packages_skip</id>
            <activation>
                <!--<file><exists>${wagon.merge-maven-repos.source}</exists></file>-->
                <property><name>maven.packages.skip</name><value>true</value></property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <!-- -Dassembly.skipAssembly=true -->
                        <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <configuration><skipAssembly>true</skipAssembly></configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <configuration><skip>true</skip></configuration>
                            <executions>
                                <execution><id>sign-artifacts</id><phase>none</phase><goals><goal>sign</goal></goals></execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <artifactId>maven-jar-plugin</artifactId>
                            <executions><execution><id>default-jar</id><phase>none</phase></execution></executions>
                        </plugin>
                        <plugin>
                            <artifactId>maven-deploy-plugin</artifactId>
                            <configuration><skip>true</skip></configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-install-plugin</artifactId>
                            <configuration><skip>true</skip></configuration>
                            <executions>
                                <execution>
                                    <id>default-install</id>
                                    <phase>none</phase>
                                    <goals><goal>install</goal></goals>
                                </execution>
                            </executions>
                        </plugin>
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>dockerfile-maven-plugin</artifactId>
                            <configuration>
                                <!--<skip>true</skip>-->
                                <skipBuild>true</skipBuild>
                                <skipDockerInfo>true</skipDockerInfo>
                                <!--<skipPush>true</skipPush>-->
                                <skipTag>true</skipTag>
                            </configuration>
                        </plugin>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <configuration>
                                <skipDocker>true</skipDocker>
                                <skipDockerBuild>true</skipDockerBuild>
                                <skipDockerPush>true</skipDockerPush>
                                <skipDockerTag>true</skipDockerTag>
                            </configuration>
                        </plugin>
                        -->
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

        <profile>
            <!-- multi_module_root_only is a keyword for topinfra-maven-extension to activate this profile on root project only -->
            <id>mvn-deploy_publish_segregation-merge_maven_repos-deploy-run-on-multi_module_root_only</id>
            <activation>
                <!--<file><exists>${wagon.merge-maven-repos.source}</exists></file>-->
                <property><name>mvn.deploy.publish.segregation.goal.deploy</name><value>true</value></property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>targetId-on-initialize</id>
                                <phase>initialize</phase>
                                <goals><goal>bsh-property</goal></goals>
                                <configuration>
                                    <source>
                                        gitRef = project.getProperties().getProperty("gitRef");
                                        releaseRef = gitRef == null || gitRef.equals("") ? false : gitRef.startsWith("hotfix/") || gitRef.startsWith("release/") || gitRef.startsWith("support/");
                                        snapshotRef = gitRef == null || gitRef.equals("") ? false : gitRef.equals("develop") || gitRef.startsWith("feature/");
                                        channel = releaseRef ? "releases" : snapshotRef ? "snapshots" : "mixed";

                                        nexus2 = project.getProperties().getProperty("nexus2", session.getUserProperties().getProperty("nexus2"));
                                        nexus3 = project.getProperties().getProperty("nexus3", session.getUserProperties().getProperty("nexus3"));

                                        repoType = null;
                                        if (nexus2 != null @and !nexus2.equals("")) {
                                            repoType = "nexus2";
                                        }
                                        if (nexus3 != null @and !nexus3.equals("")) {
                                            repoType = "nexus3";
                                        }

                                        infra = project.getProperties().getProperty("infrastructure", session.getUserProperties().getProperty("infrastructure"));
                                        repo = repoType == null || repoType.equals("") ? channel : repoType + "-" + channel;
                                        targetId = infra == null || infra.equals("") ? repo : infra + "-" + repo;

                                        System.setProperty("wagon.merge-maven-repos.targetId", targetId);
                                        session.getUserProperties().setProperty("wagon.merge-maven-repos.targetId", targetId);
                                        project.getProperties().setProperty("wagon.merge-maven-repos.targetId", targetId);
                                    </source>
                                    <properties><property>targetId</property></properties>
                                </configuration>
                            </execution>
                            <execution>
                                <id>targetRepo-on-initialize</id>
                                <phase>initialize</phase>
                                <goals><goal>bsh-property</goal></goals>
                                <configuration>
                                    <source>
                                        gitRef = project.getProperties().getProperty("gitRef");
                                        releaseRef = gitRef == null || gitRef.equals("") ? false : gitRef.startsWith("hotfix/") || gitRef.startsWith("release/") || gitRef.startsWith("support/");
                                        snapshotRef = gitRef == null || gitRef.equals("") ? false : gitRef.equals("develop") || gitRef.startsWith("feature/");
                                        channel = releaseRef ? "releases" : snapshotRef ? "snapshots" : "mixed";

                                        nexus2 = project.getProperties().getProperty("nexus2", session.getUserProperties().getProperty("nexus2"));
                                        nexus2Staging = project.getProperties().getProperty("nexus2.staging", session.getUserProperties().getProperty("nexus2.staging"));
                                        nexus3 = project.getProperties().getProperty("nexus3", session.getUserProperties().getProperty("nexus3"));

                                        targetRepo = null;
                                        if (nexus2 != null @and !nexus2.equals("")) {
                                            if (releaseRef) {
                                                if (nexus2Staging == null || nexus2Staging.equals("") || !Boolean.parseBoolean(nexus2Staging)) {
                                                    targetRepo = "${nexus2}content/repositories/releases/";
                                                } else {
                                                    targetRepo = "${nexus2}service/local/staging/deploy/maven2/";
                                                }
                                            } else {
                                                targetRepo = "${nexus2}content/repositories/snapshots/";
                                            }
                                        }
                                        if (nexus3 != null @and !nexus3.equals("")) {
                                            targetRepo = "${nexus3}repository/maven-" + channel;
                                        }

                                        System.setProperty("wagon.merge-maven-repos.target", targetRepo);
                                        session.getUserProperties().setProperty("wagon.merge-maven-repos.target", targetRepo);
                                        project.getProperties().setProperty("wagon.merge-maven-repos.target", targetRepo);
                                    </source>
                                    <properties><property>targetRepo</property></properties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>echo-wagon-properties-at-initialize</id>
                                <phase>initialize</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <echo message="altDeploymentRepository: ${altDeploymentRepository}"/>
                                        <echo message="mvn.deploy.publish.segregation.goal: ${mvn.deploy.publish.segregation.goal}"/>
                                        <echo message="mvn.deploy.publish.segregation.goal.deploy: ${mvn.deploy.publish.segregation.goal.deploy}"/>
                                        <echo message="mvn.deploy.publish.segregation.goal.install: ${mvn.deploy.publish.segregation.goal.install}"/>
                                        <echo message="mvn.deploy.publish.segregation.goal.package: ${mvn.deploy.publish.segregation.goal.package}"/>
                                        <echo message="gitRef: ${gitRef}"/>
                                        <echo message="wagon.merge-maven-repos.source: ${wagon.merge-maven-repos.source}"/>
                                        <echo message="wagon.merge-maven-repos.target: ${wagon.merge-maven-repos.target}"/>
                                        <echo message="wagon.merge-maven-repos.targetId: ${wagon.merge-maven-repos.targetId}"/>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>rename-maven_metadata_nexus_xml-to-maven_metadata_xml</id>
                                <!--<inherited>false</inherited>-->
                                <phase>initialize</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <echo message="rename ${wagon.merge-maven-repos.source}/**/maven-metadata-nexus.xml"/>
                                        <mkdir dir="${wagon.merge-maven-repos.source}"/>
                                        <move includeemptydirs="false"
                                              overwrite="true"
                                              todir="${wagon.merge-maven-repos.source}"
                                              verbose="true">
                                            <fileset dir="${wagon.merge-maven-repos.source}">
                                                <include name="**/maven-metadata-nexus.*"/>
                                            </fileset>
                                            <filtermapper>
                                                <replacestring from="maven-metadata-nexus" to="maven-metadata"/>
                                            </filtermapper>
                                        </move>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--<plugin><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</skip></configuration></plugin>-->
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>wagon-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>merge-maven-repos-deploy</id>
                                <!--<inherited>false</inherited>-->
                                <!--
                                phase none run 'mvn org.codehaus.mojo:wagon-maven-plugin:merge-maven-repos@merge-maven-repos-deploy'
                                -->
                                <!--<phase>none</phase>-->
                                <phase>deploy</phase>
                                <goals><goal>merge-maven-repos</goal></goals>
                                <configuration>
                                    <source>file://${wagon.merge-maven-repos.source}</source>
                                    <target>${wagon.merge-maven-repos.target}</target>
                                    <targetId>${wagon.merge-maven-repos.targetId}</targetId>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <!-- Do mvn site site:stage -DstagingDirectory=/tmp/path first, then manually add/push to the gh-pages branch on GitHub? -->
            <id>github_site_publish</id>
            <activation><property><name>github.site.publish</name><value>true</value></property></activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.github.github</groupId><artifactId>site-maven-plugin</artifactId><version>${version.site-maven-plugin}</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>echo-github-site-info</id><phase>site</phase><goals><goal>run</goal></goals>
                                <configuration><target>
                                    <echo message="github.site.path: ${github.site.path}"/>
                                    <echo message="github.global.repositoryName: ${github.global.repositoryName}"/>
                                    <echo message="github.global.repositoryOwner: ${github.global.repositoryOwner}"/>
                                    <echo message="project.distributionManagement.site.url: ${project.distributionManagement.site.url}"/>
                                </target></configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>com.github.github</groupId><artifactId>site-maven-plugin</artifactId>
                        <configuration>
                            <merge>true</merge>
                            <message>Creating site for ${project.artifactId}-${project.version}</message>
                            <noJekyll>true</noJekyll>
                            <path>${project.distributionManagement.site.url}</path>
                            <repositoryName>${github.global.repositoryName}</repositoryName>
                            <repositoryOwner>${github.global.repositoryOwner}</repositoryOwner>
                        </configuration>
                        <executions>
                            <execution><goals><goal>site</goal></goals><phase>site-deploy</phase><!--<phase>site</phase>--></execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <distributionManagement>
                <!-- Make github site-maven-plugin to support multi-module site deployment -->
                <!-- see: https://github.com/github/maven-plugins/issues/22 -->
                <!-- If subprojects inherit the site URL from a parent POM, they will automatically append their artifactId to form their effective deployment location. -->
                <site>
                    <id>github-pages-site</id>
                    <name>Deployment through GitHub's site deployment plugin</name>
                    <url>${github.site.path}</url>
                </site>
            </distributionManagement>
            <properties>
                <!-- for site on github, id (github.global.server) must match the config in your settings.xml -->
                <github.global.server>github-site</github.global.server>

                <maven.site.deploy.skip>true</maven.site.deploy.skip>
            </properties>
        </profile>

        <profile>
            <id>spring-restdocs</id>
            <activation>
                <property><name>spring-restdocs</name><value>true</value></property>
                <file><exists>${basedir}/src/main/asciidoc/.gitkeep</exists></file>
            </activation>
            <properties>
                <snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctor-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>generate-docs</id>
                                <phase>prepare-package</phase>
                                <goals><goal>process-asciidoc</goal></goals>
                                <configuration>
                                    <backend>html</backend>
                                    <doctype>book</doctype>
                                    <attributes><snippets>${snippetsDirectory}</snippets></attributes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>package-spring-restdocs</id>
                                <phase>prepare-package</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target name="package-spring-restdocs">
                                        <copy todir="${project.build.outputDirectory}/static/docs">
                                            <fileset dir="${project.build.directory}/generated-docs" includes="*.*">
                                                <filename regex=".*"/>
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>package-spring-restdocs</id>
                                <phase>prepare-package</phase>
                                <goals><goal>copy-resources</goal></goals>
                                <configuration>
                                    <outputDirectory>${project.build.outputDirectory}/static/docs</outputDirectory>
                                    <resources>
                                        <resource><directory>${project.build.directory}/generated-docs</directory></resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                </plugins>
            </build>
        </profile>

        <profile>
            <id>generateReports</id>
            <activation><property><name>notGenerateReports</name><value>false</value></property></activation>
            <reporting>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <additionalJOption>-J-Duser.language=en</additionalJOption>
                            <!--<additionalOptions>-views -all</additionalOptions>-->
                            <charset>${project.build.sourceEncoding}</charset>
                            <doclint>none</doclint>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <failOnError>${maven.javadoc.failsOnError}</failOnError>
                            <notimestamp>true</notimestamp>
                            <skip>${maven.javadoc.skip}</skip>
                            <useStandardDocletOptions>true</useStandardDocletOptions>
                        </configuration>
                        <reportSets>
                            <reportSet><id>html</id><reports><report>javadoc</report></reports></reportSet>
                            <reportSet><id>test-html</id><reports><report>test-javadoc</report></reports></reportSet>
                            <reportSet><id>aggregate</id><inherited>false</inherited><reports><report>aggregate</report></reports></reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jxr-plugin</artifactId>
                        <reportSets>
                            <reportSet>
                                <id>aggregate</id>
                                <!--<inherited>false</inherited>-->
                                <reports>
                                    <report>aggregate</report>
                                    <report>test-aggregate</report>
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-report-plugin</artifactId>
                        <configuration>
                            <aggregate>true</aggregate>
                            <linkXRef>${linkXRef}</linkXRef>
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <id>unit-tests</id>
                                <!-- TODO run on root module only -->
                                <inherited>false</inherited>
                                <reports><report>report-only</report></reports>
                            </reportSet>
                            <reportSet>
                                <id>integration-tests</id>
                                <!-- TODO run on root module only -->
                                <inherited>false</inherited>
                                <reports><report>failsafe-report-only</report></reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <!--<plugin><groupId>org.codehaus.mojo</groupId><artifactId>findbugs-maven-plugin</artifactId></plugin>-->
                    <plugin><groupId>com.github.spotbugs</groupId><artifactId>spotbugs-maven-plugin</artifactId></plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId><artifactId>jdepend-maven-plugin</artifactId>
                        <configuration><skip>${notGenerateReports}</skip></configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <reportSets>
                            <reportSet>
                                <configuration>
                                    <configLocation>${checkstyle.config.location}</configLocation>
                                    <consoleOutput>false</consoleOutput>
                                    <encoding>${project.reporting.outputEncoding}</encoding>
                                    <failsOnError>false</failsOnError>
                                    <linkXRef>${linkXRef}</linkXRef>
                                </configuration>
                                <reports><report>checkstyle</report></reports>
                            </reportSet>
                            <reportSet>
                                <id>aggregate</id>
                                <!-- TODO run on root module only -->
                                <inherited>false</inherited>
                                <reports><report>checkstyle-aggregate</report></reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                    <!-- Taglist plugin MUST be executed after the JXR plugin. -->
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>taglist-maven-plugin</artifactId>
                        <configuration>
                            <aggregate>true</aggregate>
                            <tagListOptions>
                                <tagClasses>
                                    <tagClass>
                                        <displayName>Todo Work</displayName>
                                        <tags>
                                            <tag><matchString>todo</matchString><matchType>ignoreCase</matchType></tag>
                                            <tag><matchString>FIXME</matchString><matchType>exact</matchType></tag>
                                        </tags>
                                    </tagClass>
                                </tagClasses>
                            </tagListOptions>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <configuration>
                            <aggregate>true</aggregate>
                            <linkXRef>${linkXRef}</linkXRef>
                            <minimumTokens>100</minimumTokens>
                            <rulesets><ruleset>${pmd.ruleset.location}</ruleset></rulesets>
                            <skip>${notGenerateReports}</skip>
                            <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                        </configuration>
                    </plugin>
                    <!-- see: https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html -->
                    <!--
                    dependency:analyze goal is intended to be used standalone,
                    thus it always executes the test-compile phase.
                    use the dependency:analyze-only goal instead when participating in the build lifecycle.
                    -->
                    <!--<plugin>-->
                    <!--<artifactId>maven-dependency-plugin</artifactId>-->
                    <!--<reportSets><reportSet><reports><report>analyze-report</report></reports></reportSet></reportSets>-->
                    <!--</plugin>-->
                </plugins>
            </reporting>
        </profile>

        <profile>
            <id>copy-readme_and_its_assets-to-src_site</id>
            <activation><file><exists>${basedir}/src/readme</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-readme_md-to-src_site_markdown</id>
                                <phase>pre-site</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target name="copy-readme_md-to-src_site_markdown">
                                        <copy todir="${project.basedir}/src/site/markdown">
                                            <fileset dir="${project.basedir}" includes="**/*">
                                                <filename name="README.md"/>
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-src_readme-to-src_site_markdown_src_readme</id>
                                <phase>pre-site</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target name="copy-src_readme-to-src_site_markdown_src_readme">
                                        <copy todir="${project.basedir}/src/site/markdown/src/readme">
                                            <fileset dir="${project.basedir}/src/readme" includes="**/*">
                                                <not><filename name="**/.gitkeep"/></not>
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-src_readme-to-src_site_resources_src_readme</id>
                                <phase>pre-site</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target name="copy-src_readme-to-src_site_resources_src_readme">
                                        <copy todir="${project.basedir}/src/site/resources/src/readme">
                                            <fileset dir="${project.basedir}/src/readme" includes="**/*">
                                                <not><filename name="**/.gitkeep"/></not>
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-readme_md-to-src_site_markdown</id>
                                <phase>pre-site</phase>
                                <goals><goal>copy-resources</goal></goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/src/site/markdown</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}</directory>
                                            <includes><include>README.md</include></includes>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-src_readme-to-src_site_markdown_src_readme</id>
                                <phase>pre-site</phase>
                                <goals><goal>copy-resources</goal></goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/src/site/markdown/src/readme</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/src/readme</directory>
                                            <filtering>false</filtering>
                                            <excludes><exclude>**/.gitkeep</exclude></excludes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-src_readme-to-src_site_resources_src_readme</id>
                                <phase>pre-site</phase>
                                <goals><goal>copy-resources</goal></goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/src/site/resources/src/readme</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/src/readme</directory>
                                            <filtering>false</filtering>
                                            <excludes><exclude>**/.gitkeep</exclude></excludes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                </plugins>
            </build>
        </profile>
        <profile>
            <id>copy-src_site_markdown_images-to-src_site_resources_images</id>
            <activation><file><exists>${basedir}/src/site/markdown/images</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-src_site_markdown_images-to-src_site_resources_images</id>
                                <phase>pre-site</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target name="copy-src_site_markdown_images-to-src_site_resources_images">
                                        <copy todir="${project.basedir}/src/site/resources/images">
                                            <fileset dir="${project.basedir}/src/site/markdown/images" includes="**/*">
                                                <not><filename name="**/.gitkeep"/></not>
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-src_site_markdown_images-to-src_site_resources_images</id>
                                <phase>pre-site</phase>
                                <goals><goal>copy-resources</goal></goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/src/site/resources/images</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/src/site/markdown/images</directory>
                                            <filtering>false</filtering>
                                            <excludes><exclude>**/.gitkeep</exclude></excludes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                </plugins>
            </build>
        </profile>

        <profile>
            <id>reports-for-site</id>
            <activation><property><name>generateReports</name><value>true</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <!--
                            <execution>
                                <id>print-classpath</id>
                                <phase>compile</phase>
                                <configuration>
                                    <target>
                                        <property name="compile_classpath" refid="maven.compile.classpath" />
                                        <property name="runtime_classpath" refid="maven.runtime.classpath" />
                                        <property name="test_classpath" refid="maven.test.classpath" />
                                        <property name="plugin_classpath" refid="maven.plugin.classpath" />

                                        <echo message="compile classpath: ${compile_classpath}" />
                                        <echo message="runtime classpath: ${runtime_classpath}" />
                                        <echo message="test classpath: ${test_classpath}" />
                                        <echo message="plugin classpath: ${plugin_classpath}" />
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                            -->
                            <execution>
                                <id>echo-maven-multiModuleProjectDirectory-on-pre_clean</id>
                                <phase>pre-clean</phase>
                                <goals><goal>run</goal></goals>
                                <configuration><target>
                                    <echo>maven.multiModuleProjectDirectory: '${maven.multiModuleProjectDirectory}'</echo>
                                </target></configuration>
                            </execution>
                            <execution>
                                <id>echo-maven-multiModuleProjectDirectory-on-initialize</id>
                                <phase>initialize</phase>
                                <goals><goal>run</goal></goals>
                                <configuration><target>
                                    <echo>maven.multiModuleProjectDirectory: '${maven.multiModuleProjectDirectory}'</echo>
                                </target></configuration>
                            </execution>
                            <execution>
                                <id>echo-argLine</id><phase>test</phase><goals><goal>run</goal></goals><configuration><target><echo message="argLine: ${argLine}"/></target></configuration>
                            </execution>
                            <execution>
                                <id>echo-encoding</id><phase>pre-site</phase><goals><goal>run</goal></goals>
                                <configuration><target>
                                    <echo message="project.build.sourceEncoding: ${project.build.sourceEncoding}"/>
                                    <echo message="project.reporting.outputEncoding: ${project.reporting.outputEncoding}"/>
                                </target></configuration>
                            </execution>
                            <execution>
                                <id>auto-clean-readme</id>
                                <phase>clean</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <delete failonerror="false">
                                            <fileset dir="${project.basedir}/src/site/markdown" includes="README.md"/>
                                            <fileset dir="${project.basedir}/src/site/markdown/src/readme" includes="**/*"/>
                                            <fileset dir="${project.basedir}/src/site/resources" includes="**/*"/>
                                        </delete>
                                    </target>
                                </configuration>
                            </execution>
                            <execution>
                                <id>ensure-dot-gitkeep</id>
                                <phase>initialize</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/>
                                        <if>
                                            <available file="${project.basedir}/src/readme" type="dir"/>
                                            <then>
                                                <echo>${project.basedir}/src/readme exists</echo>
                                                <if>
                                                    <available file="${project.basedir}/src/readme/.gitkeep"/>
                                                    <else>
                                                        <echo>touch ${project.basedir}/src/readme/.gitkeep</echo>
                                                        <touch file="${project.basedir}/src/readme/.gitkeep"/>
                                                    </else>
                                                </if>
                                            </then>
                                            <else>
                                                <echo>${project.basedir}/src/readme does not exist</echo>
                                            </else>
                                        </if>
                                        <if>
                                            <available file="${project.basedir}/src/main/asciidoc" type="dir"/>
                                            <then>
                                                <echo>${project.basedir}/src/main/asciidoc exists</echo>
                                                <if>
                                                    <available file="${project.basedir}/src/main/asciidoc/.gitkeep"/>
                                                    <else>
                                                        <echo>touch ${project.basedir}/src/main/asciidoc/.gitkeep</echo>
                                                        <touch file="${project.basedir}/src/main/asciidoc/.gitkeep"/>
                                                    </else>
                                                </if>
                                            </then>
                                            <else>
                                                <echo>${project.basedir}/src/main/asciidoc does not exist</echo>
                                            </else>
                                        </if>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>com.github.sviperll</groupId>
                        <artifactId>coreext-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>check-coreext</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>validate</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <!--<plugin>-->
                        <!--<groupId>org.codehaus.mojo</groupId><artifactId>findbugs-maven-plugin</artifactId>-->
                        <!--<executions>-->
                            <!--<execution>-->
                                <!--<id>findbugs-findbugs</id>-->
                                <!--<phase>prepare-package</phase>-->
                                <!--<goals>-->
                                    <!--<goal>findbugs</goal>-->
                                    <!--<goal>check</goal>-->
                                <!--</goals>-->
                            <!--</execution>-->
                        <!--</executions>-->
                    <!--</plugin>-->
                    <plugin>
                        <groupId>com.github.spotbugs</groupId><artifactId>spotbugs-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>spotbugs-spotbugs</id>
                                <goals>
                                    <goal>spotbugs</goal>
                                    <goal>check</goal>
                                </goals>
                                <phase>prepare-package</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution><id>aggregate</id><goals><goal>aggregate</goal></goals><phase>site</phase></execution>
                            <execution><id>test-aggregate</id><goals><goal>test-aggregate</goal></goals><phase>site</phase></execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <!--
                        see: https://maven.apache.org/plugins/maven-site-plugin/usage.html

                        mvn site:stage
                        By default, the site will be staged in a directory target/staging/.
                        A different staging location can be chosen with the stagingDirectory parameter.

                        mvn site:stage-deploy
                        By default, the site will be stage-deployed to $distributionManagement.site.url/staging/.
                        A different location can be chosen with the stagingSiteURL parameter.
                        -->
                        <artifactId>maven-site-plugin</artifactId>
                        <configuration><attach>true</attach></configuration>
                        <!-- see: http://maven.apache.org/plugins/maven-site-plugin/maven-3.html#Site_descriptor_attachment -->
                        <executions>
                            <execution><id>attach-descriptor</id><goals><goal>attach-descriptor</goal></goals></execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <configuration>
                                    <failOnViolation>${checkstyle.failOnViolation}</failOnViolation>
                                    <logViolationsToConsole>${checkstyle.logViolationsToConsole}</logViolationsToConsole>
                                    <skip>${notGenerateReports}</skip>
                                    <violationIgnore>${checkstyle.violation.ignore}</violationIgnore>
                                    <violationSeverity>${checkstyle.violationSeverity}</violationSeverity>
                                </configuration>
                                <goals><goal>check</goal></goals>
                                <id>check</id>
                                <phase>process-sources</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- see: http://maven.apache.org/plugins/maven-pmd-plugin/examples/multi-module-config.html -->
                    <plugin>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <executions>
                            <execution>
                                <configuration>
                                    <skip>${notGenerateReports}</skip>
                                </configuration>
                                <id>pmd-check</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>pmd</goal>
                                    <goal>check</goal>
                                    <goal>cpd-check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.codehaus.mojo</groupId><artifactId>animal-sniffer-maven-plugin</artifactId>
                        <configuration>
                            <signature><groupId>org.codehaus.mojo.signature</groupId><artifactId>java18</artifactId><version>${version.java18}</version></signature>
                        </configuration>
                    </plugin>
                    <!--<plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>analyze</id>
                                <goals><goal>analyze-only</goal></goals>
                                <configuration><failOnWarning>false</failOnWarning><ignoreNonCompile>true</ignoreNonCompile><outputXML>true</outputXML></configuration>
                            </execution>
                        </executions>
                    </plugin>-->
                </plugins>
            </build>
        </profile>

        <profile>
            <id>jacoco-report</id>
            <activation><property><name>jacoco</name><value>true</value></property></activation>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId>
                        <reportSets>
                            <reportSet><reports><report>report</report><report>report-integration</report><!--<report>report-aggregate</report>--></reports></reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>

        <profile>
            <id>dependency-check</id>
            <activation><property><name>dependency-check</name><value>true</value></property></activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId><artifactId>dependency-check-maven</artifactId>
                        <executions>
                            <execution><goals><goal>check</goal></goals></execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.owasp</groupId><artifactId>dependency-check-maven</artifactId>
                        <reportSets>
                            <reportSet><reports><report>aggregate</report></reports></reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>updates-report</id>
            <activation><property><name>updates-report</name><value>true</value></property></activation>
            <build>
                <plugins>
                    <plugin><groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId></plugin>
                </plugins>
            </build>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId>
                        <reportSets>
                            <reportSet>
                                <reports><report>dependency-updates-report</report><report>plugin-updates-report</report></reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>

        <profile>
            <id>frontend</id>
            <activation><file><exists>${basedir}/package.json</exists></file></activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.github.eirslett</groupId>
                            <artifactId>frontend-maven-plugin</artifactId>
                            <version>${version.frontend-maven-plugin}</version>
                            <configuration>
                                <installDirectory>.mvn</installDirectory>
                                <!-- Defaults to https://nodejs.org/dist/ -->
                                <nodeDownloadRoot>${frontend.nodeDownloadRoot}</nodeDownloadRoot>
                                <!-- Defaults to http://registry.npmjs.org/npm/-/ -->
                                <npmDownloadRoot>${frontend.npmDownloadRoot}</npmDownloadRoot>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>

        <!-- @formatter:off -->
        <profile>
            <id>java11-compiler-java-modules-without-groovy</id>
            <activation>
                <file><missing>${basedir}/src/main/groovy</missing></file>
                <property><name>java.addModules</name></property>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <compilerArgs>
                                <arg>--add-modules</arg><arg>${java.addModules}</arg>
                                <arg>--add-exports</arg><arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-exports</arg><arg>java.base/jdk.internal.perf=ALL-UNNAMED</arg>-->
                                <arg>--add-exports</arg><arg>java.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg><arg>java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-exports</arg><arg>jdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                                <arg>--add-opens</arg><arg>java.base/java.net=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-opens</arg><arg>jdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                            </compilerArgs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java11-compiler-java-modules-absent-without-groovy</id>
            <activation>
                <file><missing>${basedir}/src/main/groovy</missing></file>
                <property><name>!java.addModules</name></property>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <compilerArgs>
                                <arg>--add-exports</arg><arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-exports</arg><arg>java.base/jdk.internal.perf=ALL-UNNAMED</arg>-->
                                <arg>--add-exports</arg><arg>java.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <arg>--add-exports</arg><arg>java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-exports</arg><arg>jdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                                <arg>--add-opens</arg><arg>java.base/java.net=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>--add-opens</arg><arg>java.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <!--<arg>-\-add-opens</arg><arg>jdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                            </compilerArgs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java11-compiler-java-modules-with-groovy</id>
            <activation>
                <file><exists>${basedir}/src/main/groovy</exists></file>
                <property><name>java.addModules</name></property>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <compilerArgs>
                                <arg>-J--add-modules</arg><arg>-J${java.addModules}</arg>
                                <arg>-J--add-exports</arg><arg>-Jjava.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-exports</arg><arg>-Jjava.base/jdk.internal.perf=ALL-UNNAMED</arg>-->
                                <arg>-J--add-exports</arg><arg>-Jjava.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <arg>-J--add-exports</arg><arg>-Jjava.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-exports</arg><arg>-Jjdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                                <arg>-J--add-opens</arg><arg>-Jjava.base/java.net=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-opens</arg><arg>-Jjdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                            </compilerArgs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java11-compiler-java-modules-absent-with-groovy</id>
            <activation>
                <file><exists>${basedir}/src/main/groovy</exists></file>
                <property><name>!java.addModules</name></property>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <compilerArgs>
                                <arg>-J--add-exports</arg><arg>-Jjava.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-exports</arg><arg>-Jjava.base/jdk.internal.perf=ALL-UNNAMED</arg>-->
                                <arg>-J--add-exports</arg><arg>-Jjava.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <arg>-J--add-exports</arg><arg>-Jjava.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-exports</arg><arg>-Jjdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                                <arg>-J--add-opens</arg><arg>-Jjava.base/java.net=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/jdk.internal.loader=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/sun.nio.ch=ALL-UNNAMED</arg>
                                <arg>-J--add-opens</arg><arg>-Jjava.base/sun.security.ssl=ALL-UNNAMED</arg>
                                <!--<arg>-J-\-add-opens</arg><arg>-Jjdk.attach/sun.tools.attach=ALL-UNNAMED</arg>-->
                            </compilerArgs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java8</id>
            <properties>
                <java.version>8</java.version>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <artifactId>maven-enforcer-plugin</artifactId>
                            <configuration>
                                <rules>
                                    <requireJavaVersion>
                                        <message><![CDATA[You are running an older version of Java. This application requires at least JDK 1.8.0.]]></message>
                                        <version>[1.8.0,)</version>
                                    </requireJavaVersion>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-toolchains-plugin</artifactId>
                            <version>${version.maven-toolchains-plugin}</version>
                            <configuration>
                                <toolchains><jdk><version>8</version><!--<vendor>oracle</vendor>--></jdk></toolchains>
                            </configuration>
                        </plugin>
                        <plugin><artifactId>maven-pmd-plugin</artifactId><configuration><targetJdk>${maven.compiler.target}</targetJdk></configuration></plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration><source>${java.version}</source><target>${maven.compiler.target}</target></configuration>
                    </plugin>
                </plugins>
            </build>
            <reporting>
                <plugins>
                    <plugin><artifactId>maven-pmd-plugin</artifactId><configuration><targetJdk>${maven.compiler.target}</targetJdk></configuration></plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>java9</id>
            <properties>
                <!-- Runtime modules for java9 -->
                <version.jaxb-api>2.3.0</version.jaxb-api>
                <java.version>9</java.version>
                <!--[ERROR] error: exporting a package from system module java.base is not allowed with -\-release-->
                <!--<maven.compiler.release>9</maven.compiler.release>-->
                <maven.compiler.source>${java.version}</maven.compiler.source>
                <maven.compiler.target>${java.version}</maven.compiler.target>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId>
                            <dependencies>
                                <dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${version.javax.activation}</version></dependency>
                            </dependencies>
                        </plugin>
                        -->
                        <plugin>
                            <artifactId>maven-enforcer-plugin</artifactId>
                            <configuration>
                                <rules>
                                    <requireJavaVersion>
                                        <message><![CDATA[You are running an older version of Java. This application requires at least JDK ${java.version}.]]></message>
                                        <version>[${java.version}.0,)</version>
                                    </requireJavaVersion>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-toolchains-plugin</artifactId>
                            <version>${version.maven-toolchains-plugin}</version>
                            <configuration>
                                <toolchains><jdk><version>9</version><!--<vendor>oracle</vendor>--></jdk></toolchains>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <configuration>
                                <argLine>${jacoco.agent.ut.arg} --add-modules java.xml.bind,java.xml.ws,java.xml.ws.annotation ${argLine}</argLine>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <configuration>
                                <argLine>${jacoco.agent.ut.arg} --add-modules java.xml.bind,java.xml.ws,java.xml.ws.annotation ${argLine}</argLine>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <!--[ERROR] error: exporting a package from system module java.base is not allowed with -\-release-->
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration><!--<release>${maven.compiler.release}</release>--><source>${java.version}</source><target>${maven.compiler.target}</target></configuration>
                    </plugin>
                </plugins>
            </build>
            <dependencyManagement>
                <dependencies>
                    <dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${version.javax.activation}</version></dependency>
                    <!-- Hibernate java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException -->
                    <dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-core</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>${version.jaxb-api}</version></dependency>
                </dependencies>
            </dependencyManagement>
            <reporting>
                <plugins>
                    <plugin><artifactId>maven-pmd-plugin</artifactId><configuration><targetJdk>${maven.compiler.target}</targetJdk></configuration></plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>java11-or-later</id>
            <properties>
                <!-- Runtime modules for java11 -->
                <version.javax.annotation-api>1.3.2</version.javax.annotation-api>
                <version.javax.transaction-api>1.3</version.javax.transaction-api>
                <version.jaxb-api>2.3.0</version.jaxb-api>
                <version.jaxws-api>2.3.0</version.jaxws-api>
                <java.version>11</java.version>
                <!--[ERROR] error: exporting a package from system module java.base is not allowed with -\-release-->
                <!--<maven.compiler.release>11</maven.compiler.release>-->
                <maven.compiler.source>${java.version}</maven.compiler.source>
                <maven.compiler.target>${java.version}</maven.compiler.target>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId>
                            <dependencies>
                                <dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${version.javax.activation}</version></dependency>
                            </dependencies>
                        </plugin>
                        -->
                        <plugin>
                            <artifactId>maven-enforcer-plugin</artifactId>
                            <configuration>
                                <rules>
                                    <requireJavaVersion>
                                        <message><![CDATA[You are running an older version of Java. This application requires at least JDK ${java.version}.]]></message>
                                        <version>[${java.version}.0,)</version>
                                    </requireJavaVersion>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-toolchains-plugin</artifactId>
                            <version>${version.maven-toolchains-plugin}</version>
                            <configuration>
                                <toolchains><jdk><version>11</version><!--<vendor>oracle</vendor>--></jdk></toolchains>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <configuration>
                                <argLine>${jacoco.agent.ut.arg} --illegal-access=permit --add-exports java.base/jdk.internal.loader=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/sun.security.ssl=ALL-UNNAMED ${argLine}</argLine>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <configuration>
                                <argLine>${jacoco.agent.ut.arg} --illegal-access=permit --add-exports java.base/jdk.internal.loader=ALL-UNNAMED --add-exports java.base/sun.security.ssl=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/sun.security.ssl=ALL-UNNAMED ${argLine}</argLine>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <!--[ERROR] error: exporting a package from system module java.base is not allowed with -\-release-->
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration><!--<release>${maven.compiler.release}</release>--><source>${java.version}</source><target>${java.version}</target></configuration>
                    </plugin>
                </plugins>
            </build>
            <dependencyManagement>
                <dependencies>
                    <!-- see: https://dzone.com/articles/apis-to-be-removed-from-java-11 -->
                    <!-- java.activation -->
                    <dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${version.javax.activation}</version></dependency>
                    <!-- java.transaction -->
                    <!--<dependency><groupId>javax.transaction</groupId><artifactId>javax.transaction-api</artifactId><version>${version.javax.transaction-api}</version></dependency>-->
                    <!-- Hibernate java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException -->
                    <!-- java.xml.bind -->
                    <dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-core</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>${version.jaxb-api}</version></dependency>
                    <dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>${version.jaxb-api}</version></dependency>
                    <!-- java.xml.ws -->
                    <dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>${version.javax.annotation-api}</version></dependency>
                    <dependency><groupId>javax.xml.ws</groupId><artifactId>jaxws-api</artifactId><version>${version.jaxws-api}</version></dependency>
                </dependencies>
            </dependencyManagement>
            <reporting>
                <plugins>
                    <plugin><artifactId>maven-pmd-plugin</artifactId><configuration><targetJdk>${maven.compiler.target}</targetJdk></configuration></plugin>
                </plugins>
            </reporting>
        </profile>
        <profile>
            <id>maven-toolchains-plugin-executions-if-file-user_home-dot_m2-toolchains_xml-present</id>
            <activation>
                <file><exists>${user.home}/.m2/toolchains.xml</exists></file>
                <property><name>!toolchains</name></property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-toolchains-plugin</artifactId>
                        <executions><execution><phase>validate</phase><goals><goal>toolchain</goal></goals></execution></executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>maven-toolchains-plugin-executions-if-file-present</id>
            <activation>
                <file><exists>${toolchains}</exists></file>
                <property><name>toolchains</name></property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-toolchains-plugin</artifactId>
                        <executions><execution><phase>validate</phase><goals><goal>toolchain</goal></goals></execution></executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- see: https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-Maven-plugin -->
            <id>groovy</id>
            <activation><file><exists>${basedir}/src/main/groovy</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>add-groovy-sources</id><phase>generate-sources</phase><goals><goal>add-source</goal></goals>
                                <configuration><sources><source>src/main/groovy</source></sources></configuration>
                            </execution>
                            <execution>
                                <id>add-groovy-test-sources</id><phase>generate-sources</phase><goals><goal>add-test-source</goal></goals>
                                <configuration><sources><source>src/test/groovy</source></sources></configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin><groupId>org.codehaus.groovy</groupId><artifactId>groovy-eclipse-compiler</artifactId><version>${version.groovy-eclipse-compiler}</version><extensions>true</extensions></plugin>
                </plugins>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <!-- see https://stackoverflow.com/questions/8524891/maven-groovy-and-java-lombok -->
                            <artifactId>maven-compiler-plugin</artifactId>
                            <configuration>
                                <!-- IMPORTANT -->
                                <useIncrementalCompilation>false</useIncrementalCompilation>
                                <compilerId>groovy-eclipse-compiler</compilerId><!-- Use Groovy Eclipse Compiler -->
                                <compilerArguments>
                                    <!--<indy/>-->
                                    <javaAgentClass>lombok.launch.Agent</javaAgentClass>
                                </compilerArguments>
                                <fork>true</fork>
                            </configuration>
                            <dependencies>
                                <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-eclipse-compiler</artifactId><version>${version.groovy-eclipse-compiler}</version></dependency>
                                <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-eclipse-batch</artifactId><version>${version.groovy-eclipse-batch}</version></dependency>
                                <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${version.lombok}</version></dependency>
                            </dependencies>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
            <dependencies>
                <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId></dependency>
                <!--<dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><classifier>indy</classifier></dependency>-->
            </dependencies>
            <dependencyManagement>
                <dependencies>
                    <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy</artifactId><classifier>indy</classifier><version>${groovy.version}</version></dependency>
                    <dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>${groovy.version}</version><type>pom</type></dependency>
                </dependencies>
            </dependencyManagement>
            <pluginRepositories>
                <pluginRepository>
                    <!-- Needed for latest Groovy Eclipse version -->
                    <id>groovy-bintray</id><name>Groovy Bintray</name><url>https://dl.bintray.com/groovy/maven/</url>
                    <releases><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>scala</id>
            <activation><file><exists>${basedir}/src/main/scala</exists></file></activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>${version.scala-maven-plugin}</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>compile</goal>
                                    <goal>testCompile</goal>
                                </goals>
                                <configuration>
                                    <sourceDir>src/main/scala</sourceDir>
                                    <testSourceDir>src/test/scala</testSourceDir>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <dependencies>
                <dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId></dependency>
            </dependencies>
            <dependencyManagement>
                <dependencies>
                    <dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency>
                </dependencies>
            </dependencyManagement>
        </profile>
        <profile>
            <id>kotlin</id>
            <activation><file><exists>${basedir}/src/main/kotlin</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>add-kotlin-sources</id><phase>generate-sources</phase><goals><goal>add-source</goal></goals>
                                <configuration><sources><source>src/main/kotlin</source></sources></configuration>
                            </execution>
                            <execution>
                                <id>add-kotlin-test-sources</id><phase>generate-sources</phase><goals><goal>add-test-source</goal></goals>
                                <configuration><sources><source>src/test/kotlin</source></sources></configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-maven-plugin</artifactId><version>${kotlin.version}</version>
                        <executions>
                            <execution>
                                <id>compile</id>
                                <phase>process-sources</phase>
                                <goals><goal>compile</goal></goals>
                                <configuration><sourceDirs><source>src/main/kotlin</source></sourceDirs></configuration>
                            </execution>
                            <execution>
                                <id>test-compile</id>
                                <phase>process-test-sources</phase>
                                <goals><goal>test-compile</goal></goals>
                                <configuration><sourceDirs><source>src/test/kotlin</source></sourceDirs></configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <dependencies>
                <dependency><groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-stdlib</artifactId><version>${kotlin.version}</version></dependency>
            </dependencies>
        </profile>

        <!-- this plugin has error sometimes, you can disable it by mvn -Dclirr=false -->
        <profile>
            <id>clirr</id>
            <activation>
                <property><name>clirr</name><value>true</value></property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin><groupId>org.codehaus.mojo</groupId><artifactId>clirr-maven-plugin</artifactId><version>${version.clirr-maven-plugin}</version></plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin><groupId>org.codehaus.mojo</groupId><artifactId>clirr-maven-plugin</artifactId></plugin>
                </plugins>
            </build>
            <reporting>
                <plugins>
                    <plugin><groupId>org.codehaus.mojo</groupId><artifactId>clirr-maven-plugin</artifactId></plugin>
                </plugins>
            </reporting>
        </profile>

        <profile>
            <id>jira_project</id>
            <activation><property><name>jira.projectKey</name></property></activation>
            <properties>
                <jira.user>admin</jira.user>
                <jira.password>admin_pass</jira.password>
            </properties>
            <reporting>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-changes-plugin</artifactId>
                        <version>${version.maven-changes-plugin}</version>
                        <configuration>
                            <!-- if jira version > 5.1, set 'useJql' to true -->
                            <useJql>true</useJql>
                            <jiraUser>${jira.user}</jiraUser>
                            <jiraPassword>${jira.password}</jiraPassword>
                            <!--<onlyCurrentVersion>true</onlyCurrentVersion>-->
                            <!-- http://jira7/rest/api/2/resolution/ -->
                            <!-- http://jira7/rest/api/2/status/ -->
                            <resolutionIds>完成</resolutionIds>
                            <statusIds>关闭</statusIds>
                        </configuration>
                        <reportSets>
                            <reportSet>
                                <reports>
                                    <report>jira-report</report>
                                    <!--<report>changes-report</report>-->
                                </reports>
                            </reportSet>
                        </reportSets>
                    </plugin>
                </plugins>
            </reporting>
        </profile>
        <!-- @formatter:on -->

        <profile>
            <id>userProperties</id>
            <activation><file><exists>${basedir}/src/main/resources/userProperties.properties</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>filtering-dockerfile</id>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}</outputDirectory>
                                    <delimiters>
                                        <!--<delimiter>${*}</delimiter>-->
                                        <delimiter>@</delimiter>
                                    </delimiters>
                                    <resources>
                                        <resource>
                                            <directory>src/main/resources</directory>
                                            <includes>
                                                <include>userProperties.properties</include>
                                            </includes>
                                            <filtering>true</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- @formatter:off -->
        <profile>
            <id>docker-auto-clean-project_basedir-dockerfile</id>
            <activation><file><exists>${basedir}/Dockerfile</exists></file></activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>auto-clean-dockerfile</id>
                                <phase>clean</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <delete failonerror="false">
                                            <fileset dir="${project.basedir}" includes="Dockerfile"/>
                                        </delete>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- @formatter:on -->
        <!-- @formatter:off -->
        <profile>
            <!-- value of ${docker.image.prefix} should ends with a '/' -->
            <id>docker-default-docker_image_prefix</id>
            <activation>
                <file><exists>${basedir}/src/main/resources/docker/Dockerfile</exists></file>
                <property><name>!docker.image.prefix</name></property>
            </activation>
            <properties><docker.image.prefix></docker.image.prefix></properties>
        </profile>
        <!-- @formatter:on -->
        <!-- @formatter:off -->
        <profile>
            <id>dockerfile-maven-plugin-lifecycle-binding-on-deploy_publish_segregation-deploy</id>
            <activation>
                <file><exists>${basedir}/src/main/resources/docker/Dockerfile</exists></file>
                <property><name>mvn.deploy.publish.segregation.goal.deploy</name><value>true</value></property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>dockerfile-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>push-image</id>
                                    <goals><goal>push</goal></goals>
                                    <phase>deploy</phase>
                                </execution>
                            </executions>
                        </plugin>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>push-image</id>
                                    <phase>deploy</phase>
                                    <goals><goal>push</goal></goals>
                                </execution>
                            </executions>
                        </plugin>
                        -->
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <!-- @formatter:on -->
        <!-- @formatter:off -->
        <profile>
            <id>dockerfile_maven_plugin-lifecycle_binding-on-deploy_publish_segregation-package</id>
            <activation>
                <file><exists>${basedir}/src/main/resources/docker/Dockerfile</exists></file>
                <property><name>mvn.deploy.publish.segregation.goal.package</name><value>true</value></property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>dockerfile-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>build-image</id>
                                    <goals><goal>build</goal></goals>
                                    <phase>package</phase>
                                </execution>
                            </executions>
                        </plugin>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>build-image</id>
                                    <phase>package</phase>
                                    <goals><goal>build</goal></goals>
                                </execution>
                            </executions>
                        </plugin>
                        -->
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <!-- @formatter:on -->
        <!-- @formatter:off -->
        <profile>
            <id>dockerfile_maven_plugin-lifecycle_binding-when-not-deploy_publish_segregation</id>
            <activation>
                <file><exists>${basedir}/src/main/resources/docker/Dockerfile</exists></file>
                <property><name>!mvn.deploy.publish.segregation</name></property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>dockerfile-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>default</id>
                                    <goals>
                                        <goal>build</goal>
                                        <!--
                                        I found docker-info was built, installed and deployed twice.
                                        This made build failed when re-deploy is not allowed on artifact repository.

                                        see: [docker-info.jar will be uploaded twice](https://github.com/spotify/dockerfile-maven/issues/11)

                                        If you don't run the tag "goal", you must specify the property "dockerfile.repository".
                                        -->
                                        <!--<goal>tag</goal>-->
                                        <goal>push</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <!--
                        <plugin>
                            <groupId>com.spotify</groupId>
                            <artifactId>docker-maven-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>build-image</id>
                                    <phase>package</phase>
                                    <goals><goal>build</goal></goals>
                                </execution>
                                <execution>
                                    <id>push-image</id>
                                    <phase>deploy</phase>
                                    <goals><goal>push</goal></goals>
                                </execution>
                            </executions>
                        </plugin>
                        -->
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <!-- @formatter:on -->
        <!-- @formatter:off -->
        <profile>
            <!-- see: http://petr.kozelka.net/blog/2009/10/22/how-to-build-a-zip-output-artifact-in-maven/ -->
            <id>docker-deploy-info-package</id>
            <activation>
                <file><exists>${basedir}/src/main/resources/docker/Dockerfile</exists></file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>filtering-dockerfile</id>
                                <phase>process-sources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}</outputDirectory>
                                    <delimiters>
                                        <!--<delimiter>${*}</delimiter>-->
                                        <delimiter>@</delimiter>
                                    </delimiters>
                                    <resources>
                                        <resource>
                                            <directory>src/main/resources/docker</directory>
                                            <filtering>true</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>deploy-config-package</id>
                                <phase>prepare-package</phase>
                                <goals><goal>run</goal></goals>
                                <configuration>
                                    <target>
                                        <replace file="docker-compose-base.yml" token="@artifact.repository@" value="${nexus3}"/>
                                        <replace file="docker-compose-base.yml" token="@build.timestamp@" value="${maven.build.timestamp}"/>
                                        <replace file="docker-compose-base.yml" token="@docker.image.prefix@" value="${docker.image.prefix}"/>
                                        <replace file="docker-compose-base.yml" token="@docker.registry@" value="${docker.registry}"/>
                                        <replace file="docker-compose-base.yml" token="@git.branch@" value="${git.branch}"/>
                                        <replace file="docker-compose-base.yml" token="@git.commit.id@" value="${git.commit.id}"/>
                                        <replace file="docker-compose-base.yml" token="@git.commit.id.abbrev@" value="${git.commit.id.abbrev}"/>
                                        <replace file="docker-compose-base.yml" token="@git.commit.time@" value="${git.commit.time}"/>
                                        <replace file="docker-compose-base.yml" token="@git.remote.origin.url@" value="${git.remote.origin.url}"/>
                                        <replace file="docker-compose-base.yml" token="@project.artifactId@" value="${project.artifactId}"/>
                                        <replace file="docker-compose-base.yml" token="@project.groupId@" value="${project.groupId}"/>
                                        <replace file="docker-compose-base.yml" token="@project.version@" value="${project.version}"/>
                                        <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-deploy.zip">
                                            <fileset dir="."
                                                     defaultexcludes="no"
                                                     includes="data/**/.gitignore,data/**/permissions,${project.artifactId}.properties,instance.properties"
                                                     excludes="**/*.log,**/*.tmp,**/*.bak"
                                            />
                                            <fileset dir="." includes="docker-compose*.yml"/>
                                        </zip>
                                        <copy file="${project.build.directory}/${project.artifactId}-${project.version}-deploy.zip"
                                              tofile="${project.basedir}/src/main/docker/deploy.zip"
                                              overwrite="true"
                                        />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-deploy-config-package</id>
                                <phase>prepare-package</phase>
                                <goals><goal>attach-artifact</goal></goals>
                                <configuration>
                                    <artifacts>
                                        <artifact>
                                            <classifier>deploy</classifier>
                                            <file>${project.build.directory}/${project.artifactId}-${project.version}-deploy.zip</file>
                                            <type>zip</type>
                                        </artifact>
                                    </artifacts>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-deploy-config-package</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}/src/main/docker</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.build.directory}</directory>
                                            <includes>
                                                <include>${project.artifactId}-${project.version}-deploy.zip</include>
                                            </includes>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                    <!-- maven-jar-plugin can not copy .* hidden files -->
                    <!--
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>deploy-config-package</id>
                                <phase>package</phase>
                                <configuration>
                                    <classifier>deploy</classifier>
                                    <classesDirectory>${project.basedir}</classesDirectory>
                                    <includes>
                                        <include>/docker-compose*.yml</include>
                                        <include>/data/**/*</include>
                                    </includes>
                                    <excludes>
                                        <exclude>**/*.log</exclude>
                                        <exclude>**/*.tmp</exclude>
                                        <exclude>**/*.bak</exclude>
                                    </excludes>
                                </configuration>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                </plugins>
            </build>
        </profile>

        <profile>
            <id>infrastructure_custom</id>
            <activation><property><name>infrastructure</name><value>custom</value></property></activation>
            <distributionManagement>
                <repository><id>custom-nexus3-releases</id><url>${custom.nexus3}repository/maven-releases/</url></repository>
                <snapshotRepository><id>custom-nexus3-snapshots</id><url>${custom.nexus3}repository/maven-snapshots/</url></snapshotRepository>
            </distributionManagement>
            <pluginRepositories>
                <pluginRepository>
                    <id>custom-nexus3-releases</id>
                    <name>custom nexus3 releases</name>
                    <url>${custom.nexus3}repository/maven-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>custom-nexus3-snapshots</id>
                    <name>custom nexus3 snapshots</name>
                    <url>${custom.nexus3}repository/maven-snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>custom-nexus3-thirdparty</id>
                    <name>custom nexus3 thirdparty</name>
                    <url>${custom.nexus3}repository/maven-thirdparty/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
            </pluginRepositories>
            <properties>
                <checkstyle.config.location>${custom.checkstyle.config.location}</checkstyle.config.location>
                <docker.registry.url>${custom.docker.registry.url}</docker.registry.url>
                <frontend.nodeDownloadRoot>${custom.frontend.nodeDownloadRoot}</frontend.nodeDownloadRoot>
                <frontend.npmDownloadRoot>${custom.frontend.npmDownloadRoot}</frontend.npmDownloadRoot>
                <nexus.staging.serverId>${infrastructure}-staging</nexus.staging.serverId>
                <!--<nexus2>${custom.nexus2}</nexus2>-->
                <nexus3>${custom.nexus3}</nexus3>
                <pmd.ruleset.location>${custom.pmd.ruleset.location}</pmd.ruleset.location>
                <sonar.host.url>${custom.sonar.host.url}</sonar.host.url>
            </properties>
            <repositories>
                <repository>
                    <id>custom-nexus3-releases</id>
                    <name>custom nexus3 releases</name>
                    <url>${custom.nexus3}repository/maven-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
                <repository>
                    <id>custom-nexus3-snapshots</id>
                    <name>custom nexus3 snapshots</name>
                    <url>${custom.nexus3}repository/maven-snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
                <repository>
                    <id>custom-nexus3-thirdparty</id>
                    <name>custom nexus3 thirdparty</name>
                    <url>${custom.nexus3}repository/maven-thirdparty/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
            </repositories>
        </profile>

        <profile>
            <id>infrastructure_custom-dav-site</id>
            <activation><property><name>github.site.publish</name><value>false</value></property></activation>
            <distributionManagement>
                <site><id>custom-nexus3-mvnsite</id><url>dav:${custom.nexus3}repository/mvnsite/${site.path}/</url></site>
            </distributionManagement>
        </profile>

        <profile>
            <id>infrastructure_ossrh</id>
            <activation><property><name>infrastructure</name><value>ossrh</value></property></activation>
            <distributionManagement>
                <repository><id>ossrh-nexus2-staging</id><url>${ossrh.nexus2}service/local/staging/deploy/maven2/</url></repository>
                <snapshotRepository><id>ossrh-nexus2-snapshots</id><url>${ossrh.nexus2}content/repositories/snapshots/</url></snapshotRepository>
            </distributionManagement>
            <pluginRepositories>
                <pluginRepository>
                    <id>ossrh-nexus2-releases</id>
                    <name>ossrh nexus2 releases</name>
                    <url>${ossrh.nexus2}content/repositories/releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>ossrh-nexus2-snapshots</id>
                    <name>ossrh nexus2 snapshots</name>
                    <url>${ossrh.nexus2}content/repositories/snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>ossrh-nexus2-thirdparty</id>
                    <name>ossrh nexus2 thirdparty</name>
                    <url>${ossrh.nexus2}content/repositories/third-party-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
            </pluginRepositories>
            <properties>
                <checkstyle.config.location>${ossrh.checkstyle.config.location}</checkstyle.config.location>
                <docker.registry.url>${ossrh.docker.registry.url}</docker.registry.url>
                <frontend.nodeDownloadRoot>${ossrh.frontend.nodeDownloadRoot}</frontend.nodeDownloadRoot>
                <frontend.npmDownloadRoot>${ossrh.frontend.npmDownloadRoot}</frontend.npmDownloadRoot>
                <nexus.staging.serverId>${infrastructure}-nexus2-staging</nexus.staging.serverId>
                <nexus2>${ossrh.nexus2}</nexus2>
                <nexus3>${ossrh.nexus3}</nexus3>
                <pmd.ruleset.location>${ossrh.pmd.ruleset.location}</pmd.ruleset.location>
                <sonar.host.url>${ossrh.sonar.host.url}</sonar.host.url>
            </properties>
            <repositories>
                <repository>
                    <id>ossrh-nexus2-releases</id>
                    <name>ossrh nexus2 releases</name>
                    <url>${ossrh.nexus2}content/repositories/releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
                <repository>
                    <id>ossrh-nexus2-snapshots</id>
                    <name>ossrh nexus2 snapshots</name>
                    <url>${ossrh.nexus2}content/repositories/snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
                <repository>
                    <id>ossrh-nexus2-thirdparty</id>
                    <name>ossrh nexus2 thirdparty</name>
                    <url>${ossrh.nexus2}content/repositories/third-party-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
            </repositories>
        </profile>

        <profile>
            <id>infrastructure_ossrh-dav-site</id>
            <activation><property><name>github.site.publish</name><value>false</value></property></activation>
            <distributionManagement>
                <site><id>ossrh-nexus3-mvnsite</id><url>dav:${ossrh.nexus3}repository/mvnsite/${site.path}/</url></site>
            </distributionManagement>
        </profile>

        <profile>
            <id>infrastructure_local</id>
            <activation><property><name>infrastructure</name><value>local</value></property></activation>
            <distributionManagement>
                <repository><id>local-nexus3-releases</id><url>${local.nexus3}repository/maven-releases/</url></repository>
                <snapshotRepository><id>local-nexus3-snapshots</id><url>${local.nexus3}repository/maven-snapshots/</url></snapshotRepository>
            </distributionManagement>
            <pluginRepositories>
                <pluginRepository>
                    <id>local-nexus3-releases</id>
                    <name>local nexus3 releases</name>
                    <url>${local.nexus3}repository/maven-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>local-nexus3-snapshots</id>
                    <name>local nexus3 snapshots</name>
                    <url>${local.nexus3}repository/maven-snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>local-nexus3-thirdparty</id>
                    <name>local nexus3 thirdparty</name>
                    <url>${local.nexus3}repository/maven-thirdparty/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </pluginRepository>
            </pluginRepositories>
            <properties>
                <checkstyle.config.location>${local.checkstyle.config.location}</checkstyle.config.location>
                <docker.registry.url>${local.docker.registry.url}</docker.registry.url>
                <frontend.nodeDownloadRoot>${local.frontend.nodeDownloadRoot}</frontend.nodeDownloadRoot>
                <frontend.npmDownloadRoot>${local.frontend.npmDownloadRoot}</frontend.npmDownloadRoot>
                <!--<nexus2>${local.nexus2}</nexus2>-->
                <nexus3>${local.nexus3}</nexus3>
                <pmd.ruleset.location>${local.pmd.ruleset.location}</pmd.ruleset.location>
                <!--sonar.jdbc.url>jdbc:h2:tcp://sonarqube.local/sonar</sonar.jdbc.url>
                <sonar.jdbc.url>jdbc:postgresql://postgresql:5432/sonar</sonar.jdbc.url-->
                <sonar.host.url>${local.sonar.host.url}</sonar.host.url>
            </properties>
            <repositories>
                <repository>
                    <id>local-nexus3-releases</id>
                    <name>local nexus3 releases</name>
                    <url>${local.nexus3}repository/maven-releases/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>false</enabled></snapshots>
                </repository>
                <repository>
                    <id>local-nexus3-snapshots</id>
                    <name>local nexus3 snapshots</name>
                    <url>${local.nexus3}repository/maven-snapshots/</url>
                    <releases><enabled>false</enabled></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
                <repository>
                    <id>local-nexus3-thirdparty</id>
                    <name>local nexus3 thirdparty</name>
                    <url>${local.nexus3}repository/maven-thirdparty/</url>
                    <releases><enabled>true</enabled><updatePolicy>never</updatePolicy></releases>
                    <snapshots><enabled>true</enabled><updatePolicy>daily</updatePolicy></snapshots>
                </repository>
            </repositories>
        </profile>

        <profile>
            <id>infrastructure_local-dav-site</id>
            <activation><property><name>github.site.publish</name><value>false</value></property></activation>
            <distributionManagement>
                <!-- scpexe uses privateKey, scp uses password -->
                <!-- scpexe://${domain_or_ip}:22/path/to/sites -->
                <site><id>local-nexus3-mvnsite</id><url>dav:${local.nexus3}repository/mvnsite/${site.path}/</url></site>
            </distributionManagement>
        </profile>
        <!-- @formatter:on -->
    </profiles>

    <reporting>
        <plugins>
            <plugin>
                <!--
                Plugin maven-jxr-plugin must in project's top level reporting plugins tag,
                if not, you will get error on site phase (site:site goal).
                Like this:
                maven-site-plugin:3.7.1:site (default-site) ...
                [WARNING] Unable to locate Source XRef to link to - DISABLED
                -->
                <artifactId>maven-jxr-plugin</artifactId>
            </plugin>
            <plugin>
                <!--
                Plugin maven-project-info-reports-plugin must in project's top level reporting plugins tag,
                if not, selective reports will not work.
                -->
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <!--<inherited>true</inherited>-->
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>ci-management</report>
                            <!-- dependencies, dependency-management reports are too slow, disable by default -->
                            <!--<report>dependencies</report>-->
                            <report>dependency-convergence</report>
                            <report>dependency-info</report>
                            <!--<report>dependency-management</report>-->
                            <report>distribution-management</report>
                            <!---->
                            <report>index</report>
                            <report>issue-management</report>
                            <report>licenses</report>
                            <report>mailing-lists</report>
                            <report>modules</report>
                            <!--<report>plugin-management</report>-->
                            <report>plugins</report>
                            <report>scm</report>
                            <report>summary</report>
                            <report>team</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>
</project>
