<commit_before><?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2020 The RoboZonky Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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.github.robozonky</groupId>
  <artifactId>robozonky</artifactId>
  <version>5.9.0-SNAPSHOT</version>
  <modules>
    <module>robozonky-api</module>
    <module>robozonky-app</module>
    <module>robozonky-cli</module>
    <module>robozonky-notifications</module>
    <module>robozonky-strategy-natural</module>
    <module>robozonky-test</module>
    <module>robozonky-distribution</module>
  </modules>
  <packaging>pom</packaging>
  <name>RoboZonky: Easy automated investing with Zonky</name>
  <description>Automated investing on Zonky. Define investment strategy, run, profit.</description>
  <url>http://www.robozonky.cz/</url>

  <properties>
    <!-- Default encoding is UTF-8, no matter what platform we're on. -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>
    <!-- Various dependency versions to be used later. -->
    <surefire.version>3.0.0-M4</surefire.version>
    <version.com.fasterxml.jackson>2.10.2</version.com.fasterxml.jackson>
    <version.org.antlr>4.8</version.org.antlr>
    <version.org.codehaus.izpack>5.1.3</version.org.codehaus.izpack>
    <version.info.picocli>4.2.0</version.info.picocli>
    <version.org.jboss.resteasy>4.5.2.Final</version.org.jboss.resteasy>
    <version.org.junit5>6.1</version.org.junit5>
    <version.org.junit>5.${version.org.junit5}</version.org.junit>
    <version.org.junit.platform>1.${version.org.junit5}</version.org.junit.platform>
    <version.org.mockito>3.3.2</version.org.mockito>
    <version.org.mock-server>5.9.0</version.org.mock-server>
    <version.org.apache.logging.log4j>2.13.1</version.org.apache.logging.log4j>
    <version.com.sun.mail>1.6.4</version.com.sun.mail>
    <!--
      Make sure tests work on Appveyor and other Windows platforms, while working together with Sonar Cloud.
      Recommended here: https://docs.sonarqube.org/display/PLUG/Usage+of+JaCoCo+with+SonarJava
     -->
    <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
    <!-- For the purposes of JaCoCo aggregate report. -->
    <aggregate.report.dir>robozonky-distribution/robozonky-distribution-aggregate/target/site/jacoco-aggregate/jacoco.xml</aggregate.report.dir>
    <!-- Mutation coverage details. -->
    <pit.skip>${skipTests}</pit.skip>
    <pit.threshold>90</pit.threshold>
  </properties>

  <dependencies> <!-- Libraries required for logging. Enforce this on project-level, otherwise it'd too tedious. -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-test</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-strategy-natural</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-notifications</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-app</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-app</artifactId>
        <version>${project.version}</version>
        <classifier>full</classifier>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-cli</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-cli</artifactId>
        <version>${project.version}</version>
        <classifier>full</classifier>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky.distribution</groupId>
        <artifactId>robozonky-distribution-full</artifactId>
        <version>${project.version}</version>
        <type>tar.xz</type>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-installer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!--
          JAX-RS.
          There is a massive set of exclusions of Java EE APIs that need to be later replaced by Jakarta EE.
          This is done in order for the sake of dependency convergence and eliminating Java EE/Jakarta EE conflicts.
      -->
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client-api</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-core-spi</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.annotation</groupId>
            <artifactId>jboss-annotations-api_1.3_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-core</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.annotation</groupId>
            <artifactId>jboss-annotations-api_1.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion> <!-- should not be necessary, yet drags in a ton of dependencies -->
            <groupId>com.github.fge</groupId>
            <artifactId>json-patch</artifactId>
          </exclusion>
          <exclusion> <!-- dragged in on account of the previously excluded json-patch -->
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpasyncclient</artifactId>
        <version>4.1.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore-nio</artifactId>
        <version>4.4.13</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
        <exclusions>
          <exclusion> <!-- Clashes with jakarta.activation from jakarta.mail. -->
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Email notifications. -->
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.30</version>
      </dependency>
      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>2.3.2</version>
        <exclusions>
          <exclusion> <!-- Clashes with jakarta.activation from jakarta.mail. -->
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>jakarta.mail</groupId>
        <artifactId>jakarta.mail-api</artifactId>
        <version>${version.com.sun.mail}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>${version.com.sun.mail}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>jakarta.activation</artifactId>
        <version>1.2.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.5</version>
        <exclusions>
          <exclusion> <!-- Already have one, Jakarta EE based. -->
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.icegreen</groupId>
        <artifactId>greenmail</artifactId>
        <version>1.5.10</version>
        <scope>test</scope>
        <exclusions>
          <exclusion> <!-- Already have one, Jakarta EE based. -->
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
          </exclusion>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Installer -->
      <dependency>
        <groupId>org.codehaus.izpack</groupId>
        <artifactId>izpack-api</artifactId>
        <version>${version.org.codehaus.izpack}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.izpack</groupId>
        <artifactId>izpack-panel</artifactId>
        <version>${version.org.codehaus.izpack}</version>
      </dependency>
      <dependency>
        <groupId>com.github.rutledgepaulv</groupId>
        <artifactId>paging-streams</artifactId>
        <version>0.8</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>${version.org.antlr}</version>
      </dependency>
      <dependency>
        <groupId>org.ini4j</groupId>
        <artifactId>ini4j</artifactId>
        <version>0.5.4</version>
      </dependency>
      <dependency>
        <groupId>info.picocli</groupId>
        <artifactId>picocli</artifactId>
        <version>${version.info.picocli}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.9</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.13</version>
      </dependency>
      <!-- Testing. -->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${version.org.junit}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${version.org.junit}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-engine</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${version.org.mockito}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${version.org.mockito}</version>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.15.0</version>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-junit-jupiter</artifactId>
        <version>${version.org.mock-server}</version>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-client-java</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-netty</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-core</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion> <!-- We have our own, based on Jakarta EE -->
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Logging. -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j18-impl</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency> <!-- For log4j's async logging. -->
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.4.2</version>
      </dependency>
      <!-- For the sake of used/unused dependency analysis and convergence. -->
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.11</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.13</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${version.org.junit}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-commons</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>2.1.5</version>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>1.3.5</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.1.Final</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.0-alpha0</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.11.0</version>
        <configuration>
          <configFile>${maven.multiModuleProjectDirectory}/ide-configuration/eclipse-format.xml</configFile>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <dependencyConvergence />
                <reactorModuleConvergence>
                  <ignoreModuleDependencies>true</ignoreModuleDependencies>
                </reactorModuleConvergence>
                <requireJavaVersion>
                  <version>[11,)</version>
                </requireJavaVersion>
                <requireReleaseDeps> <!-- No SNAPSHOT dependencies, except for our own for development purposes. -->
                  <failWhenParentIsSnapshot>false</failWhenParentIsSnapshot>
                  <excludes>
                    <exclude>com.github.robozonky:*</exclude>
                    <exclude>com.github.robozonky.distribution:*</exclude>
                  </excludes>
                </requireReleaseDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-maven</artifactId>
        <version>1.5.1</version>
        <dependencies>
          <dependency>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-junit5-plugin</artifactId>
            <version>0.12</version>
          </dependency>
        </dependencies>
        <configuration>
          <skip>${pit.skip}</skip>
          <timestampedReports>false</timestampedReports>
          <coverageThreshold>${pit.threshold}</coverageThreshold>
          <mutationThreshold>${pit.threshold}</mutationThreshold>
          <targetClasses>
            <param>com.github.robozonky.*</param>
          </targetClasses>
          <excludedMethods>
            <param>toString</param>
            <!--
              assertThat(a).isEqualTo(a) produces untested code where equals() contains a == b.
              This generates unwanted unkillable mutations.
              -->
            <param>equals</param>
            <param>hashCode</param>
          </excludedMethods>
          <jvmArgs> <!-- some tests may fail on non-UTF-8 machines -->
            <value>-Dfile.encoding=${project.build.sourceEncoding}</value>
          </jvmArgs>
          <avoidCallsTo>
            <avoidCallsTo>org.apache.logging.log4j</avoidCallsTo> <!-- don't mutate logging calls -->
          </avoidCallsTo>
          <!-- speed up PITest during development -->
          <maxDependencyDistance>2</maxDependencyDistance>
          <withHistory>true</withHistory>
        </configuration>
        <executions>
          <execution>
            <id>fail-on-coverage</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>mutationCoverage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <skip>${com.github.robozonky.distribution}</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <dependencies> <!-- Remove when 3.1.2 is released. -->
          <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-dependency-analyzer</artifactId>
            <version>1.11.1</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>declare-all-dependencies</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>true</failOnWarning>
              <ignoredUnusedDeclaredDependencies>
                <!-- Mostly service-loaded stuff. -->
                <ignoredUnusedDeclaredDependency>com.github.robozonky</ignoredUnusedDeclaredDependency>
                <!-- For async logging, configured at runtime. -->
                <ignoredUnusedDeclaredDependency>com.lmax</ignoredUnusedDeclaredDependency>
                <!-- For when we mess with deps exclusions. -->
                <ignoredUnusedDeclaredDependency>com.sun.activation</ignoredUnusedDeclaredDependency>
                <!-- Runtime dependency for javax/annotation/Priority. -->
                <ignoredUnusedDeclaredDependency>jakarta.annotation</ignoredUnusedDeclaredDependency>
                <!-- httpasyncclient replaces the regular client in runtime. -->
                <ignoredUnusedDeclaredDependency>org.apache.httpcomponents</ignoredUnusedDeclaredDependency>
                <!-- log4j-core is a base dependency of Log4J. -->
                <ignoredUnusedDeclaredDependency>org.apache.logging.log4j</ignoredUnusedDeclaredDependency>
                <!-- Service-loaded stuff such as Jackson provider. -->
                <ignoredUnusedDeclaredDependency>org.jboss.resteasy</ignoredUnusedDeclaredDependency>
                <ignoredUnusedDeclaredDependency>org.junit.jupiter</ignoredUnusedDeclaredDependency>
                <ignoredUnusedDeclaredDependency>org.mock-server</ignoredUnusedDeclaredDependency>
              </ignoredUnusedDeclaredDependencies>
              <ignoredUsedUndeclaredDependencies>
                <ignoredUsedUndeclaredDependency>com.fasterxml.jackson.core</ignoredUsedUndeclaredDependency>
                <ignoredUsedUndeclaredDependency>jakarta.xml.bind</ignoredUsedUndeclaredDependency>
              </ignoredUsedUndeclaredDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <rerunFailingTestsCount>1</rerunFailingTestsCount> <!-- Flaky tests are worked around. -->
          <useModulePath>false</useModulePath> <!-- Modularity in tests brings pain and no obvious benefits. -->
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <workingDirectory>${basedir}/target</workingDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <rerunFailingTestsCount>1</rerunFailingTestsCount> <!-- Flaky tests are worked around. -->
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <workingDirectory>${basedir}/target</workingDirectory>
        </configuration>
        <executions>
          <execution>
            <id>run-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
            <configuration>
                <skip>${com.github.robozonky.distribution}</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>11</release> <!-- minimum supported version of the JRE -->
          <!--
            picocli's support for compile-time error checking and GraalVM native images, more on this here:
            https://github.com/remkop/picocli/releases#4.0.0-annotation-processor
          -->
          <annotationProcessorPaths>
            <path>
              <groupId>info.picocli</groupId>
              <artifactId>picocli-codegen</artifactId>
              <version>${version.info.picocli}</version>
            </path>
          </annotationProcessorPaths>
          <compilerArgs>
            <arg>-Aproject=${project.groupId}/${project.artifactId}</arg>
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.0.0-M1</version>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin> <!-- 3.0.0-M1 breaks IZPack. See for similar: https://github.com/openhab/openhab-core/pull/408 -->
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <groupId>org.antlr</groupId>
          <artifactId>antlr4-maven-plugin</artifactId>
          <version>${version.org.antlr}</version>
        </plugin>
        <plugin> <!-- Shade plugin configuration shared by all distribution modules. -->
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.2</version>
          <executions>
            <execution>
              <id>shade</id>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <shadedArtifactAttached>true</shadedArtifactAttached>
            <shadedClassifierName>full</shadedClassifierName>
            <filters>
              <filter> <!-- Disable modularity for all dependencies, in order to not confuse JLink later. -->
                <artifact>*:*</artifact>
                <excludes>
                  <exclude>**/*module-info*</exclude>
                </excludes>
              </filter>
            </filters>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <manifestEntries>
                  <Main-Class>${com.github.robozonky.distribution.main}</Main-Class>
                  <Multi-Release>true</Multi-Release>
                </manifestEntries>
              </transformer>
            </transformers>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile> <!-- Utilities won't be built in Docker, where it is not needed and takes a lot of time. -->
      <id>build-utilities</id>
      <activation>
        <property>
          <name>!docker</name>
        </property>
      </activation>
      <modules>
        <module>robozonky-installer</module>
      </modules>
    </profile>
  </profiles>

  <scm>
    <url><EMAIL>:RoboZonky/robozonky.git</url>
    <connection>scm:git:<EMAIL>:RoboZonky/robozonky.git</connection>
    <developerConnection>scm:git:git<EMAIL>:RoboZonky/robozonky.git</developerConnection>
    <tag>robozonky-5.8.0-cr-1</tag>
  </scm>
  <issueManagement>
    <system>github</system>
    <url>https://github.com/RoboZonky/robozonky/issues</url>
  </issueManagement>
  <developers>
    <developer>
      <id>triceo</id>
      <name><NAME></name>
      <email><EMAIL></email>
      <timezone>Europe/Prague</timezone>
    </developer>
  </developers>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>
  <ciManagement>
    <system>travis</system>
    <url>https://travis-ci.org/RoboZonky/robozonky</url>
  </ciManagement>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>bintray-mockito-maven</id>
      <name>bintray</name>
      <url>https://dl.bintray.com/mockito/maven</url>
    </repository>
  </repositories>
</project>
<commit_msg>Upgrade to RESTEasy 4.5.3<commit_after><?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2020 The RoboZonky Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<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.github.robozonky</groupId>
  <artifactId>robozonky</artifactId>
  <version>5.9.0-SNAPSHOT</version>
  <modules>
    <module>robozonky-api</module>
    <module>robozonky-app</module>
    <module>robozonky-cli</module>
    <module>robozonky-notifications</module>
    <module>robozonky-strategy-natural</module>
    <module>robozonky-test</module>
    <module>robozonky-distribution</module>
  </modules>
  <packaging>pom</packaging>
  <name>RoboZonky: Easy automated investing with Zonky</name>
  <description>Automated investing on Zonky. Define investment strategy, run, profit.</description>
  <url>http://www.robozonky.cz/</url>

  <properties>
    <!-- Default encoding is UTF-8, no matter what platform we're on. -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>
    <!-- Various dependency versions to be used later. -->
    <surefire.version>3.0.0-M4</surefire.version>
    <version.com.fasterxml.jackson>2.10.2</version.com.fasterxml.jackson>
    <version.org.antlr>4.8</version.org.antlr>
    <version.org.codehaus.izpack>5.1.3</version.org.codehaus.izpack>
    <version.info.picocli>4.2.0</version.info.picocli>
    <version.org.jboss.resteasy>4.5.3.Final</version.org.jboss.resteasy>
    <version.org.junit5>6.1</version.org.junit5>
    <version.org.junit>5.${version.org.junit5}</version.org.junit>
    <version.org.junit.platform>1.${version.org.junit5}</version.org.junit.platform>
    <version.org.mockito>3.3.2</version.org.mockito>
    <version.org.mock-server>5.9.0</version.org.mock-server>
    <version.org.apache.logging.log4j>2.13.1</version.org.apache.logging.log4j>
    <version.com.sun.mail>1.6.4</version.com.sun.mail>
    <!--
      Make sure tests work on Appveyor and other Windows platforms, while working together with Sonar Cloud.
      Recommended here: https://docs.sonarqube.org/display/PLUG/Usage+of+JaCoCo+with+SonarJava
     -->
    <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
    <!-- For the purposes of JaCoCo aggregate report. -->
    <aggregate.report.dir>robozonky-distribution/robozonky-distribution-aggregate/target/site/jacoco-aggregate/jacoco.xml</aggregate.report.dir>
    <!-- Mutation coverage details. -->
    <pit.skip>${skipTests}</pit.skip>
    <pit.threshold>90</pit.threshold>
  </properties>

  <dependencies> <!-- Libraries required for logging. Enforce this on project-level, otherwise it'd too tedious. -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-test</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-strategy-natural</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-notifications</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-app</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-app</artifactId>
        <version>${project.version}</version>
        <classifier>full</classifier>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-cli</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-cli</artifactId>
        <version>${project.version}</version>
        <classifier>full</classifier>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky.distribution</groupId>
        <artifactId>robozonky-distribution-full</artifactId>
        <version>${project.version}</version>
        <type>tar.xz</type>
      </dependency>
      <dependency>
        <groupId>com.github.robozonky</groupId>
        <artifactId>robozonky-installer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!--
          JAX-RS.
          There is a massive set of exclusions of Java EE APIs that need to be later replaced by Jakarta EE.
          This is done in order for the sake of dependency convergence and eliminating Java EE/Jakarta EE conflicts.
      -->
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client-api</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-core-spi</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.annotation</groupId>
            <artifactId>jboss-annotations-api_1.3_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-core</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.ws.rs</groupId>
            <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.annotation</groupId>
            <artifactId>jboss-annotations-api_1.3_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>${version.org.jboss.resteasy}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.xml.bind</groupId>
            <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
          </exclusion>
          <exclusion> <!-- should not be necessary, yet drags in a ton of dependencies -->
            <groupId>com.github.fge</groupId>
            <artifactId>json-patch</artifactId>
          </exclusion>
          <exclusion> <!-- dragged in on account of the previously excluded json-patch -->
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpasyncclient</artifactId>
        <version>4.1.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore-nio</artifactId>
        <version>4.4.13</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${version.com.fasterxml.jackson}</version>
        <exclusions>
          <exclusion> <!-- Clashes with jakarta.activation from jakarta.mail. -->
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Email notifications. -->
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.30</version>
      </dependency>
      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>2.3.2</version>
        <exclusions>
          <exclusion> <!-- Clashes with jakarta.activation from jakarta.mail. -->
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>jakarta.mail</groupId>
        <artifactId>jakarta.mail-api</artifactId>
        <version>${version.com.sun.mail}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>${version.com.sun.mail}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>jakarta.activation</artifactId>
        <version>1.2.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.5</version>
        <exclusions>
          <exclusion> <!-- Already have one, Jakarta EE based. -->
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.icegreen</groupId>
        <artifactId>greenmail</artifactId>
        <version>1.5.10</version>
        <scope>test</scope>
        <exclusions>
          <exclusion> <!-- Already have one, Jakarta EE based. -->
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
          </exclusion>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Installer -->
      <dependency>
        <groupId>org.codehaus.izpack</groupId>
        <artifactId>izpack-api</artifactId>
        <version>${version.org.codehaus.izpack}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.izpack</groupId>
        <artifactId>izpack-panel</artifactId>
        <version>${version.org.codehaus.izpack}</version>
      </dependency>
      <dependency>
        <groupId>com.github.rutledgepaulv</groupId>
        <artifactId>paging-streams</artifactId>
        <version>0.8</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>${version.org.antlr}</version>
      </dependency>
      <dependency>
        <groupId>org.ini4j</groupId>
        <artifactId>ini4j</artifactId>
        <version>0.5.4</version>
      </dependency>
      <dependency>
        <groupId>info.picocli</groupId>
        <artifactId>picocli</artifactId>
        <version>${version.info.picocli}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.9</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.13</version>
      </dependency>
      <!-- Testing. -->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${version.org.junit}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${version.org.junit}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-engine</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${version.org.mockito}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${version.org.mockito}</version>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.15.0</version>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-junit-jupiter</artifactId>
        <version>${version.org.mock-server}</version>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-client-java</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-netty</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.mock-server</groupId>
        <artifactId>mockserver-core</artifactId>
        <version>${version.org.mock-server}</version>
        <exclusions>
          <exclusion> <!-- We have our own, based on Jakarta EE -->
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- Logging. -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j18-impl</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
      </dependency>
      <dependency> <!-- For log4j's async logging. -->
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.4.2</version>
      </dependency>
      <!-- For the sake of used/unused dependency analysis and convergence. -->
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.11</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.13</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${version.org.junit}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-commons</artifactId>
        <version>${version.org.junit.platform}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>2.1.5</version>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>1.3.5</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.1.Final</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.0-alpha0</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.11.0</version>
        <configuration>
          <configFile>${maven.multiModuleProjectDirectory}/ide-configuration/eclipse-format.xml</configFile>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <dependencyConvergence />
                <reactorModuleConvergence>
                  <ignoreModuleDependencies>true</ignoreModuleDependencies>
                </reactorModuleConvergence>
                <requireJavaVersion>
                  <version>[11,)</version>
                </requireJavaVersion>
                <requireReleaseDeps> <!-- No SNAPSHOT dependencies, except for our own for development purposes. -->
                  <failWhenParentIsSnapshot>false</failWhenParentIsSnapshot>
                  <excludes>
                    <exclude>com.github.robozonky:*</exclude>
                    <exclude>com.github.robozonky.distribution:*</exclude>
                  </excludes>
                </requireReleaseDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.pitest</groupId>
        <artifactId>pitest-maven</artifactId>
        <version>1.5.1</version>
        <dependencies>
          <dependency>
            <groupId>org.pitest</groupId>
            <artifactId>pitest-junit5-plugin</artifactId>
            <version>0.12</version>
          </dependency>
        </dependencies>
        <configuration>
          <skip>${pit.skip}</skip>
          <timestampedReports>false</timestampedReports>
          <coverageThreshold>${pit.threshold}</coverageThreshold>
          <mutationThreshold>${pit.threshold}</mutationThreshold>
          <targetClasses>
            <param>com.github.robozonky.*</param>
          </targetClasses>
          <excludedMethods>
            <param>toString</param>
            <!--
              assertThat(a).isEqualTo(a) produces untested code where equals() contains a == b.
              This generates unwanted unkillable mutations.
              -->
            <param>equals</param>
            <param>hashCode</param>
          </excludedMethods>
          <jvmArgs> <!-- some tests may fail on non-UTF-8 machines -->
            <value>-Dfile.encoding=${project.build.sourceEncoding}</value>
          </jvmArgs>
          <avoidCallsTo>
            <avoidCallsTo>org.apache.logging.log4j</avoidCallsTo> <!-- don't mutate logging calls -->
          </avoidCallsTo>
          <!-- speed up PITest during development -->
          <maxDependencyDistance>2</maxDependencyDistance>
          <withHistory>true</withHistory>
        </configuration>
        <executions>
          <execution>
            <id>fail-on-coverage</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>mutationCoverage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <skip>${com.github.robozonky.distribution}</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <dependencies> <!-- Remove when 3.1.2 is released. -->
          <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-dependency-analyzer</artifactId>
            <version>1.11.1</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>declare-all-dependencies</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>true</failOnWarning>
              <ignoredUnusedDeclaredDependencies>
                <!-- Mostly service-loaded stuff. -->
                <ignoredUnusedDeclaredDependency>com.github.robozonky</ignoredUnusedDeclaredDependency>
                <!-- For async logging, configured at runtime. -->
                <ignoredUnusedDeclaredDependency>com.lmax</ignoredUnusedDeclaredDependency>
                <!-- For when we mess with deps exclusions. -->
                <ignoredUnusedDeclaredDependency>com.sun.activation</ignoredUnusedDeclaredDependency>
                <!-- Runtime dependency for javax/annotation/Priority. -->
                <ignoredUnusedDeclaredDependency>jakarta.annotation</ignoredUnusedDeclaredDependency>
                <!-- httpasyncclient replaces the regular client in runtime. -->
                <ignoredUnusedDeclaredDependency>org.apache.httpcomponents</ignoredUnusedDeclaredDependency>
                <!-- log4j-core is a base dependency of Log4J. -->
                <ignoredUnusedDeclaredDependency>org.apache.logging.log4j</ignoredUnusedDeclaredDependency>
                <!-- Service-loaded stuff such as Jackson provider. -->
                <ignoredUnusedDeclaredDependency>org.jboss.resteasy</ignoredUnusedDeclaredDependency>
                <ignoredUnusedDeclaredDependency>org.junit.jupiter</ignoredUnusedDeclaredDependency>
                <ignoredUnusedDeclaredDependency>org.mock-server</ignoredUnusedDeclaredDependency>
              </ignoredUnusedDeclaredDependencies>
              <ignoredUsedUndeclaredDependencies>
                <ignoredUsedUndeclaredDependency>com.fasterxml.jackson.core</ignoredUsedUndeclaredDependency>
                <ignoredUsedUndeclaredDependency>jakarta.xml.bind</ignoredUsedUndeclaredDependency>
              </ignoredUsedUndeclaredDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <rerunFailingTestsCount>1</rerunFailingTestsCount> <!-- Flaky tests are worked around. -->
          <useModulePath>false</useModulePath> <!-- Modularity in tests brings pain and no obvious benefits. -->
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <workingDirectory>${basedir}/target</workingDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <rerunFailingTestsCount>1</rerunFailingTestsCount> <!-- Flaky tests are worked around. -->
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <workingDirectory>${basedir}/target</workingDirectory>
        </configuration>
        <executions>
          <execution>
            <id>run-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
            <configuration>
                <skip>${com.github.robozonky.distribution}</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>11</release> <!-- minimum supported version of the JRE -->
          <!--
            picocli's support for compile-time error checking and GraalVM native images, more on this here:
            https://github.com/remkop/picocli/releases#4.0.0-annotation-processor
          -->
          <annotationProcessorPaths>
            <path>
              <groupId>info.picocli</groupId>
              <artifactId>picocli-codegen</artifactId>
              <version>${version.info.picocli}</version>
            </path>
          </annotationProcessorPaths>
          <compilerArgs>
            <arg>-Aproject=${project.groupId}/${project.artifactId}</arg>
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.0.0-M1</version>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin> <!-- 3.0.0-M1 breaks IZPack. See for similar: https://github.com/openhab/openhab-core/pull/408 -->
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <groupId>org.antlr</groupId>
          <artifactId>antlr4-maven-plugin</artifactId>
          <version>${version.org.antlr}</version>
        </plugin>
        <plugin> <!-- Shade plugin configuration shared by all distribution modules. -->
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.2</version>
          <executions>
            <execution>
              <id>shade</id>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <shadedArtifactAttached>true</shadedArtifactAttached>
            <shadedClassifierName>full</shadedClassifierName>
            <filters>
              <filter> <!-- Disable modularity for all dependencies, in order to not confuse JLink later. -->
                <artifact>*:*</artifact>
                <excludes>
                  <exclude>**/*module-info*</exclude>
                </excludes>
              </filter>
            </filters>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <manifestEntries>
                  <Main-Class>${com.github.robozonky.distribution.main}</Main-Class>
                  <Multi-Release>true</Multi-Release>
                </manifestEntries>
              </transformer>
            </transformers>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile> <!-- Utilities won't be built in Docker, where it is not needed and takes a lot of time. -->
      <id>build-utilities</id>
      <activation>
        <property>
          <name>!docker</name>
        </property>
      </activation>
      <modules>
        <module>robozonky-installer</module>
      </modules>
    </profile>
  </profiles>

  <scm>
    <url><EMAIL>:RoboZonky/robozonky.git</url>
    <connection>scm:git:git@github.<EMAIL>:RoboZonky/robozonky.git</connection>
    <developerConnection>scm:git:git@github.<EMAIL>:RoboZonky/robozonky.git</developerConnection>
    <tag>robozonky-5.8.0-cr-1</tag>
  </scm>
  <issueManagement>
    <system>github</system>
    <url>https://github.com/RoboZonky/robozonky/issues</url>
  </issueManagement>
  <developers>
    <developer>
      <id>triceo</id>
      <name><NAME></name>
      <email><EMAIL></email>
      <timezone>Europe/Prague</timezone>
    </developer>
  </developers>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>
  <ciManagement>
    <system>travis</system>
    <url>https://travis-ci.org/RoboZonky/robozonky</url>
  </ciManagement>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
  <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>bintray-mockito-maven</id>
      <name>bintray</name>
      <url>https://dl.bintray.com/mockito/maven</url>
    </repository>
  </repositories>
</project>

{'fraction_non_alphanumeric': 0.13924808953959, 'fraction_numerical': 0.008343196130861059, 'mean_word_length': 2.235627836611195, 'pattern_counts': {'":': 0, '<': 2627, '<?xml version=': 2, '>': 2627, 'https://': 16, 'lorem ipsum': 0, 'www.': 8, 'xml': 46}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7494738', 'n_tokens_mistral': 21714, 'n_tokens_neox': 19442, 'n_words': 2577}