<?xml version="1.0" encoding="UTF-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>21</version>
  </parent>

  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4x-parent</artifactId>
  <version>0.4.0</version>
  <packaging>pom</packaging>

  <name>PLC4X</name>
  <description>
    PLC4X is an effort to create a universal library for accessing industrial programmable logic controllers
    using a variety of protocols using a uniform API.
  </description>
  <url>https://plc4x.apache.org</url>
  <inceptionYear>2017</inceptionYear>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/plc4x.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/plc4x.git</developerConnection>
    <url>https://github.com/apache/plc4x</url>
    <tag>release/0.4.0</tag>
  </scm>

  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:git:https://gitbox.apache.org/repos/asf/plc4x-website.git</url>
    </site>
  </distributionManagement>

  <issueManagement>
    <system>Jira</system>
    <url>https://issues.apache.org/jira/browse/PLC4X</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Apache PLC4X Developer List</name>
      <subscribe>mailto:dev-subscribe@plc4x.apache.org</subscribe>
      <unsubscribe>mailto:dev-unsubscribe@plc4x.apache.org</unsubscribe>
      <post>mailto:dev@plc4x.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/plc4x-dev/</archive>
    </mailingList>
    <mailingList>
      <name>PLC4X Commits List</name>
      <subscribe>mailto:commit-subscribe@plc4x.apache.org</subscribe>
      <unsubscribe>mailto:commits-unsubscribe@plc4x.apache.org</unsubscribe>
      <post>mailto:commits@plc4x.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/plc4x-commits/</archive>
    </mailingList>
    <mailingList>
      <name>PLC4X Jira Notifications List</name>
      <subscribe>mailto:issues-subscribe@plc4x.apache.org</subscribe>
      <unsubscribe>mailto:issues-unsubscribe@plc4x.apache.org</unsubscribe>
      <post>mailto:issues@plc4x.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/plc4x-issues/</archive>
    </mailingList>
  </mailingLists>

  <properties>
    <!--
      3.0.5 would have been enough, but special plugins require newer Maven versions:
      At least 3.2 required for jqassistant-maven-plugin
      At least 3.3.3 required for camel-package-maven-plugin
    -->
    <maven.version>3.3.3</maven.version>

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

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

    <!-- URL of the ASF SonarQube server -->
    <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
    <!-- Exclude all generated code -->
    <sonar.exclusions>**/generated-sources</sonar.exclusions>

    <asm.version>5.0.4</asm.version>
    <assertj.version>3.11.1</assertj.version>
    <bouncycastle.version>1.60</bouncycastle.version>
    <boost.version>1.70.0</boost.version>
    <boost.version.underline-short>1_70</boost.version.underline-short>
    <boost.version.underline>${boost.version.underline-short}_0</boost.version.underline>
    <byte-buddy.version>1.9.10</byte-buddy.version>
    <commons-codec.version>1.11</commons-codec.version>
    <commons-collections4.version>4.1</commons-collections4.version>
    <commons-configuration2.version>2.2</commons-configuration2.version>
    <commons-io.version>2.6</commons-io.version>
    <commons-lang.version>2.6</commons-lang.version>
    <commons-lang3.version>3.7</commons-lang3.version>
    <commons-math3.version>3.5</commons-math3.version>
    <commons-pool2.version>2.6.0</commons-pool2.version>
    <commons-text.version>1.4</commons-text.version>
    <crc.version>1.0.1</crc.version>
    <daffodil.version>2.3.0</daffodil.version>
    <elasticsearch.version>7.0.1</elasticsearch.version>
    <equalsverifier.version>3.0.2</equalsverifier.version>
    <findbugs.version>3.0.1</findbugs.version>
    <groovy.version>2.5.3</groovy.version>
    <gson.version>2.8.0</gson.version>
    <guava.version>27.0.1-jre</guava.version>
    <hamcrest.version>1.3</hamcrest.version>
    <jackson.version>2.9.8</jackson.version>
    <jmh.version>1.21</jmh.version>
    <jna.version>4.5.1</jna.version>
    <joda-time.version>2.10</joda-time.version>
    <jopt-simple.version>5.0.2</jopt-simple.version>
    <junit.jupiter.version>5.2.0</junit.jupiter.version>
    <junit.platform.version>1.2.0</junit.platform.version>
    <junit.version>4.12</junit.version>
    <log4j.version>2.11.1</log4j.version>
    <logback.version>1.2.3</logback.version>
    <lucene.version>8.0.0</lucene.version>
    <metrics-core.version>3.1.2</metrics-core.version>
    <mockito.version>2.24.5</mockito.version>
    <netty.version>4.1.35.Final</netty.version>
    <netty-transport-jserialcomm.version>1.0.0</netty-transport-jserialcomm.version>
    <owasp-dependency-check.version>5.0.0-M1</owasp-dependency-check.version>
    <pcap4j.version>1.7.3</pcap4j.version>
    <scala.version>2.12.6</scala.version>
    <slf4j.version>1.7.25</slf4j.version>
    <snakeyaml.version>1.23</snakeyaml.version>
    <spock-reports.version>1.6.1</spock-reports.version>
    <spock.version>1.2-groovy-2.5</spock.version>
    <t-digest.version>3.2</t-digest.version>
    <thrift.version>0.12.0</thrift.version>

    <!-- Site properties -->
    <reflow.skin.version>1.5.0</reflow.skin.version>
    <bootstrap.version>3.3.7</bootstrap.version>
    <jquery.version>3.3.1</jquery.version>
    <anchorjs.version>3.2.2</anchorjs.version>
    <fontawesome.version>5.2.0</fontawesome.version>
  </properties>

  <modules>
    <!-- Definition of the protocol message formats -->
    <module>protocols</module>

    <!-- Tools needed throughout the build -->
    <module>tools</module>
  </modules>

  <prerequisites>
    <maven>${maven.version}</maven>
  </prerequisites>

  <dependencyManagement>
    <dependencies>
      <!--
        Set to provided to ensure that these jars are never automatically
        included. If required the used still can override it if it is needed. -->
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.athaydes</groupId>
        <artifactId>spock-reports</artifactId>
        <version>${spock-reports.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-cbor</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-smile</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${findbugs.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.tdunning</groupId>
        <artifactId>t-digest</artifactId>
        <version>${t-digest.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>metrics-core</artifactId>
        <version>${metrics-core.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-buffer</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec-http</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-common</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-resolver</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-rxtx</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.1.6</version>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>${byte-buddy.version}</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>${byte-buddy.version}</version>
      </dependency>
      <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>${jna.version}</version>
      </dependency>
      <dependency>
        <groupId>net.sf.jopt-simple</groupId>
        <artifactId>jopt-simple</artifactId>
        <version>${jopt-simple.version}</version>
      </dependency>
      <dependency>
        <groupId>nl.jqno.equalsverifier</groupId>
        <artifactId>equalsverifier</artifactId>
        <version>${equalsverifier.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${commons-collections4.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>${commons-configuration2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-jexl3</artifactId>
        <version>3.1</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>${commons-math3.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>${commons-pool2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>${commons-text.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.daffodil</groupId>
        <artifactId>daffodil-japi_2.12</artifactId>
        <version>${daffodil.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.daffodil</groupId>
        <artifactId>daffodil-lib_2.12</artifactId>
        <version>${daffodil.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.daffodil</groupId>
        <artifactId>daffodil-runtime1_2.12</artifactId>
        <version>${daffodil.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.daffodil</groupId>
        <artifactId>daffodil-tdml-lib_2.12</artifactId>
        <version>${daffodil.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.daffodil</groupId>
        <artifactId>daffodil-tdml-processor_2.12</artifactId>
        <version>${daffodil.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-backward-codecs</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-grouping</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-highlighter</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-join</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-memory</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-misc</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queries</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-sandbox</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial3d</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial-extras</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-suggest</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-artifact</artifactId>
        <version>${maven.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${assertj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcmail-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>${groovy.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-test-junit5</artifactId>
        <version>${groovy.version}</version>
        <!-- Ensure we only use this in test -->
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>${elasticsearch.version}</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch-x-content</artifactId>
        <version>${elasticsearch.version}</version>
      </dependency>
      <dependency>
        <groupId>org.elasticsearch.plugin</groupId>
        <artifactId>transport-netty4-client</artifactId>
        <version>${elasticsearch.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.snksoft</groupId>
        <artifactId>crc</artifactId>
        <version>${crc.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom2</artifactId>
        <version>2.0.6</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockito.version}</version>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-core</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-generator-annprocess</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>${asm.version}</version>
      </dependency>
      <dependency>
        <groupId>org.pcap4j</groupId>
        <artifactId>pcap4j-core</artifactId>
        <version>${pcap4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.pcap4j</groupId>
        <artifactId>pcap4j-packetfactory-static</artifactId>
        <version>${pcap4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>${spock.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>${snakeyaml.version}</version>
      </dependency>
      <dependency>
        <groupId>se.koc</groupId>
        <artifactId>netty-transport-jserialcomm</artifactId>
        <version>${netty-transport-jserialcomm.version}</version>
      </dependency>
      <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <!--plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <version>2.1</version>
        <inherited>false</inherited>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>${project.basedir}/src/main/script/prerequisite-check.groovy</source>
            </configuration>
          </execution>
        </executions>
      </plugin-->

      <!-- Check if all source files have the required apache license headers -->
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>license-check</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <!-- Git related files -->
            <exclude>**/.git/**</exclude>
            <exclude>**/.gitignore</exclude>

            <!-- Maven related files -->
            <exclude>**/target/**</exclude>

            <!-- Eclipse related files -->
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.factorypath</exclude>

            <!-- IntelliJ related files -->
            <exclude>**/.idea/**</exclude>
            <exclude>**/*.iml</exclude>

            <!-- Wireshark Captures -->
            <exclude>**/*.pcap</exclude>

            <!-- Asciidoctor generated files -->
            <exclude>**/.asciidoctor/**</exclude>

            <!-- Jenkins build related files -->
            <exclude>.repository/**</exclude>

            <!-- Data files created by examples running an embedded elasticsearch -->
            <exclude>elasticsearch-data/**</exclude>

            <!-- JSON doesn't like comments -->
            <exclude>**/*.json</exclude>

            <!-- Output of the profiler maven extension -->
            <exclude>**/.profiler/**</exclude>

            <!-- CLion stuff (C++ IDE) -->
            <exclude>**/cmake-build-debug/**</exclude>

            <!-- Stuff created during a plc4net build -->
            <exclude>**/obj/**</exclude>

            <!-- Temporarily exclude generated code from thrift in python modules -->
            <exclude>generated/**</exclude>

            <!-- Temporary Python virtualenv files-->
            <exclude>**/venv/**</exclude>
          </excludes>
        </configuration>
      </plugin>

      <!-- Generate the legally required text files in the jars -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
          <execution>
            <id>process-resource-bundles</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <!-- TODO: For some reason the build seems to fail in conjunction with the dependency-plugin unpack goal, if enabled -->
              <skip>true</skip>
              <resourceBundles>
                <!-- Will generate META-INF/{DEPENDENCIES,LICENSE,NOTICE} -->
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
              </resourceBundles>
              <!-- Content in this directory will be appended to generated resources -->
              <appendedResourcesDirectory>${basedir}/src/remote-resources</appendedResourcesDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        ===================================
        ==                               ==
        ==    SITE GENERATION PLUGINS    ==
        ==                               ==
        ===================================

        Starting here the following plugins are used for generating the projects website.

        Most of the complexity is due to the fact that we selected "localResouces" in the site.xml
        This causes the generated output not to rely on external resources. Therefore we have to
        manually take care of fetching and packaging these external resources with the generated site.
      -->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>unpack</id>
            <!-- Only execute this for the parent module -->
            <inherited>false</inherited>
            <phase>pre-site</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>io.github.devacfr.maven.skins</groupId>
                  <artifactId>reflow-default-webdeps</artifactId>
                  <version>${reflow.skin.version}</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <includes>
                    **/css/bootstrap.min.css,
                    **/css/fontawesome/*,
                    **/js/*.js,
                    **/js/languages/*,
                    **/js/styles/default.min.css
                  </includes>
                </artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/site</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        Replace the bootstrap css with the version of the theme
      -->
      <plugin>
        <groupId>com.googlecode.maven-download-plugin</groupId>
        <artifactId>download-maven-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>get-fontawesome</id>
            <!-- Only execute this for the parent module -->
            <inherited>false</inherited>
            <phase>pre-site</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <url>https://use.fontawesome.com/releases/v${fontawesome.version}/fontawesome-free-${fontawesome.version}-web.zip</url>
              <unpack>true</unpack>
              <outputDirectory>${project.build.directory}/dependency/fontawesome</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-site-resources</id>
            <!-- Only execute this for the parent module -->
            <inherited>false</inherited>
            <phase>pre-site</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/site</outputDirectory>
              <resources>
                <resource>
                  <directory>
                    ${project.build.directory}/dependency/fontawesome/fontawesome-free-${fontawesome.version}-web
                  </directory>
                  <includes>
                    <include>css/all.min.css</include>
                  </includes>
                </resource>
                <resource>
                  <directory>
                    ${project.build.directory}/dependency/fontawesome/fontawesome-free-${fontawesome.version}-web/webfonts
                  </directory>
                  <targetPath>${project.build.directory}/site/fonts</targetPath>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        The bootstrap uses "fonts" as directory for locating fonts and fontawesome uses "webfonts".
        This plugin updates the css to also use "fonts".
      -->
      <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>replacer</artifactId>
        <version>1.5.3</version>
        <executions>
          <execution>
            <id>streamline-font-urls</id>
            <!-- Only execute this for the parent module -->
            <inherited>false</inherited>
            <phase>pre-site</phase>
            <goals>
              <goal>replace</goal>
            </goals>
            <configuration>
              <file>${project.build.directory}/site/css/all.min.css</file>
              <replacements>
                <replacement>
                  <token>../webfonts/</token>
                  <value>../fonts/</value>
                </replacement>
              </replacements>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        Make the maven-site-plugin stage the output in the "asf-site" branch
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <!-- mono-module doesn't require site:stage -->
          <content>${project.build.directory}/staging</content>
          <!-- branch where to deploy -->
          <scmBranch>asf-site</scmBranch>
        </configuration>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <!--
                Make rat output the files with missing licensed directly into the
                build output (This way we don't have to look into the rat.txt to find
                out which ones)
            -->
            <consoleOutput>true</consoleOutput>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>1.4</version>
        </plugin>

        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>4.1.0</version>
        </plugin>

        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <testSource>${java.version}</testSource>
            <testTarget>${java.version}</testTarget>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>verify</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <finalName>apache-plc4x-${project.version}</finalName>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.6.0.1398</version>
        </plugin>

        <!-- Configure the Site generation -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <configuration>
            <!--templateFile>${session.executionRootDirectory}/src/site/template/site.vm</templateFile-->
            <generateReports>true</generateReports>
            <generateSitemap>true</generateSitemap>
            <relativizeDecorationLinks>false</relativizeDecorationLinks>
            <locales>en</locales>
            <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
            <outputEncoding>${project.reporting.outputencoding}</outputEncoding>
            <!--
              IntelliJ can't find the asciidoc config option in the site plugin, which is correct.
              However this config section is used by the asciidoctor site plugin extension. So plead
              ignore this error, it's actually ok.
            -->
            <asciidoc>
              <attributes>
                <source-highlighter>prettify</source-highlighter>
                <imagesoutdir>${project.build.directory}/site/images</imagesoutdir>
                <project-version>${project.version}</project-version>
              </attributes>
              <requires>
                <require>asciidoctor-diagram</require>
              </requires>
            </asciidoc>
          </configuration>
          <dependencies>
            <!-- All dependencies needed by the reflow skin -->
            <dependency>
              <groupId>io.github.devacfr.maven.skins</groupId>
              <artifactId>reflow-velocity-tools</artifactId>
              <version>${reflow.skin.version}</version>
            </dependency>
            <!-- add support for scm/git site deployment -->
            <dependency>
              <groupId>org.apache.maven.wagon</groupId>
              <artifactId>wagon-scm</artifactId>
              <version>2.12</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.scm</groupId>
              <artifactId>maven-scm-api</artifactId>
              <version>1.9.5</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.scm</groupId>
              <artifactId>maven-scm-manager-plexus</artifactId>
              <version>1.9.5</version>
            </dependency>
            <dependency>
              <groupId>org.apache.maven.scm</groupId>
              <artifactId>maven-scm-provider-gitexe</artifactId>
              <version>1.9.5</version>
            </dependency>
            <!-- Add support for asciidoctor -->
            <dependency>
              <groupId>org.asciidoctor</groupId>
              <artifactId>asciidoctor-maven-plugin</artifactId>
              <version>1.5.7.1</version>
            </dependency>
            <dependency>
              <groupId>org.jruby</groupId>
              <artifactId>jruby-complete</artifactId>
              <version>9.1.13.0</version>
            </dependency>
            <dependency>
              <groupId>org.asciidoctor</groupId>
              <artifactId>asciidoctorj</artifactId>
              <version>1.5.6</version>
            </dependency>
            <dependency>
              <groupId>org.asciidoctor</groupId>
              <artifactId>asciidoctorj-diagram</artifactId>
              <version>1.5.4.1</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <!--
              This will suppress the generation of a hidden timestamp at the top of each generated html page
              and hopefully let the site generation nod to too big updates every time.
            -->
            <notimestamp>true</notimestamp>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changelog-plugin</artifactId>
          <version>2.3</version>
        </plugin>

        <plugin>
          <groupId>com.buschmais.jqassistant</groupId>
          <artifactId>jqassistant-maven-plugin</artifactId>
          <version>1.6.0</version>
        </plugin>

        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>${owasp-dependency-check.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins>
      <!-- Generate the unit- and integration-test reports -->
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report-only</report>
              <report>failsafe-report-only</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin-->

      <!-- Generate a code coverage report -->
      <!--plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
              <report>report-integration</report>
            </reports>
          </reportSet>
          <reportSet>
            <id>aggregate</id>
            <inherited>false</inherited>
            <reports>
              <report>report-aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin-->

      <!-- Add html friendly version of source files with line-numbers -->
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>3.0.0</version>
      </plugin-->

      <!-- Generate javadoc documentation -->
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>javadoc-no-fork</report>
              <report>test-javadoc-no-fork</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <failOnError>true</failOnError>
        </configuration>
      </plugin-->

      <!-- Generates a changelog report from GIT commits -->
      <!--plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changelog-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>changelog</report>
              <report>file-activity</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <!- Automatically link Jira issues ->
          <issueLinkUrl>https://issues.apache.org/jira/browse/%ISSUE%</issueLinkUrl>
        </configuration>
      </plugin-->

      <!-- Generates a dependency vulnerability -->
      <!--plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin-->
    </plugins>
  </reporting>

  <!-- Make Snapshots of Apache projects available -->
  <repositories>
    <repository>
      <id>apache-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <profiles>
    <!-- Build PLC4X including the CPP modules -->
    <profile>
      <id>with-cpp</id>
      <modules>
        <module>plc4cpp</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the Java modules -->
    <profile>
      <id>with-java</id>
      <modules>
        <module>plc4j</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the .Net modules -->
    <profile>
      <id>with-dotnet</id>
      <modules>
        <module>plc4net</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the Python modules -->
    <profile>
      <id>with-python</id>
      <modules>
        <module>plc4py</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the Sandbox modules -->
    <profile>
      <id>with-sandbox</id>
      <modules>
        <module>sandbox</module>
      </modules>
    </profile>

    <!-- Profile, which is used in sub-modules to enable Thrift related proxy modules -->
    <profile>
      <id>with-proxies</id>
    </profile>

    <!-- Profile for linux -->
    <profile>
      <id>unix</id>
      <activation>
        <os>
          <family>unix</family>
        </os>
      </activation>
      <properties>
        <os.suffix>linux</os.suffix>
        <os.classifier>linux-x86_64</os.classifier>
        <cmake.generator>Unix Makefiles</cmake.generator>
        <boost.url>https://dl.bintray.com/boostorg/release/${boost.version}/source/boost_${boost.version.underline}.tar.gz</boost.url>
        <boost.bootstrap.executable>./bootstrap.sh</boost.bootstrap.executable>
        <boost.build.executable>./b2</boost.build.executable>
        <thrift.bootstrap.executable>./bootstrap.sh</thrift.bootstrap.executable>
        <thrift.configure.executable>./configure</thrift.configure.executable>
        <thrift.make.executable>make</thrift.make.executable>
        <thrift.compiler.executable>thrift</thrift.compiler.executable>
      </properties>
    </profile>
    <!-- Profile for mac -->
    <profile>
      <id>max</id>
      <activation>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <os.suffix>mac</os.suffix>
        <os.classifier>mac-x86_64</os.classifier>
        <cmake.generator>Unix Makefiles</cmake.generator>
        <boost.url>https://dl.bintray.com/boostorg/release/${boost.version}/source/boost_${boost.version.underline}.tar.gz</boost.url>
        <boost.bootstrap.executable>./bootstrap.sh</boost.bootstrap.executable>
        <boost.build.executable>./b2</boost.build.executable>
        <thrift.bootstrap.executable>./bootstrap.sh</thrift.bootstrap.executable>
        <thrift.configure.executable>./configure</thrift.configure.executable>
        <thrift.make.executable>make</thrift.make.executable>
        <thrift.compiler.executable>thrift</thrift.compiler.executable>
      </properties>
    </profile>
    <!-- profile for windows -->
    <profile>
      <id>windows</id>
      <activation>
        <os>
          <family>windows</family>
        </os>
      </activation>
      <properties>
        <os.suffix>win</os.suffix>
        <os.classifier>windows-x86_64</os.classifier>
        <cmake.generator>MinGW Makefiles</cmake.generator>
        <boost.url>https://dl.bintray.com/boostorg/release/${boost.version}/source/boost_${boost.version.underline}.zip</boost.url>
        <boost.bootstrap.executable>bootstrap.bat</boost.bootstrap.executable>
        <boost.build.executable>b2</boost.build.executable>
        <boost.include-directory>libs/libs/boost/include/boost-${boost.version.underline-short}</boost.include-directory>
        <thrift.bootstrap.executable>bootstrap.sh</thrift.bootstrap.executable>
        <thrift.configure.executable>configure</thrift.configure.executable>
        <thrift.make.executable>make</thrift.make.executable>
        <thrift.compiler.executable>thrift.exe</thrift.compiler.executable>
      </properties>
    </profile>

    <!--
      This profile is intended to help when having problems with Maven.
      When enabled, it automatically generates an "effective.pom" in the target directory.
      This version is the fully expanded version where all inherited configuration is in
      place and all variables are resolved and profile configuration is included.
    -->
    <profile>
      <id>debug-pom</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-effective-pom</id>
                <phase>compile</phase>
                <goals>
                  <goal>effective-pom</goal>
                </goals>
                <configuration>
                  <output>${project.build.directory}/effective.pom</output>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
      This profile adds some additional configuration that should only be applied when running on jenkins.
    -->
    <profile>
      <id>jenkins-build</id>
    </profile>

    <!--
      This profile adds some additional checks and settings that should apply during development,
      but could cause problems after that. As an example it would be impossible to build a released
      version, if after the release CVEs were reported for one of its dependencies.
    -->
    <profile>
      <id>development</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>3.0.0-M2</version> <!--$NO-MVN-MAN-VER$-->
            <executions>
              <!-- Make sure no dependencies are used for which known vulnerabilities exist. -->
              <execution>
                <id>sanity-checks</id>
                <phase>validate</phase>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireJavaVersion>
                      <version>1.8.0</version>
                    </requireJavaVersion>
                    <!--reactorModuleConvergence/-->
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!--plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <failBuildOnCVSS>8</failBuildOnCVSS>
            </configuration>
          </plugin-->
        </plugins>
      </build>
    </profile>

    <profile>
      <id>with-jqassistant</id>
      <build>
        <plugins>
          <!-- Plugin for analysing the project based on neo4j queries -->
          <plugin>
            <groupId>com.buschmais.jqassistant</groupId>
            <artifactId>jqassistant-maven-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>scan</goal>
                  <goal>analyze</goal>
                </goals>
                <configuration>
                  <rulesDirectory>${project.basedir}/src/jqassistant</rulesDirectory>
                  <failOnSeverity>MAJOR</failOnSeverity>
                  <warnOnSeverity>MINOR</warnOnSeverity>
                  <scanIncludes>
                    <scanInclude>
                      <path>${project.basedir}/.git</path>
                    </scanInclude>
                  </scanIncludes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <groupId>com.buschmais.jqassistant</groupId>
            <artifactId>jqassistant-maven-plugin</artifactId>
            <reportSets>
              <reportSet>
                <reports>
                  <report>report</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>

    <profile>
      <id>only-eclipse</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <!--
              This is a fake plugin which is used to tell m2e (Eclipse) how
              to process this maven project.
            -->
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <versionRange>[1.0.0,)</versionRange>
                        <goals>
                          <goal>process</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <!--
      This profile extends the default "apache-release" configuration with automatic checksum-
      generation for the release source artifact. It is automatically activated during the
      release build and only needed there.
    -->
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <!--
            Create MD5 and SHA512 checksum files for the release artifacts.
          -->
          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
              <execution>
                <goals>
                  <goal>files</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <algorithms>
                <algorithm>SHA-512</algorithm>
              </algorithms>
              <fileSets>
                <fileSet>
                  <directory>${project.build.directory}</directory>
                  <includes>
                    <include>apache-plc4x-${project.version}-source-release.zip</include>
                  </includes>
                </fileSet>
              </fileSets>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>