blob: d629822b3eff4f00c69b72a583a6f8d2bc910bbf [file] [log] [blame]
<?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>