<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.groupbyinc</groupId>
  <artifactId>parent</artifactId>
  <version>41</version>

  <packaging>pom</packaging>

  <name>GroupBy - Parent</name>
  <description>${project.name}</description>

  <url>http://www.groupbyinc.com/</url>

  <inceptionYear>2013</inceptionYear>

  <organization>
    <name>GroupBy Inc.</name>
    <url>http://www.groupbyinc.com/</url>
  </organization>

  <scm>
    <url>https://github.com/groupby/parent-pom</url>
    <connection>scm:git:git@github.com:groupby/parent-pom.git</connection>
    <developerConnection>scm:git:git@github.com:groupby/parent-pom.git</developerConnection>
    <tag>v41</tag>
  </scm>

  <ciManagement>
    <system>CircleCI</system>
    <url>https://circleci.com/gh/groupby/</url>
  </ciManagement>

  <issueManagement>
    <system>JIRA</system>
    <url>https://groupby.atlassian.net/</url>
  </issueManagement>

  <developers>
    <developer>
      <id>osman</id>
      <name>Osman Currim</name>
      <email>osman.currim@groupbyinc.com</email>
      <organization>${project.organization.name}</organization>
      <organizationUrl>${project.organization.url}</organizationUrl>
      <roles>
        <role>Developer</role>
      </roles>
    </developer>
  </developers>

  <modules>
    <module>oss</module>
    <module>spring</module>
  </modules>

  <licenses>
    <license>
      <name>Proprietary</name>
    </license>
  </licenses>

  <properties>
    <project.build.jdkVersion>1.8</project.build.jdkVersion>
    <project.organization.simpleName>GroupBy</project.organization.simpleName>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.locale>en_US</project.build.locale>

    <java.version>1.8</java.version>

    <codacy.project.token />
    <skip.signing>false</skip.signing>
    <repo.upload.retryAttempts>1</repo.upload.retryAttempts>
    <project.built.artifact.base>${project.build.directory}/${project.artifactId}-${project.version}</project.built.artifact.base>

    <github.release.version>1.2.0</github.release.version>
    <github.release.artifact>${project.built.artifact.base}.jar</github.release.artifact>
    <github.release.uber.artifact>${project.built.artifact.base}-uber.jar</github.release.uber.artifact>

    <test.coverage.ratio>0.75</test.coverage.ratio>
    <test.junit.additionalArgs />
    <test.runOrder>random</test.runOrder>
    <test.forkCount>1C</test.forkCount>
    <test.reuseForks>true</test.reuseForks>
    <test.threadLocal>false</test.threadLocal>
    <test.groups.excluded />
    <test.match />
    <test.threadCount />
    <test.parallel />

    <test.integration.forkCount>1C</test.integration.forkCount>
    <test.integration.reuseForks>true</test.integration.reuseForks>
    <test.integration.threadLocal>false</test.integration.threadLocal>
    <test.integration.groups />
    <test.integration.match />
    <test.integration.threadCount />
    <test.integration.parallel />
    <argLine>
      -Xms512m
      -Xmx512m
      -XX:+TieredCompilation
      -XX:TieredStopAtLevel=1
      -XX:+CMSClassUnloadingEnabled
      -Dfile.encoding=${project.build.sourceEncoding}
      ${test.junit.additionalArgs}
    </argLine>

    <!-- # Test flags -->
    <test.skip.unit>true</test.skip.unit>
    <test.skip.integration>true</test.skip.integration>
    <test.skip.functional>true</test.skip.functional>
    <test.skip.data>true</test.skip.data>
    <test.skip.search>true</test.skip.search>

    <!-- # Test indicators -->
    <test.i.positive>✓</test.i.positive>
    <test.i.negative>✗</test.i.negative>
    <test.i.unit>${test.i.negative}</test.i.unit>
    <test.i.integration>${test.i.negative}</test.i.integration>
    <test.i.performance>${test.i.negative}</test.i.performance>
    <test.i.regression>${test.i.negative}</test.i.regression>
    <test.i.functional>${test.i.negative}</test.i.functional>
    <test.i.data>${test.i.negative}</test.i.data>
    <test.i.search>${test.i.negative}</test.i.search>
    <test.i.skip.headless>${test.i.negative}</test.i.skip.headless>
  </properties>

  <build>

    <defaultGoal>clean install</defaultGoal>

    <pluginManagement>
      <plugins>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <source>${project.build.jdkVersion}</source>
            <target>${project.build.jdkVersion}</target>
            <compilerVersion>${project.build.jdkVersion}</compilerVersion>
            <encoding>${project.build.sourceEncoding}</encoding>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <forceCreation>true</forceCreation>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <packageName />
              </manifest>
              <manifestEntries>
                <Jdk-Compatibility-Version>${project.build.jdkVersion}</Jdk-Compatibility-Version>
                <!--suppress MavenModelInspection -->
                <Maven-Version>${maven.version}</Maven-Version>
                <Encoding>${project.build.sourceEncoding}</Encoding>
                <Built-By>${project.organization.name}</Built-By>
                <Created-By>${project.organization.name}</Created-By>
                <!--suppress MavenModelInspection -->
                <Created-Date>${date.current}</Created-Date>
                <Vendor>${project.organization.name}</Vendor>
                <Vendor-Url>${project.organization.url}</Vendor-Url>
                <!--suppress MavenModelInspection -->
                <Copyright>Copyright (c) ${date.current.year} ${project.organization.name}</Copyright>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
          <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <packageName />
              </manifest>
              <manifestEntries>
                <Jdk-Compatibility-Version>${project.build.jdkVersion}</Jdk-Compatibility-Version>
                <!--suppress MavenModelInspection -->
                <Maven-Version>${maven.version}</Maven-Version>
                <Encoding>${project.build.sourceEncoding}</Encoding>
                <Built-By>${project.organization.name}</Built-By>
                <Created-By>${project.organization.name}</Created-By>
                <!--suppress MavenModelInspection -->
                <Created-Date>${date.current}</Created-Date>
                <Vendor>${project.organization.name}</Vendor>
                <Vendor-Url>${project.organization.url}</Vendor-Url>
                <!--suppress MavenModelInspection -->
                <Copyright>Copyright (c) ${date.current.year} ${project.organization.name}</Copyright>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <filesets>
              <fileset>
                <directory>${project.basedir}</directory>
                <includes>
                  <include>dependency-reduced-pom.xml</include>
                </includes>
              </fileset>
            </filesets>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <configuration>
            <retryFailedDeploymentCount>${repo.upload.retryAttempts}</retryFailedDeploymentCount>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.6</version>
          <configuration>
            <artifactId>${project.artifactId}</artifactId>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <encoding>${project.build.sourceEncoding}</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.6.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>

        <plugin>
          <groupId>com.soebes.maven.plugins</groupId>
          <artifactId>echo-maven-plugin</artifactId>
          <version>0.3.0</version>
          <executions>
            <execution>
              <phase>generate-resources</phase>
              <goals>
                <goal>echo</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <echos>
              <echo>Properties:</echo>
              <echo>project.build.jdkVersion=${project.build.jdkVersion}</echo>
              <echo />
              <echo />
              <echo>Test Properties:</echo>
              <echo>test.runOrder=${test.runOrder}</echo>
              <echo>test.forkCount=${test.forkCount}</echo>
              <echo>test.threadLocal=${test.threadLocal}</echo>
              <echo>test.threadCount=${test.threadCount}</echo>
              <echo>test.parallel=${test.parallel}</echo>
              <echo>test.reuseForks=${test.reuseForks}</echo>
              <echo />
              <echo>Integration Test Properties:</echo>
              <echo>test.runOrder=${test.runOrder}</echo>
              <echo>test.integration.forkCount=${test.integration.forkCount}</echo>
              <echo>test.integration.threadLocal=${test.integration.threadLocal}</echo>
              <echo>test.integration.threadCount=${test.integration.threadCount}</echo>
              <echo>test.integration.parallel=${test.integration.parallel}</echo>
              <echo>test.integration.reuseForks=${test.integration.reuseForks}</echo>
              <echo />
              <echo>===========</echo>
              <echo>= argLine =</echo>
              <echo>===========</echo>
              <echo>${argLine}</echo>
              <echo>===========</echo>
              <echo />
              <echo>Test Matrix:</echo>
              <echo>unit tests: [${test.i.unit}]</echo>
              <echo>integration tests: [${test.i.integration}]</echo>
              <echo>- performance tests: [${test.i.performance}]</echo>
              <echo>regression tests: [${test.i.regression}]</echo>
              <echo>- functional: [${test.i.functional}]</echo>
              <echo>- skip.headless: [${test.i.skip.headless}]</echo>
              <echo>- data: [${test.i.data}]</echo>
              <echo />
              <echo>Run Properties:</echo>
              <!--suppress MavenModelInspection -->
              <echo>date.timestamp=${date.timestamp}</echo>
            </echos>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
              <configuration>
                <skip>${skip.signing}</skip>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.sonatype.plugins</groupId>
          <artifactId>nexus-staging-maven-plugin</artifactId>
          <version>1.6.8</version>
          <extensions>true</extensions>
          <configuration>
            <serverId>ossrh</serverId>
            <nexusUrl>https://oss.sonatype.org</nexusUrl>
            <autoReleaseAfterClose>true</autoReleaseAfterClose>
            <skipNexusStagingDeployMojo>${skip.signing}</skipNexusStagingDeployMojo>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.0</version>
          <configuration>
            <skipTests>${test.skip.unit}</skipTests>
            <excludedGroups>${test.groups.excluded}</excludedGroups>
            <runOrder>${test.runOrder}</runOrder>
            <forkCount>${test.forkCount}</forkCount>
            <reuseForks>${test.reuseForks}</reuseForks>
            <threadCount>${test.threadCount}</threadCount>
            <parallel>${test.parallel}</parallel>
            <test>${test.match}</test>
            <useFile>false</useFile>
            <disableXmlReport>false</disableXmlReport>
            <redirectTestOutputToFile>false</redirectTestOutputToFile>
          </configuration>
          <executions>
            <execution>
              <id>default-test</id>
              <goals>
                <goal>test</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.22.0</version>
          <configuration>
            <skipTests>${test.skip.integration}</skipTests>
            <includes>
              <include>**/*Test.java</include>
              <include>**/*IT.java</include>
            </includes>
            <groups>${test.integration.groups}</groups>
            <runOrder>${test.runOrder}</runOrder>
            <forkCount>${test.integration.forkCount}</forkCount>
            <reuseForks>${test.integration.reuseForks}</reuseForks>
            <threadCount>${test.integration.threadCount}</threadCount>
            <parallel>${test.integration.parallel}</parallel>
            <useFile>false</useFile>
            <disableXmlReport>false</disableXmlReport>
            <redirectTestOutputToFile>false</redirectTestOutputToFile>
          </configuration>
          <executions>
            <execution>
              <id>integration-test</id>
              <goals>
                <goal>integration-test</goal>
              </goals>
            </execution>
            <execution>
              <id>verify</id>
              <goals>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>io.fabric8</groupId>
          <artifactId>docker-maven-plugin</artifactId>
          <version>0.26.1</version>
          <configuration>
            <autoPull>always</autoPull>
            <verbose>true</verbose>
          </configuration>
        </plugin>

        <plugin>
          <groupId>de.jutzig</groupId>
          <artifactId>github-release-plugin</artifactId>
          <version>${github.release.version}</version>
          <configuration>
            <description>Release v${project.version}</description>
            <releaseName>v${project.version}</releaseName>
            <tag>v${project.version}</tag>
            <artifact>${github.release.artifact}</artifact>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <scmCommentPrefix xml:space="preserve">[maven-release-plugin] [skip ci] </scmCommentPrefix>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <allowTimestampedSnapshots>false</allowTimestampedSnapshots>
            <tagNameFormat>v@{project.version}</tagNameFormat>
            <pomFileName>pom.xml</pomFileName>
            <goals>deploy</goals>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.0.0</version>
          <executions>
            <!-- ### set project.version.lowercase property -->
            <execution>
              <id>set-project.version.lowercase-property</id>
              <goals>
                <goal>regex-property</goal>
              </goals>
              <configuration>
                <name>project.version.lowercase</name>
                <value>${project.version}</value>
                <regex>SNAPSHOT</regex>
                <replacement>snapshot</replacement>
                <failIfNoMatch>false</failIfNoMatch>
              </configuration>
            </execution>
            <!-- ### set project.version.trimmed property -->
            <execution>
              <id>set-project.version.trimmed-property</id>
              <goals>
                <goal>regex-property</goal>
              </goals>
              <configuration>
                <name>project.version.trimmed</name>
                <value>${project.version}</value>
                <regex>-SNAPSHOT</regex>
                <replacement />
                <failIfNoMatch>false</failIfNoMatch>
              </configuration>
            </execution>
            <!-- ### set parsedVersion property (parsed project.version into components) -->
            <execution>
              <id>set-parsedVersion-property</id>
              <goals>
                <goal>parse-version</goal>
              </goals>
            </execution>
            <!-- ### set maven.version property -->
            <execution>
              <id>set-maven.version-property</id>
              <goals>
                <goal>maven-version</goal>
              </goals>
            </execution>
            <!-- ### set date.current property -->
            <execution>
              <id>set-date.current-property</id>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.current</name>
                <locale>${project.build.locale}</locale>
                <pattern>yyyy-MM-dd'T'HH:mm:ssZ</pattern>
              </configuration>
            </execution>
            <!-- ### set date.current.simple property -->
            <execution>
              <id>set-date.current.simple-property</id>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.current.simple</name>
                <locale>${project.build.locale}</locale>
                <pattern>yyyyMMddHHmmss</pattern>
              </configuration>
            </execution>
            <!-- ### set date.current.year property -->
            <execution>
              <id>set-date.current.year-property</id>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.current.year</name>
                <locale>${project.build.locale}</locale>
                <pattern>yyyy</pattern>
              </configuration>
            </execution>
            <!-- ### set date.current.humanReadable property -->
            <execution>
              <id>set-date.current.humanReadable-property</id>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.current.humanReadable</name>
                <locale>${project.build.locale}</locale>
                <pattern>MMMM d, yyyy</pattern>
              </configuration>
            </execution>
            <!-- ### set date.timestamp property -->
            <execution>
              <id>set-date.timestamp-property</id>
              <phase>initialize</phase>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.timestamp</name>
                <locale>${project.build.locale}</locale>
                <pattern>yyyyMMddHHmmSSS</pattern>
              </configuration>
            </execution>
            <!-- ### set date.timestamp.seconds property -->
            <execution>
              <id>set-date.timestamp.seconds-property</id>
              <phase>initialize</phase>
              <goals>
                <goal>timestamp-property</goal>
              </goals>
              <configuration>
                <name>date.timestamp.seconds</name>
                <locale>${project.build.locale}</locale>
                <pattern>ss</pattern>
              </configuration>
            </execution>
            <!-- ### remove old installed artifacts from local repo to free up local disk space -->
            <execution>
              <id>remove-old-installers</id>
              <goals>
                <goal>remove-project-artifact</goal>
              </goals>
              <configuration>
                <removeAll>false</removeAll>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.2</version>
          <executions>
            <execution>
              <id>prepare-agent</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
              <configuration>
                <destFile>${project.build.directory}/jacoco-ut.exec</destFile>
              </configuration>
            </execution>
            <execution>
              <id>prepare-agent-integration</id>
              <goals>
                <goal>prepare-agent-integration</goal>
              </goals>
              <configuration>
                <destFile>${project.build.directory}/jacoco-it.exec</destFile>
              </configuration>
            </execution>
            <execution>
              <id>report-unit</id>
              <goals>
                <goal>report</goal>
              </goals>
              <configuration>
                <dataFile>${project.build.directory}/jacoco-ut.exec</dataFile>
              </configuration>
            </execution>
            <execution>
              <id>report-integration</id>
              <goals>
                <goal>report-integration</goal>
              </goals>
              <configuration>
                <dataFile>${project.build.directory}/jacoco-it.exec</dataFile>
              </configuration>
            </execution>
            <execution>
              <id>merge-data-files</id>
              <goals>
                <goal>merge</goal>
              </goals>
              <configuration>
                <fileSets>
                  <fileSet>
                    <directory>${project.build.directory}</directory>
                    <includes>
                      <include>*.exec</include>
                    </includes>
                  </fileSet>
                </fileSets>
                <destFile>${project.build.directory}/jacoco.exec</destFile>
              </configuration>
            </execution>
            <execution>
              <id>default-check</id>
              <goals>
                <goal>check</goal>
              </goals>
              <configuration>
                <dataFile>${project.build.directory}/jacoco.exec</dataFile>
                <rules>
                  <!--  implementation is needed only for Maven 2  -->
                  <rule implementation="org.jacoco.maven.RuleConfiguration">
                    <element>BUNDLE</element>
                    <limits>
                      <!--  implementation is needed only for Maven 2  -->
                      <limit implementation="org.jacoco.report.check.Limit">
                        <counter>COMPLEXITY</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>${test.coverage.ratio}</minimum>
                      </limit>
                    </limits>
                  </rule>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>com.gavinmogan</groupId>
          <artifactId>codacy-maven-plugin</artifactId>
          <version>1.2.0</version>
          <executions>
            <execution>
              <id>test-coverage</id>
              <phase>install</phase>
              <goals>
                <goal>coverage</goal>
              </goals>
              <configuration>
                <!--suppress MavenModelInspection -->
                <apiToken>${env.CODACY_API_TOKEN}</apiToken>
                <projectToken>${codacy.project.token}</projectToken>
                <coverageReportFile>${project.build.directory}/site/jacoco/jacoco.xml</coverageReportFile>
                <codacyApiBaseUrl>https://api.codacy.com</codacyApiBaseUrl>
              </configuration>
            </execution>
          </executions>
        </plugin>

      </plugins>
    </pluginManagement>

    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M2</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.0</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>com.soebes.maven.plugins</groupId>
        <artifactId>echo-maven-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <inherited>false</inherited>
      </plugin>

      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <inherited>false</inherited>
      </plugin>

    </plugins>

  </build>

  <profiles>

    <profile>
      <id>intellij</id>
      <activation>
        <property>
          <name>env.INTELLIJ_HOME</name>
        </property>
      </activation>
      <properties>
        <environment>local</environment>
        <logger.log4j.root.level>INFO</logger.log4j.root.level>
        <logger.log4j.com.groupbyinc.level>DEBUG</logger.log4j.com.groupbyinc.level>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <argLine>${argLine}</argLine>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <argLine>${argLine}</argLine>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>circleci</id>
      <activation>
        <property>
          <name>env.CIRCLECI</name>
        </property>
      </activation>
      <properties>
        <test.runOrder>filesystem</test.runOrder>
        <test.forkCount>1</test.forkCount>
        <test.integration.forkCount>1</test.integration.forkCount>
        <test.reuseForks>false</test.reuseForks>
        <test.integration.reuseForks>false</test.integration.reuseForks>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>coverage</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>com.gavinmogan</groupId>
            <artifactId>codacy-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>github-release</id>
      <build>
        <plugins>
          <plugin>
            <!--suppress MavenModelInspection -->
            <groupId>de.jutzig</groupId>
            <!--suppress MavenModelInspection -->
            <artifactId>github-release-plugin</artifactId>
            <executions>
              <execution>
                <id>github-deploy</id>
                <phase>deploy</phase>
                <goals>
                  <goal>release</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>


    <!-- ************* -->
    <!-- TEST PROFILES -->
    <!-- ************* -->
    <profile>
      <id>unit</id>
      <properties>
        <test.i.unit>${test.i.positive}</test.i.unit>
        <test.skip.unit>false</test.skip.unit>
      </properties>
    </profile>

    <profile>
      <id>integration</id>
      <properties>
        <test.i.integration>${test.i.positive}</test.i.integration>
        <test.skip.integration>false</test.skip.integration>
      </properties>
    </profile>

    <profile>
      <id>performance</id>
      <properties>
        <test.i.integration>${test.i.positive}</test.i.integration>
        <test.i.performance>${test.i.positive}</test.i.performance>
        <test.skip.integration>false</test.skip.integration>
      </properties>
    </profile>

    <profile>
      <id>functional</id>
      <properties>
        <test.i.regression>${test.i.positive}</test.i.regression>
        <test.i.functional>${test.i.positive}</test.i.functional>
        <test.skip.functional>false</test.skip.functional>
        <test.skip.elasticsearch>false</test.skip.elasticsearch>
      </properties>
    </profile>

    <profile>
      <id>data</id>
      <properties>
        <test.i.regression>${test.i.positive}</test.i.regression>
        <test.i.data>${test.i.positive}</test.i.data>
        <test.skip.data>false</test.skip.data>
      </properties>
    </profile>

    <profile>
      <id>search</id>
      <properties>
        <test.i.regression>${test.i.positive}</test.i.regression>
        <test.i.search>${test.i.positive}</test.i.search>
        <test.skip.search>false</test.skip.search>
      </properties>
    </profile>

    <profile>
      <id>regression</id>
      <properties>
        <test.i.regression>${test.i.positive}</test.i.regression>
        <test.i.functional>${test.i.positive}</test.i.functional>
        <test.i.data>${test.i.positive}</test.i.data>
        <test.skip.functional>false</test.skip.functional>
        <test.skip.data>false</test.skip.data>
        <test.skip.search>false</test.skip.search>
      </properties>
    </profile>

    <profile>
      <id>all</id>
      <properties>
        <test.i.unit>${test.i.positive}</test.i.unit>
        <test.i.integration>${test.i.positive}</test.i.integration>
        <test.i.performance>${test.i.positive}</test.i.performance>
        <test.i.functional>${test.i.positive}</test.i.functional>
        <test.i.data>${test.i.positive}</test.i.data>
        <test.i.search>${test.i.positive}</test.i.search>

        <test.skip.unit>false</test.skip.unit>
        <test.skip.integration>false</test.skip.integration>
        <test.skip.functional>false</test.skip.functional>
        <test.skip.data>false</test.skip.data>
        <test.skip.search>false</test.skip.search>
      </properties>
    </profile>

    <profile>
      <id>build-docker</id>
      <build>
        <plugins>
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>build-docker-image</id>
                <goals>
                  <goal>build</goal>
                </goals>
                <phase>package</phase>
              </execution>
              <execution>
                <id>push-docker-image</id>
                <goals>
                  <goal>push</goal>
                </goals>
                <phase>deploy</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

  <pluginRepositories>
    <pluginRepository>
      <id>groupby-public</id>
      <name>GroupBy-Public</name>
      <url>https://maven.pkg.github.com/groupby/maven-releases/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <distributionManagement>
    <repository>
      <id>groupby-public</id>
      <name>GroupBy - Public</name>
      <url>https://maven.pkg.github.com/groupby/maven-releases/</url>
    </repository>
    <snapshotRepository>
      <id>groupby-public</id>
      <name>GroupBy - Public</name>
      <url>https://maven.pkg.github.com/groupby/maven-releases/</url>
    </snapshotRepository>
  </distributionManagement>

</project>
