<?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>at.gv.egiz</groupId>
  <artifactId>eaaf</artifactId>
  <version>1.1.13</version>
  <packaging>pom</packaging>

  <name>EGIZ EAAF components</name>

  <properties>
    <!-- General project properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>

    <!-- Project versions -->
    <egiz.eaaf.version>${project.version}</egiz.eaaf.version>

    <!-- ===================================================================== -->
    <at.gv.egiz.components.eventlog-api.version>0.4</at.gv.egiz.components.eventlog-api.version>
    <at.gv.egiz.components.egiz-spring-api>0.3.1</at.gv.egiz.components.egiz-spring-api>

    <MOA.spss.server.moa-sig-lib.version>3.1.4-RC2</MOA.spss.server.moa-sig-lib.version>
    <MOA.spss.tsl_lib.version>2.0.4.1</MOA.spss.tsl_lib.version>

    <!-- IAIK libs -->
    <iaik.prod.iaik_cms.version>5.1.1</iaik.prod.iaik_cms.version>
    <iaik.prod.iaik_cpades.version>2.4_moa</iaik.prod.iaik_cpades.version>
    <iaik.prod.iaik_cpxlevel.version>0.9_moa</iaik.prod.iaik_cpxlevel.version>
    <iaik.prod.iaik_eccelerate.version>6.02</iaik.prod.iaik_eccelerate.version>
    <iaik.prod.iaik_eccelerate_addon.version>6.02</iaik.prod.iaik_eccelerate_addon.version>
    <iaik.prod.iaik_eccelerate_cms.version>6.02</iaik.prod.iaik_eccelerate_cms.version>
    <iaik.prod.iaik_jce_full.version>5.62_moa</iaik.prod.iaik_jce_full.version>
    <iaik.prod.iaik_jsse.version>4.4</iaik.prod.iaik_jsse.version>
    <iaik.prod.iaik_moa.version>2.07</iaik.prod.iaik_moa.version>
    <iaik.prod.iaik_pki_module.version>2.02_moa</iaik.prod.iaik_pki_module.version>
    <iaik.prod.iaik_sva.version>1.0.3_moa</iaik.prod.iaik_sva.version>
    <iaik.prod.iaik_tsp.version>2.32_eval</iaik.prod.iaik_tsp.version>
    <iaik.prod.iaik_util.version>0.23</iaik.prod.iaik_util.version>
    <iaik.prod.iaik_xades.version>2.13_moa</iaik.prod.iaik_xades.version>
    <iaik.prod.iaik_xsect.version>2.14_moa</iaik.prod.iaik_xsect.version>

    <hsm-facade-provider.version>0.6.0</hsm-facade-provider.version>
    <io.grpc-core.version>1.34.0</io.grpc-core.version>

    <!-- Other third-party libs -->
    <spring-boot-starter-web.version>2.4.5</spring-boot-starter-web.version>
    <org.springframework.version>5.3.6</org.springframework.version>
    <org.opensaml.version>3.4.6</org.opensaml.version>
    <org.apache.santuario.xmlsec.version>2.2.1</org.apache.santuario.xmlsec.version>
    <org.cryptacular.version>1.2.4</org.cryptacular.version>
    <org.bouncycastle.bcprov-jdk15to18.version>1.68</org.bouncycastle.bcprov-jdk15to18.version>
    <org.bouncycastle.bctls-jdk15to18.version>1.68</org.bouncycastle.bctls-jdk15to18.version>

    <org.slf4j.version>1.7.30</org.slf4j.version>
    <ch.qos.logback-access.version>1.2.3</ch.qos.logback-access.version>
    <commons-codec.version>1.15</commons-codec.version>
    <org.apache.commons-lang3.version>3.12.0</org.apache.commons-lang3.version>
    <org.apache.commons-text.version>1.9</org.apache.commons-text.version>
    <org.apache.commons-collections>3.2.2</org.apache.commons-collections>
    <org.apache.commons-collections4>4.4</org.apache.commons-collections4>
    <commons-io.version>2.8.0</commons-io.version>
    <commons-fileupload.version>1.4</commons-fileupload.version>
    <javax.servlet-api>3.0.1</javax.servlet-api>
    <org.apache.velocity.version>1.7</org.apache.velocity.version>
    <javax.annotation-api>1.3.2</javax.annotation-api>
    <joda-time.version>2.10.10</joda-time.version>
    <jsr305.version>3.0.2</jsr305.version>
    <com.google.guava.version>30.1.1-jre</com.google.guava.version>
    <org.owasp.encoder.version>1.2.3</org.owasp.encoder.version>

    <httpclient.version>4.5.13</httpclient.version>
    <httpcore.version>4.4.14</httpcore.version>

    <com.fasterxml.jackson.core.version>2.12.3</com.fasterxml.jackson.core.version>
    <org.bitbucket.b_c.jose4j.version>0.7.6</org.bitbucket.b_c.jose4j.version>

    <jaxen.jaxen.version>1.1.6</jaxen.jaxen.version>
    <xerces.version>2.12.0</xerces.version>
    <xalan.version>2.7.1</xalan.version>

    <!-- jUnit testing -->
    <surefire.version>2.22.1</surefire.version>
    <junit-jupiter-api.version>5.7.1</junit-jupiter-api.version>
    <com.squareup.okhttp3.version>4.4.1</com.squareup.okhttp3.version>
    <org.powermock.version>2.0.9</org.powermock.version>

    <!-- Code helper plug-ins -->
    <org.projectlombok.lombok.version>1.18.16</org.projectlombok.lombok.version>

    <!-- Code quality checks -->
    <jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
    <maven-checkstyle-plugin.version>3.1.2</maven-checkstyle-plugin.version>
    <maven-pmd-plugin.version>3.14.0</maven-pmd-plugin.version>
    <spotbugs-maven-plugin.version>4.2.0</spotbugs-maven-plugin.version>
    <findsecbugs-plugin.version>1.11.0</findsecbugs-plugin.version>
    <dependency-check-maven.version>6.0.3</dependency-check-maven.version>

    <!-- Compile and deploy plugins -->    
    <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
    <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
    <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
    <wagon-ssh.version>3.4.3</wagon-ssh.version>

    <license.outputDirectory>${project.build.directory}/thirdparty_licenses</license.outputDirectory>
    <pmw_rules_location>https://apps.egiz.gv.at/checkstyle/egiz_pmd_checks.xml</pmw_rules_location>

  </properties>

  <repositories>
    <repository>
      <id>gitlab</id>
      <url>https://gitlab.iaik.tugraz.at/api/v4/groups/119/-/packages/maven</url>
    </repository>
    <repository>
      <id>gitlab-localbuild</id>
      <url>https://gitlab.iaik.tugraz.at/api/v4/groups/119/-/packages/maven</url>
    </repository>
    <repository>
      <id>egiz-commons</id>
      <url>https://apps.egiz.gv.at/maven/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
    <repository>
      <id>shibboleth.internet2.edu</id>
      <name>Internet2</name>
      <url>https://build.shibboleth.net/nexus/content/groups/public/</url>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>default</name>
        </property>
      </activation>
    </profile>
    <profile>
      <id>gitlabDeploy</id>
      <distributionManagement>
        <repository>
          <id>gitlab</id>
          <url>https://gitlab.iaik.tugraz.at/api/v4/projects/507/packages/maven</url>
        </repository>
        <snapshotRepository>
          <id>gitlab</id>
          <url>https://gitlab.iaik.tugraz.at/api/v4/projects/507/packages/maven</url>
        </snapshotRepository>
      </distributionManagement>
    </profile>
    <profile>
      <id>jenkinsDeploy</id>
      <distributionManagement>
        <repository>
          <id>egizMaven</id>
          <url>sftp://apps.egiz.gv.at/maven</url>
        </repository>
        <snapshotRepository>
          <id>egizMaven</id>
          <url>sftp://apps.egiz.gv.at/maven-snapshot</url>
        </snapshotRepository>
      </distributionManagement>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>${maven-deploy-plugin.version}</version>
            <configuration>
              <deployAtEnd>true</deployAtEnd>
            </configuration>
            <executions>
              <execution>
                <id>default-deploy</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>owasp-dependency-check</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>${dependency-check-maven.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <modules>
    <module>eaaf_core_api</module>
    <module>eaaf_core_utils</module>
    <module>eaaf_core</module>
    <module>eaaf_modules</module>
    <module>build_reporting</module>
    <module>eaaf-springboot-utils</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_api</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_utils</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>      
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf-core</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_auth_sl20</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_moa-sig</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_pvp2_core</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_pvp2_idp</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_pvp2_sp</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf-springboot-utils</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>      
      
      
      <dependency>
        <groupId>at.gv.egiz.components</groupId>
        <artifactId>eventlog-api</artifactId>
        <version>${at.gv.egiz.components.eventlog-api.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.components</groupId>
        <artifactId>egiz-spring-api</artifactId>
        <version>${at.gv.egiz.components.egiz-spring-api}</version>
      </dependency>


      <dependency>
        <groupId>moaSig</groupId>
        <artifactId>moa-sig-lib</artifactId>
        <version>${MOA.spss.server.moa-sig-lib.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <artifactId>*</artifactId>
            <groupId>axis</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>moaSig</groupId>
        <artifactId>common</artifactId>
        <version>${MOA.spss.server.moa-sig-lib.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egovernment.moa.sig</groupId>
        <artifactId>tsl-lib</artifactId>
        <version>${MOA.spss.tsl_lib.version}</version>
      </dependency>


      <!-- IAIK libs -->
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cms</artifactId>
        <version>${iaik.prod.iaik_cms.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cpades</artifactId>
        <version>${iaik.prod.iaik_cpades.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cpxlevel</artifactId>
        <version>${iaik.prod.iaik_cpxlevel.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate</artifactId>
        <version>${iaik.prod.iaik_eccelerate.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate_addon</artifactId>
        <version>${iaik.prod.iaik_eccelerate_addon.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate_cms</artifactId>
        <version>${iaik.prod.iaik_eccelerate_cms.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_jce_full</artifactId>
        <version>${iaik.prod.iaik_jce_full.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_jsse</artifactId>
        <version>${iaik.prod.iaik_jsse.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_moa</artifactId>
        <version>${iaik.prod.iaik_moa.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_pki_module</artifactId>
        <version>${iaik.prod.iaik_pki_module.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_sva</artifactId>
        <version>${iaik.prod.iaik_sva.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_tsp</artifactId>
        <version>${iaik.prod.iaik_tsp.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_util</artifactId>
        <version>${iaik.prod.iaik_util.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_xades</artifactId>
        <version>${iaik.prod.iaik_xades.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_xsect</artifactId>
        <version>${iaik.prod.iaik_xsect.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${jsr305.version}</version>
      </dependency>

      <dependency>
        <groupId>at.asitplus.hsmfacade</groupId>
        <artifactId>provider</artifactId>
        <version>${hsm-facade-provider.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-core</artifactId>
        <version>${io.grpc-core.version}</version>
      </dependency>

      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${javax.annotation-api}</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>${org.apache.commons-collections}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${org.apache.commons-collections4}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring-boot-starter-web.version}</version>
      </dependency>            
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>${spring-boot-starter-web.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>${spring-boot-starter-web.version}</version>
      </dependency>            
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${org.slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${org.slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${ch.qos.logback-access.version}</version>
      </dependency>            
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${org.apache.commons-lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>${org.apache.commons-text.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-core</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-xmlsec-api</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-xmlsec-impl</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-saml-impl</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.santuario</groupId>
        <artifactId>xmlsec</artifactId>
        <version>${org.apache.santuario.xmlsec.version}</version>
      </dependency>
      <dependency>
        <!-- Set newer version, because 1.1.3 from openSAML dependency has 
          an CVE-2020-7226 -->
        <groupId>org.cryptacular</groupId>
        <artifactId>cryptacular</artifactId>
        <version>${org.cryptacular.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15to18</artifactId>
        <version>${org.bouncycastle.bcprov-jdk15to18.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bctls-jdk15to18</artifactId>
        <version>${org.bouncycastle.bctls-jdk15to18.version}</version>
      </dependency>

      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax.servlet-api}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>${org.apache.velocity.version}</version>
      </dependency>
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>${jaxen.jaxen.version}</version>
      </dependency>
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>${xerces.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>${xalan.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${httpcore.version}</version>
      </dependency>

      <dependency>
        <groupId>org.owasp.encoder</groupId>
        <artifactId>encoder</artifactId>
        <version>${org.owasp.encoder.version}</version>
      </dependency>

      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
      </dependency>

      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${com.fasterxml.jackson.core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bitbucket.b_c</groupId>
        <artifactId>jose4j</artifactId>
        <version>${org.bitbucket.b_c.jose4j.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${com.google.guava.version}</version>
      </dependency>

      <!-- Testing -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${org.springframework.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>mockwebserver</artifactId>
        <version>${com.squareup.okhttp3.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp-tls</artifactId>
        <version>${com.squareup.okhttp3.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_utils</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf-core</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_pvp2_core</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${org.powermock.version}</version>
        <scope>test</scope>
       </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>        
        <version>${org.powermock.version}</version>
        <scope>test</scope>
      </dependency>      
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <version>${junit-jupiter-api.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-migrationsupport</artifactId>
      <version>${junit-jupiter-api.version}</version>
      <scope>test</scope>
    </dependency>   
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${org.projectlombok.lombok.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>${wagon-ssh.version}</version>
      </extension>
    </extensions>
    
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${versions-maven-plugin.version}</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>        
        <version>${maven-jar-plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${maven-source-plugin.version}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <threadCount>1</threadCount>
          <!-- Sets the VM argument line used when unit tests are run. -->
          <argLine>${surefireArgLine}</argLine>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>${surefire.version}</version>
          </dependency>
        </dependencies>
      </plugin>

      <!-- Code quality checks -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${maven-checkstyle-plugin.version}</version>
        <configuration>
          <configLocation>https://apps.egiz.gv.at/checkstyle/egiz_checks.xml</configLocation>
          <suppressionsLocation>checks/checkstyleSuppress.xml</suppressionsLocation>
          <failsOnError>false</failsOnError>
          <failOnViolation>true</failOnViolation>
          <violationSeverity>warning</violationSeverity>
          <includeTestResources>false</includeTestResources>
          <!-- excludes>**/moaspss_config/**,**/data/**</excludes -->
        </configuration>
        <executions>
          <execution>
            <id>validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.26</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>pre-unit-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <propertyName>surefireArgLine</propertyName>
            </configuration>
          </execution>
          <execution>
            <id>post-unit-report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <outputDirectory>target/jacoco-report</outputDirectory>
            </configuration>
          </execution>          
          <execution>
            <id>post-unit-check</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <haltOnFailure>false</haltOnFailure>
              <rules>
                <rule>
                  <element>BUNDLE</element>
                  <limits>
                    <limit>
                      <counter>INSTRUCTION</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.70</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.70</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>          
        </executions>
      </plugin>


      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven-pmd-plugin.version}</version>
        <executions>
          <execution>
            <id>pmd_validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <linkXref>false</linkXref>
          <sourceEncoding>utf-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
          <targetJdk>1.8</targetJdk>
          <failOnViolation>true</failOnViolation>
          <printFailingErrors>true</printFailingErrors>
          <rulesets>
            <ruleset>${pmw_rules_location}</ruleset>
          </rulesets>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${spotbugs-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>spotbugs_validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <failOnError>true</failOnError>
          <plugins>
            <plugin>
              <groupId>com.h3xstream.findsecbugs</groupId>
              <artifactId>findsecbugs-plugin</artifactId>
              <version>${findsecbugs-plugin.version}</version>
            </plugin>
          </plugins>
        </configuration>
      </plugin>


    </plugins>
  </build>

  <reporting>
    <plugins>  
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>        
          <configuration>
            <title>Maven Multimodule Coverage Demo: Coverage of Unit Tests</title>
            <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate-ut</outputDirectory>
            <dataFileExcludes>
              <!-- exclude coverage data of integration tests --> 
              <dataFileExclude>**/target/jacoco-it.exec</dataFileExclude>
            </dataFileExcludes>
          </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven-pmd-plugin.version}</version>
      </plugin>
    </plugins>
  </reporting>

</project>