You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2019/05/07 09:12:44 UTC

[plc4x] 01/02: - Refactored the project structure to include examples and integration modules to the plc4x language they are based on.

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 5bb633858af174a6e7e2ac58d1916c3c6144c358
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Apr 29 15:58:22 2019 +0200

    - Refactored the project structure to include examples and integration modules to the plc4x language they are based on.
---
 Jenkinsfile                                        |   2 +-
 README                                             |   2 +-
 integrations/apache-brooklyn/pom.xml               |  40 ---
 integrations/apache-kafka/config/sink.properties   |  25 --
 integrations/apache-kafka/config/source.properties |  23 --
 plc4cpp/CMakeLists.txt                             |   7 +-
 plc4cpp/{ => examples}/CMakeLists.txt              |  15 +-
 plc4cpp/{ => examples}/pom.xml                     |  40 ++-
 plc4cpp/{ => integrations}/CMakeLists.txt          |  16 +-
 .../apache-mynewt}/CMakeLists.txt                  |  15 +-
 .../integrations}/apache-mynewt/pom.xml            |   6 +-
 .../edgex-foundry}/CMakeLists.txt                  |  15 +-
 .../integrations/edgex-foundry}/pom.xml            |  34 +--
 {integrations => plc4cpp/integrations}/pom.xml     |  14 +-
 plc4cpp/pom.xml                                    |   3 +
 {examples => plc4j/examples}/dummy-driver/pom.xml  |   6 +-
 .../java/examples/dummydriver/DummyDriver.java     |   4 +-
 .../dummydriver/connection/DummyConnection.java    |   0
 .../examples/dummydriver/model/DummyField.java     |   0
 .../examples/dummydriver/netty/DummyProtocol.java  |   0
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   0
 .../examples}/hello-cloud-azure/pom.xml            |   6 +-
 .../java/examples/cloud/azure/CliOptions.java      |   0
 .../cloud/azure/S7PlcToAzureIoTHubSample.java      |   0
 .../examples}/hello-cloud-google/README.md         |   0
 .../examples}/hello-cloud-google/pom.xml           |   6 +-
 .../java/examples/cloud/google/CliOptions.java     |   0
 .../cloud/google/S7PlcToGoogleIoTCoreSample.java   |   0
 .../src/main/resources/logback.xml                 |   0
 .../hello-connectivity-kafka/kafka-connector.yml   |   0
 .../examples}/hello-connectivity-kafka/pom.xml     |   6 +-
 .../examples}/hello-connectivity-kafka/server.sh   |   0
 .../connectivity/kafka/KafkaConnector.java         |   0
 .../connectivity/kafka/model/Configuration.java    |   0
 .../connectivity/kafka/model/KafkaConfig.java      |   0
 .../connectivity/kafka/model/PlcConfig.java        |   0
 .../connectivity/kafka/model/PlcFieldConfig.java   |   0
 .../connectivity/kafka/model/PlcMemoryBlock.java   |   0
 .../src/main/resources/logback.xml                 |   0
 .../hello-connectivity-mqtt/mqtt-connector.yml     |   0
 .../examples}/hello-connectivity-mqtt/pom.xml      |   6 +-
 .../examples/connectivity/mqtt/MqttConnector.java  |   0
 .../connectivity/mqtt/model/Configuration.java     |   0
 .../connectivity/mqtt/model/MqttConfig.java        |   0
 .../connectivity/mqtt/model/PlcConfig.java         |   0
 .../connectivity/mqtt/model/PlcFieldConfig.java    |   0
 .../connectivity/mqtt/model/PlcMemoryBlock.java    |   0
 .../src/main/resources/logback.xml                 |   0
 .../examples}/hello-integration-edgent/pom.xml     |   6 +-
 .../examples/integration/edgent/CliOptions.java    |   0
 .../examples/integration/edgent/PlcLogger.java     |   0
 .../src/main/resources/logback.xml                 |   0
 {examples => plc4j/examples}/hello-opm/pom.xml     |   6 +-
 .../plc4x/java/examples/helloopm/HelloOpm.java     |   0
 .../hello-opm/src/main/resources/logback.xml       |   0
 .../hello-storage-elasticsearch/README.adoc        |   0
 .../examples}/hello-storage-elasticsearch/pom.xml  |   6 +-
 .../elasticsearch/ElasticsearchStorage.java        |   0
 .../src/main/resources/log4j2.xml                  |   0
 .../src/main/resources/logback.xml                 |   0
 .../examples}/hello-webapp/client/pom.xml          |  17 +-
 .../client/src/main/royale/HelloPLC4X.mxml         |   3 -
 .../client/src/main/royale/service/RobotService.as |   5 -
 {examples => plc4j/examples}/hello-webapp/pom.xml  |   6 +-
 .../examples}/hello-webapp/service/pom.xml         |   6 +-
 .../robot/controllers/RobotController.java         |   0
 .../examples}/hello-webapp/webapp/pom.xml          |  16 +-
 .../apache/plc4x/examples/robot/Application.java   |   0
 .../src/main/resources/application.properties      |   0
 .../examples}/hello-world-plc4x/pom.xml            |   6 +-
 .../plc4x/java/examples/helloplc4x/CliOptions.java |   0
 .../plc4x/java/examples/helloplc4x/HelloPlc4x.java |   0
 .../src/main/resources/logback.xml                 |   0
 {examples => plc4j/examples}/pom.xml               |  36 +--
 .../integrations}/apache-calcite/pom.xml           |   6 +-
 .../main/java/org/apache/plc4x/Plc4xBaseTable.java |   0
 .../main/java/org/apache/plc4x/Plc4xSchema.java    |   0
 .../java/org/apache/plc4x/Plc4xSchemaFactory.java  |   0
 .../java/org/apache/plc4x/Plc4xStreamTable.java    |   0
 .../src/main/java/org/apache/plc4x/Plc4xTable.java |   0
 .../java/org/apache/plc4x/DriverManagerTest.java   |   0
 .../java/org/apache/plc4x/Plc4XBaseTableTest.java  |   0
 .../org/apache/plc4x/Plc4xSchemaFactoryTest.java   |   2 -
 .../apache-calcite/src/test/resources/example.yml  |   0
 .../apache-calcite}/src/test/resources/logback.xml |   0
 .../apache-calcite/src/test/resources/model.json   |   0
 .../integrations}/apache-camel/pom.xml             |   7 +-
 .../apache-camel/src/main/docs/PLC4X.adoc          |   0
 .../java/org/apache/plc4x/camel/Constants.java     |   0
 .../org/apache/plc4x/camel/Plc4XComponent.java     |   0
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java |   0
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java |   0
 .../apache/plc4x/camel/Plc4XPollingConsumer.java   |   0
 .../java/org/apache/plc4x/camel/Plc4XProducer.java |   0
 .../services/org/apache/camel/component/plc4x      |   0
 .../java/org/apache/plc4x/camel/ConstantsTest.java |   0
 .../java/org/apache/plc4x/camel/ManualTest.java    |   0
 .../java/org/apache/plc4x/camel/MockDriver.java    |   0
 .../org/apache/plc4x/camel/Plc4XComponentTest.java |   0
 .../org/apache/plc4x/camel/Plc4XConsumerTest.java  |   0
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |   0
 .../plc4x/camel/Plc4XPollingConsumerTest.java      |   0
 .../org/apache/plc4x/camel/Plc4XProducerTest.java  |   0
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   0
 .../src/test/resources/log4j2.properties           |   0
 .../apache-camel}/src/test/resources/logback.xml   |   0
 .../integrations}/apache-edgent/pom.xml            |   7 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   0
 .../java/org/apache/plc4x/edgent/PlcFunctions.java |   0
 .../java/org/apache/plc4x/edgent/package-info.java |   0
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |   0
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |   0
 .../apache/plc4x/edgent/mock/MockConnection.java   |   0
 .../org/apache/plc4x/edgent/mock/MockDriver.java   |   4 +-
 .../org/apache/plc4x/edgent/mock/MockField.java    |   0
 .../apache/plc4x/edgent/mock/MockFieldHandler.java |   0
 .../apache/plc4x/edgent/mock/MockFieldItem.java    |   0
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   0
 .../integrations}/apache-kafka/README.md           |   0
 .../apache-kafka/config/sink.properties            |  25 ++
 .../apache-kafka/config/source.properties          |  23 ++
 .../integrations}/apache-kafka/pom.xml             |   7 +-
 .../org/apache/plc4x/kafka/Plc4xSinkConnector.java |   5 +-
 .../java/org/apache/plc4x/kafka/Plc4xSinkTask.java |   0
 .../apache/plc4x/kafka/Plc4xSourceConnector.java   |   3 +-
 .../org/apache/plc4x/kafka/Plc4xSourceTask.java    |   0
 .../org/apache/plc4x/kafka/util/VersionUtil.java   |   0
 .../apache-karaf/karaf-ads-feature/pom.xml         |  15 +-
 .../apache-karaf/karaf-demo-server/pom.xml         |  28 +-
 .../apache-karaf/karaf-ethernet-ip-feature/pom.xml |  15 +-
 .../apache-karaf/karaf-modbus-feature/pom.xml      |  15 +-
 .../apache-karaf/karaf-s7-feature/pom.xml          |  15 +-
 .../apache-karaf/karaf-simulated-feature/pom.xml   |  15 +-
 .../integrations}/apache-karaf/pom.xml             |  15 +-
 .../apache-nifi/nifi-plc4x-nar/false-positives.xml |   0
 .../apache-nifi/nifi-plc4x-nar/pom.xml             |  23 +-
 .../apache-nifi/nifi-plc4x-processors/pom.xml      |   6 +-
 .../org/apache/plc4x/nifi/BasePlc4xProcessor.java  |   0
 .../org/apache/plc4x/nifi/Plc4xSinkProcessor.java  |   0
 .../apache/plc4x/nifi/Plc4xSourceProcessor.java    |   0
 .../services/org.apache.nifi.processor.Processor   |   0
 .../plc4x4nifi/Plc4xSinkProcessorTest.java         |   0
 .../plc4x4nifi/Plc4xSourceProcessorTest.java       |   0
 .../integrations}/apache-nifi/pom.xml              |   6 +-
 .../integrations}/pom.xml                          |  42 ++-
 plc4j/pom.xml                                      | 296 ++++++++++++++++++
 plc4j/protocols/delta-v/pom.xml                    |  15 +
 pom.xml                                            | 332 ---------------------
 148 files changed, 636 insertions(+), 695 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index e496da6..93e0c5f 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -106,7 +106,7 @@ pipeline {
 
                 // We'll deploy to a relative directory so we can save
                 // that and deploy in a later step on a different node
-                sh 'mvn -P${JENKINS_PROFILE},development,with-sandbox ${MVN_TEST_FAIL_IGNORE} ${JQASSISTANT_NEO4J_VERSION} -DaltDeploymentRepository=snapshot-repo::default::file:./local-snapshots-dir clean deploy'
+                sh 'mvn -P${JENKINS_PROFILE},development,with-cpp,with-python,with-proxies,with-sandbox ${MVN_TEST_FAIL_IGNORE} ${JQASSISTANT_NEO4J_VERSION} -DaltDeploymentRepository=snapshot-repo::default::file:./local-snapshots-dir clean deploy'
 
                 // Stash the build results so we can deploy them on another node
                 stash name: 'plc4x-build-snapshots', includes: 'local-snapshots-dir/**'
diff --git a/README b/README
index edd064d..ca79632 100644
--- a/README
+++ b/README
@@ -36,7 +36,7 @@ Linux
 
 On a clean Ubuntu 18.04 the following software needs to be installed:
 
-    sudo apt install bison flex python-dev
+    sudo apt
 
 If you're building a source-distribution and haven't installed git yet, be sure to do so:
 
diff --git a/integrations/apache-brooklyn/pom.xml b/integrations/apache-brooklyn/pom.xml
deleted file mode 100644
index ea3aeef..0000000
--- a/integrations/apache-brooklyn/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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.plc4x</groupId>
-    <artifactId>integrations</artifactId>
-    <version>0.4.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>apache-brooklyn</artifactId>
-  <packaging>pom</packaging>
-
-  <name>Integrations: Apache Brooklyn</name>
-  <description>Integration module for integrating PLC4X into Apache Brooklyn.</description>
-
-  <modules>
-    
-  </modules>
-
-</project>
\ No newline at end of file
diff --git a/integrations/apache-kafka/config/sink.properties b/integrations/apache-kafka/config/sink.properties
deleted file mode 100644
index ae9ccba..0000000
--- a/integrations/apache-kafka/config/sink.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-
-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.
-
--->
-name=plc-sink-test
-connector.class=org.apache.plc4x.kafka.Plc4xSinkConnector
-topics=test
-url=test:unused
-transforms=key
-transforms.key.type=org.apache.kafka.connect.transforms.ExtractField$Key
-transforms.key.field=query
\ No newline at end of file
diff --git a/integrations/apache-kafka/config/source.properties b/integrations/apache-kafka/config/source.properties
deleted file mode 100644
index afa7e93..0000000
--- a/integrations/apache-kafka/config/source.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-
-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.
-
--->
-name=plc-source-test
-connector.class=org.apache.plc4x.kafka.Plc4xSourceConnector
-topic=test
-queries=test:unused#RANDOM/foo:INTEGER,test:another#RANDOM/bar:STRING
-rate=2000
\ No newline at end of file
diff --git a/plc4cpp/CMakeLists.txt b/plc4cpp/CMakeLists.txt
index c0fdfef..668ef96 100644
--- a/plc4cpp/CMakeLists.txt
+++ b/plc4cpp/CMakeLists.txt
@@ -29,5 +29,8 @@ set(PLC4CPP_ROOT_DIR ${CMAKE_SOURCE_DIR})
     Build all the modules of PLC4Cpp
 ]]
 add_subdirectory(api)
-add_subdirectory(protocols/driver-bases/base)
-add_subdirectory(utils/logger)
\ No newline at end of file
+add_subdirectory(protocols)
+add_subdirectory(utils)
+
+add_subdirectory(examples)
+add_subdirectory(integrations)
diff --git a/plc4cpp/CMakeLists.txt b/plc4cpp/examples/CMakeLists.txt
similarity index 71%
copy from plc4cpp/CMakeLists.txt
copy to plc4cpp/examples/CMakeLists.txt
index c0fdfef..1989a97 100644
--- a/plc4cpp/CMakeLists.txt
+++ b/plc4cpp/examples/CMakeLists.txt
@@ -17,17 +17,4 @@
   under the License.
 ]]
 
-cmake_minimum_required(VERSION 3.7)
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-set(PLC4CPP_ROOT_DIR ${CMAKE_SOURCE_DIR})
-
-
-#[[
-    Build all the modules of PLC4Cpp
-]]
-add_subdirectory(api)
-add_subdirectory(protocols/driver-bases/base)
-add_subdirectory(utils/logger)
\ No newline at end of file
+//add_subdirectory(module-name)
diff --git a/plc4cpp/pom.xml b/plc4cpp/examples/pom.xml
similarity index 64%
copy from plc4cpp/pom.xml
copy to plc4cpp/examples/pom.xml
index a6bb5bc..4751b7c 100644
--- a/plc4cpp/pom.xml
+++ b/plc4cpp/examples/pom.xml
@@ -23,39 +23,33 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>plc4x-parent</artifactId>
+    <artifactId>plc4cpp</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>plc4cpp</artifactId>
+  <groupId>org.apache.plc4x.examples</groupId>
+  <artifactId>plc4cpp-examples</artifactId>
   <packaging>pom</packaging>
 
-  <name>PLC4Cpp</name>
-  <description>Implementation of the protocol adapters for usage as C++ library.</description>
+  <name>PLC4Cpp: Examples</name>
+  <description>Parent of all C++ based application example modules.</description>
 
   <modules>
-    <module>api</module>
-    <module>protocols</module>
-    <module>utils</module>
-
-    <!-- Third party libs -->
-    <module>libs</module>
   </modules>
 
   <build>
-    <plugins>
-      <!-- Prevent the jar plugin from building a jar -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>default-jar</id>
-            <phase/>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
+    <pluginManagement>
+      <plugins>
+        <!-- No need to deploy examples in a maven repo -->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <configuration>
+            <skip>true</skip>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
   </build>
 
 </project>
\ No newline at end of file
diff --git a/plc4cpp/CMakeLists.txt b/plc4cpp/integrations/CMakeLists.txt
similarity index 71%
copy from plc4cpp/CMakeLists.txt
copy to plc4cpp/integrations/CMakeLists.txt
index c0fdfef..7086afa 100644
--- a/plc4cpp/CMakeLists.txt
+++ b/plc4cpp/integrations/CMakeLists.txt
@@ -17,17 +17,5 @@
   under the License.
 ]]
 
-cmake_minimum_required(VERSION 3.7)
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-set(PLC4CPP_ROOT_DIR ${CMAKE_SOURCE_DIR})
-
-
-#[[
-    Build all the modules of PLC4Cpp
-]]
-add_subdirectory(api)
-add_subdirectory(protocols/driver-bases/base)
-add_subdirectory(utils/logger)
\ No newline at end of file
+add_subdirectory(apache-mynewt)
+add_subdirectory(edgex-foundry)
\ No newline at end of file
diff --git a/plc4cpp/CMakeLists.txt b/plc4cpp/integrations/apache-mynewt/CMakeLists.txt
similarity index 71%
copy from plc4cpp/CMakeLists.txt
copy to plc4cpp/integrations/apache-mynewt/CMakeLists.txt
index c0fdfef..1989a97 100644
--- a/plc4cpp/CMakeLists.txt
+++ b/plc4cpp/integrations/apache-mynewt/CMakeLists.txt
@@ -17,17 +17,4 @@
   under the License.
 ]]
 
-cmake_minimum_required(VERSION 3.7)
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-set(PLC4CPP_ROOT_DIR ${CMAKE_SOURCE_DIR})
-
-
-#[[
-    Build all the modules of PLC4Cpp
-]]
-add_subdirectory(api)
-add_subdirectory(protocols/driver-bases/base)
-add_subdirectory(utils/logger)
\ No newline at end of file
+//add_subdirectory(module-name)
diff --git a/integrations/apache-mynewt/pom.xml b/plc4cpp/integrations/apache-mynewt/pom.xml
similarity index 89%
rename from integrations/apache-mynewt/pom.xml
rename to plc4cpp/integrations/apache-mynewt/pom.xml
index 10496f6..8773724 100644
--- a/integrations/apache-mynewt/pom.xml
+++ b/plc4cpp/integrations/apache-mynewt/pom.xml
@@ -23,14 +23,14 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>integrations</artifactId>
+    <artifactId>plc4cpp-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-mynewt</artifactId>
+  <artifactId>plc4cpp-apache-mynewt</artifactId>
   <packaging>pom</packaging>
 
-  <name>Integrations: Apache Mynewt</name>
+  <name>PLC4Cpp: Integrations: Apache Mynewt</name>
   <description>Integration module for integrating PLC4X into Apache Mynewt.</description>
 
   <modules>
diff --git a/plc4cpp/CMakeLists.txt b/plc4cpp/integrations/edgex-foundry/CMakeLists.txt
similarity index 71%
copy from plc4cpp/CMakeLists.txt
copy to plc4cpp/integrations/edgex-foundry/CMakeLists.txt
index c0fdfef..1989a97 100644
--- a/plc4cpp/CMakeLists.txt
+++ b/plc4cpp/integrations/edgex-foundry/CMakeLists.txt
@@ -17,17 +17,4 @@
   under the License.
 ]]
 
-cmake_minimum_required(VERSION 3.7)
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
-set(PLC4CPP_ROOT_DIR ${CMAKE_SOURCE_DIR})
-
-
-#[[
-    Build all the modules of PLC4Cpp
-]]
-add_subdirectory(api)
-add_subdirectory(protocols/driver-bases/base)
-add_subdirectory(utils/logger)
\ No newline at end of file
+//add_subdirectory(module-name)
diff --git a/integrations/apache-karaf/karaf-s7-feature/pom.xml b/plc4cpp/integrations/edgex-foundry/pom.xml
similarity index 65%
copy from integrations/apache-karaf/karaf-s7-feature/pom.xml
copy to plc4cpp/integrations/edgex-foundry/pom.xml
index 47f3ad2..b036617 100644
--- a/integrations/apache-karaf/karaf-s7-feature/pom.xml
+++ b/plc4cpp/integrations/edgex-foundry/pom.xml
@@ -8,7 +8,7 @@
   "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
+      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
@@ -17,36 +17,22 @@
   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>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4cpp-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-s7-feature</artifactId>
-  <packaging>feature</packaging>
-
-  <name>Integrations: Apache Karaf: S7</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.4.0-SNAPSHOT</version>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
+  <artifactId>plc4cpp-edgex-foundry</artifactId>
+  <packaging>pom</packaging>
+
+  <name>PLC4Cpp: Integrations: EdgeX-Foundry</name>
+
+  <modules>
+  </modules>
 
 </project>
\ No newline at end of file
diff --git a/integrations/pom.xml b/plc4cpp/integrations/pom.xml
similarity index 78%
rename from integrations/pom.xml
rename to plc4cpp/integrations/pom.xml
index b7cc8c8..a21c84b 100644
--- a/integrations/pom.xml
+++ b/plc4cpp/integrations/pom.xml
@@ -22,25 +22,19 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>plc4x-parent</artifactId>
+    <artifactId>plc4cpp</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>integrations</artifactId>
+  <artifactId>plc4cpp-integrations</artifactId>
   <packaging>pom</packaging>
 
-  <name>Integrations</name>
+  <name>PLC4Cpp: Integrations</name>
   <description>Parent of all product specific integration modules.</description>
 
   <modules>
-    <module>apache-brooklyn</module>
-    <module>apache-camel</module>
-    <module>apache-edgent</module>
-    <module>apache-kafka</module>
     <module>apache-mynewt</module>
-    <module>apache-nifi</module>
-    <module>apache-karaf</module>
-    <module>apache-calcite</module>
+    <module>edgex-foundry</module>
   </modules>
 
 </project>
\ No newline at end of file
diff --git a/plc4cpp/pom.xml b/plc4cpp/pom.xml
index a6bb5bc..7f6d46f 100644
--- a/plc4cpp/pom.xml
+++ b/plc4cpp/pom.xml
@@ -38,6 +38,9 @@
     <module>protocols</module>
     <module>utils</module>
 
+    <module>examples</module>
+    <module>integrations</module>
+
     <!-- Third party libs -->
     <module>libs</module>
   </modules>
diff --git a/examples/dummy-driver/pom.xml b/plc4j/examples/dummy-driver/pom.xml
similarity index 94%
rename from examples/dummy-driver/pom.xml
rename to plc4j/examples/dummy-driver/pom.xml
index 4ace59b..5083a58 100644
--- a/examples/dummy-driver/pom.xml
+++ b/plc4j/examples/dummy-driver/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>dummy-driver</artifactId>
-  <name>Examples: Protocol: Dummy</name>
+  <artifactId>plc4j-dummy-driver</artifactId>
+  <name>PLC4J: Examples: Protocol: Dummy</name>
   <description>
     Implementation of a PLC4X driver able to speak a non existent dummy protocol.
     This module should be used as inspiration for implementing own drivers.
diff --git a/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java b/plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java
similarity index 100%
rename from examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java
rename to plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java
index d9e182b..76e54f1 100644
--- a/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java
+++ b/plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/DummyDriver.java
@@ -18,11 +18,11 @@ under the License.
 */
 package org.apache.plc4x.java.examples.dummydriver;
 
-import org.apache.plc4x.java.spi.PlcDriver;
-import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.examples.dummydriver.connection.DummyConnection;
+import org.apache.plc4x.java.spi.PlcDriver;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
diff --git a/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/connection/DummyConnection.java b/plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/connection/DummyConnection.java
similarity index 100%
rename from examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/connection/DummyConnection.java
rename to plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/connection/DummyConnection.java
diff --git a/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/model/DummyField.java b/plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/model/DummyField.java
similarity index 100%
rename from examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/model/DummyField.java
rename to plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/model/DummyField.java
diff --git a/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/netty/DummyProtocol.java b/plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/netty/DummyProtocol.java
similarity index 100%
rename from examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/netty/DummyProtocol.java
rename to plc4j/examples/dummy-driver/src/main/java/org/apache/plc4x/java/examples/dummydriver/netty/DummyProtocol.java
diff --git a/examples/dummy-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver b/plc4j/examples/dummy-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
similarity index 100%
rename from examples/dummy-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
rename to plc4j/examples/dummy-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
diff --git a/examples/hello-cloud-azure/pom.xml b/plc4j/examples/hello-cloud-azure/pom.xml
similarity index 94%
rename from examples/hello-cloud-azure/pom.xml
rename to plc4j/examples/hello-cloud-azure/pom.xml
index f42d164..35f8f9e 100644
--- a/examples/hello-cloud-azure/pom.xml
+++ b/plc4j/examples/hello-cloud-azure/pom.xml
@@ -21,13 +21,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>examples</artifactId>
     <groupId>org.apache.plc4x.examples</groupId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-cloud-azure</artifactId>
-  <name>Examples: Cloud: Azure IoT Hub</name>
+  <artifactId>plc4j-hello-cloud-azure</artifactId>
+  <name>PLC4J: Examples: Cloud: Azure IoT Hub</name>
   <description>
     Implementation of a PLC4X application gathering information from
     a PLC and making that available in an Azure IoT Hub.
diff --git a/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/CliOptions.java b/plc4j/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/CliOptions.java
similarity index 100%
rename from examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/CliOptions.java
rename to plc4j/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/CliOptions.java
diff --git a/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/S7PlcToAzureIoTHubSample.java b/plc4j/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/S7PlcToAzureIoTHubSample.java
similarity index 100%
rename from examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/S7PlcToAzureIoTHubSample.java
rename to plc4j/examples/hello-cloud-azure/src/main/java/org/apache/plc4x/java/examples/cloud/azure/S7PlcToAzureIoTHubSample.java
diff --git a/examples/hello-cloud-google/README.md b/plc4j/examples/hello-cloud-google/README.md
similarity index 100%
rename from examples/hello-cloud-google/README.md
rename to plc4j/examples/hello-cloud-google/README.md
diff --git a/examples/hello-cloud-google/pom.xml b/plc4j/examples/hello-cloud-google/pom.xml
similarity index 95%
rename from examples/hello-cloud-google/pom.xml
rename to plc4j/examples/hello-cloud-google/pom.xml
index a64c3f0..a9ae206 100644
--- a/examples/hello-cloud-google/pom.xml
+++ b/plc4j/examples/hello-cloud-google/pom.xml
@@ -21,13 +21,13 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>examples</artifactId>
     <groupId>org.apache.plc4x.examples</groupId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-cloud-google</artifactId>
-  <name>Examples: Cloud: Google Cloud IoT Core</name>
+  <artifactId>plc4j-hello-cloud-google</artifactId>
+  <name>PLC4J: Examples: Cloud: Google Cloud IoT Core</name>
   <description>
     Implementation of a PLC4X application gathering information from
     a PLC and making that available in an the Google Cloud IoT Core.
diff --git a/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/CliOptions.java b/plc4j/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/CliOptions.java
similarity index 100%
rename from examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/CliOptions.java
rename to plc4j/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/CliOptions.java
diff --git a/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/S7PlcToGoogleIoTCoreSample.java b/plc4j/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/S7PlcToGoogleIoTCoreSample.java
similarity index 100%
rename from examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/S7PlcToGoogleIoTCoreSample.java
rename to plc4j/examples/hello-cloud-google/src/main/java/org/apache/plc4x/java/examples/cloud/google/S7PlcToGoogleIoTCoreSample.java
diff --git a/examples/hello-cloud-google/src/main/resources/logback.xml b/plc4j/examples/hello-cloud-google/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-cloud-google/src/main/resources/logback.xml
rename to plc4j/examples/hello-cloud-google/src/main/resources/logback.xml
diff --git a/examples/hello-connectivity-kafka/kafka-connector.yml b/plc4j/examples/hello-connectivity-kafka/kafka-connector.yml
similarity index 100%
rename from examples/hello-connectivity-kafka/kafka-connector.yml
rename to plc4j/examples/hello-connectivity-kafka/kafka-connector.yml
diff --git a/examples/hello-connectivity-kafka/pom.xml b/plc4j/examples/hello-connectivity-kafka/pom.xml
similarity index 96%
rename from examples/hello-connectivity-kafka/pom.xml
rename to plc4j/examples/hello-connectivity-kafka/pom.xml
index a989e91..c035912 100644
--- a/examples/hello-connectivity-kafka/pom.xml
+++ b/plc4j/examples/hello-connectivity-kafka/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-connectivity-kafka</artifactId>
-  <name>Examples: Connectivity: Kafka</name>
+  <artifactId>plc4j-hello-connectivity-kafka</artifactId>
+  <name>PLC4J: Examples: Connectivity: Kafka</name>
   <description>Sample application that reads data from a connected PLC and publishes this information to a Kafka topic.</description>
 
   <properties>
diff --git a/examples/hello-connectivity-kafka/server.sh b/plc4j/examples/hello-connectivity-kafka/server.sh
similarity index 100%
rename from examples/hello-connectivity-kafka/server.sh
rename to plc4j/examples/hello-connectivity-kafka/server.sh
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/KafkaConnector.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/KafkaConnector.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/KafkaConnector.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/KafkaConnector.java
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/Configuration.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/Configuration.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/Configuration.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/Configuration.java
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/KafkaConfig.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/KafkaConfig.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/KafkaConfig.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/KafkaConfig.java
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcConfig.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcConfig.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcConfig.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcConfig.java
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcFieldConfig.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcFieldConfig.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcFieldConfig.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcFieldConfig.java
diff --git a/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcMemoryBlock.java b/plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcMemoryBlock.java
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcMemoryBlock.java
rename to plc4j/examples/hello-connectivity-kafka/src/main/java/org/apache/plc4x/java/examples/connectivity/kafka/model/PlcMemoryBlock.java
diff --git a/examples/hello-connectivity-mqtt/src/main/resources/logback.xml b/plc4j/examples/hello-connectivity-kafka/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/resources/logback.xml
rename to plc4j/examples/hello-connectivity-kafka/src/main/resources/logback.xml
diff --git a/examples/hello-connectivity-mqtt/mqtt-connector.yml b/plc4j/examples/hello-connectivity-mqtt/mqtt-connector.yml
similarity index 100%
rename from examples/hello-connectivity-mqtt/mqtt-connector.yml
rename to plc4j/examples/hello-connectivity-mqtt/mqtt-connector.yml
diff --git a/examples/hello-connectivity-mqtt/pom.xml b/plc4j/examples/hello-connectivity-mqtt/pom.xml
similarity index 96%
rename from examples/hello-connectivity-mqtt/pom.xml
rename to plc4j/examples/hello-connectivity-mqtt/pom.xml
index 799ec0f..74cdcb4 100644
--- a/examples/hello-connectivity-mqtt/pom.xml
+++ b/plc4j/examples/hello-connectivity-mqtt/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-connectivity-mqtt</artifactId>
-  <name>Examples: Connectivity: MQTT</name>
+  <artifactId>plc4j-hello-connectivity-mqtt</artifactId>
+  <name>PLC4J: Examples: Connectivity: MQTT</name>
   <description>Sample application, that reads data from a connected PLC and publishes this information via MQTT.</description>
 
   <properties>
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/MqttConnector.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/MqttConnector.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/MqttConnector.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/MqttConnector.java
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/Configuration.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/Configuration.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/Configuration.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/Configuration.java
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/MqttConfig.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/MqttConfig.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/MqttConfig.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/MqttConfig.java
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcConfig.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcConfig.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcConfig.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcConfig.java
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcFieldConfig.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcFieldConfig.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcFieldConfig.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcFieldConfig.java
diff --git a/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcMemoryBlock.java b/plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcMemoryBlock.java
similarity index 100%
rename from examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcMemoryBlock.java
rename to plc4j/examples/hello-connectivity-mqtt/src/main/java/org/apache/plc4x/java/examples/connectivity/mqtt/model/PlcMemoryBlock.java
diff --git a/examples/hello-connectivity-kafka/src/main/resources/logback.xml b/plc4j/examples/hello-connectivity-mqtt/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-connectivity-kafka/src/main/resources/logback.xml
rename to plc4j/examples/hello-connectivity-mqtt/src/main/resources/logback.xml
diff --git a/examples/hello-integration-edgent/pom.xml b/plc4j/examples/hello-integration-edgent/pom.xml
similarity index 95%
rename from examples/hello-integration-edgent/pom.xml
rename to plc4j/examples/hello-integration-edgent/pom.xml
index 54618e5..2aeee4c 100644
--- a/examples/hello-integration-edgent/pom.xml
+++ b/plc4j/examples/hello-integration-edgent/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hellp-integration-edgent</artifactId>
-  <name>Examples: Edgent</name>
+  <artifactId>plc4j-hellp-integration-edgent</artifactId>
+  <name>PLC4J: Examples: Edgent</name>
   <description>Application using Edgent to output PLC data to the console.</description>
 
   <properties>
diff --git a/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/CliOptions.java b/plc4j/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/CliOptions.java
similarity index 100%
rename from examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/CliOptions.java
rename to plc4j/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/CliOptions.java
diff --git a/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/PlcLogger.java b/plc4j/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/PlcLogger.java
similarity index 100%
rename from examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/PlcLogger.java
rename to plc4j/examples/hello-integration-edgent/src/main/java/org/apache/plc4x/java/examples/integration/edgent/PlcLogger.java
diff --git a/examples/hello-world-plc4x/src/main/resources/logback.xml b/plc4j/examples/hello-integration-edgent/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-world-plc4x/src/main/resources/logback.xml
rename to plc4j/examples/hello-integration-edgent/src/main/resources/logback.xml
diff --git a/examples/hello-opm/pom.xml b/plc4j/examples/hello-opm/pom.xml
similarity index 95%
rename from examples/hello-opm/pom.xml
rename to plc4j/examples/hello-opm/pom.xml
index e477c6e..1a54c8c 100644
--- a/examples/hello-opm/pom.xml
+++ b/plc4j/examples/hello-opm/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-opm</artifactId>
-  <name>Examples: Hello OPM</name>
+  <artifactId>plc4j-hello-opm</artifactId>
+  <name>PLC4J: Examples: Hello OPM</name>
   <description>Hello World example of PLC4X using the OPM feature.</description>
 
   <properties>
diff --git a/examples/hello-opm/src/main/java/org/apache/plc4x/java/examples/helloopm/HelloOpm.java b/plc4j/examples/hello-opm/src/main/java/org/apache/plc4x/java/examples/helloopm/HelloOpm.java
similarity index 100%
rename from examples/hello-opm/src/main/java/org/apache/plc4x/java/examples/helloopm/HelloOpm.java
rename to plc4j/examples/hello-opm/src/main/java/org/apache/plc4x/java/examples/helloopm/HelloOpm.java
diff --git a/examples/hello-opm/src/main/resources/logback.xml b/plc4j/examples/hello-opm/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-opm/src/main/resources/logback.xml
rename to plc4j/examples/hello-opm/src/main/resources/logback.xml
diff --git a/examples/hello-storage-elasticsearch/README.adoc b/plc4j/examples/hello-storage-elasticsearch/README.adoc
similarity index 100%
rename from examples/hello-storage-elasticsearch/README.adoc
rename to plc4j/examples/hello-storage-elasticsearch/README.adoc
diff --git a/examples/hello-storage-elasticsearch/pom.xml b/plc4j/examples/hello-storage-elasticsearch/pom.xml
similarity index 96%
rename from examples/hello-storage-elasticsearch/pom.xml
rename to plc4j/examples/hello-storage-elasticsearch/pom.xml
index 198ea09..76ef771 100644
--- a/examples/hello-storage-elasticsearch/pom.xml
+++ b/plc4j/examples/hello-storage-elasticsearch/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-elasticsearch</artifactId>
-  <name>Examples: Storage: ElasticSearch</name>
+  <artifactId>plc4j-hello-elasticsearch</artifactId>
+  <name>PLC4J: Examples: Storage: ElasticSearch</name>
   <description>Client application demonstrating PLC4X in our virtual IoT Factory using ElasticSearch.</description>
 
   <properties>
diff --git a/examples/hello-storage-elasticsearch/src/main/java/org/apache/plc4x/java/examples/storage/elasticsearch/ElasticsearchStorage.java b/plc4j/examples/hello-storage-elasticsearch/src/main/java/org/apache/plc4x/java/examples/storage/elasticsearch/ElasticsearchStorage.java
similarity index 100%
rename from examples/hello-storage-elasticsearch/src/main/java/org/apache/plc4x/java/examples/storage/elasticsearch/ElasticsearchStorage.java
rename to plc4j/examples/hello-storage-elasticsearch/src/main/java/org/apache/plc4x/java/examples/storage/elasticsearch/ElasticsearchStorage.java
diff --git a/examples/hello-storage-elasticsearch/src/main/resources/log4j2.xml b/plc4j/examples/hello-storage-elasticsearch/src/main/resources/log4j2.xml
similarity index 100%
rename from examples/hello-storage-elasticsearch/src/main/resources/log4j2.xml
rename to plc4j/examples/hello-storage-elasticsearch/src/main/resources/log4j2.xml
diff --git a/examples/hello-storage-elasticsearch/src/main/resources/logback.xml b/plc4j/examples/hello-storage-elasticsearch/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-storage-elasticsearch/src/main/resources/logback.xml
rename to plc4j/examples/hello-storage-elasticsearch/src/main/resources/logback.xml
diff --git a/examples/hello-webapp/client/pom.xml b/plc4j/examples/hello-webapp/client/pom.xml
similarity index 86%
rename from examples/hello-webapp/client/pom.xml
rename to plc4j/examples/hello-webapp/client/pom.xml
index 90a5abc..e78c910 100644
--- a/examples/hello-webapp/client/pom.xml
+++ b/plc4j/examples/hello-webapp/client/pom.xml
@@ -22,14 +22,14 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>hello-webapp</artifactId>
+    <artifactId>plc4j-hello-webapp</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-webapp-client</artifactId>
+  <artifactId>plc4j-hello-webapp-client</artifactId>
   <packaging>swf</packaging>
 
-  <name>Examples: Hello-Webapp: Client</name>
+  <name>PLC4J: Examples: Hello-Webapp: Client</name>
 
   <build>
     <sourceDirectory>src/main/royale</sourceDirectory>
@@ -60,6 +60,17 @@
           </dependency>
         </dependencies>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.royale.framework:Jewel</usedDependency>
+            <usedDependency>org.apache.royale.framework:Language</usedDependency>
+            <usedDependency>org.apache.royale.framework:Network</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml b/plc4j/examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml
similarity index 97%
rename from examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml
rename to plc4j/examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml
index c78bb06..b01a9b2 100644
--- a/examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml
+++ b/plc4j/examples/hello-webapp/client/src/main/royale/HelloPLC4X.mxml
@@ -30,9 +30,6 @@
 
     <fx:Script>
         <![CDATA[
-        import org.apache.royale.events.Event;
-        import org.apache.royale.events.MouseEvent;
-
         public function move(event:MouseEvent):void {
             if (event.target == moveForwardLeftButton) {
                 robotService.moveForwardLeft();
diff --git a/examples/hello-webapp/client/src/main/royale/service/RobotService.as b/plc4j/examples/hello-webapp/client/src/main/royale/service/RobotService.as
similarity index 93%
rename from examples/hello-webapp/client/src/main/royale/service/RobotService.as
rename to plc4j/examples/hello-webapp/client/src/main/royale/service/RobotService.as
index 2dd3772..026e318 100644
--- a/examples/hello-webapp/client/src/main/royale/service/RobotService.as
+++ b/plc4j/examples/hello-webapp/client/src/main/royale/service/RobotService.as
@@ -19,11 +19,6 @@
 
 package service
 {
-import org.apache.royale.events.Event;
-import org.apache.royale.events.EventDispatcher;
-import org.apache.royale.net.HTTPConstants;
-import org.apache.royale.net.HTTPService;
-
 [Event(name="success", type="org.apache.royale.events.Event")]
 public class RobotService extends EventDispatcher {
 
diff --git a/examples/hello-webapp/pom.xml b/plc4j/examples/hello-webapp/pom.xml
similarity index 94%
rename from examples/hello-webapp/pom.xml
rename to plc4j/examples/hello-webapp/pom.xml
index 581732f..65f8633 100644
--- a/examples/hello-webapp/pom.xml
+++ b/plc4j/examples/hello-webapp/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-webapp</artifactId>
-  <name>Examples: Hello-Webapp (root)</name>
+  <artifactId>plc4j-hello-webapp</artifactId>
+  <name>PLC4J: Examples: Hello-Webapp (root)</name>
   <packaging>pom</packaging>
 
   <properties>
diff --git a/examples/hello-webapp/service/pom.xml b/plc4j/examples/hello-webapp/service/pom.xml
similarity index 93%
rename from examples/hello-webapp/service/pom.xml
rename to plc4j/examples/hello-webapp/service/pom.xml
index e933162..506598f 100644
--- a/examples/hello-webapp/service/pom.xml
+++ b/plc4j/examples/hello-webapp/service/pom.xml
@@ -24,13 +24,13 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>hello-webapp</artifactId>
+    <artifactId>plc4j-hello-webapp</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-webapp-service</artifactId>
+  <artifactId>plc4j-hello-webapp-service</artifactId>
 
-  <name>Examples: Hello-Webapp: Service</name>
+  <name>PLC4J: Examples: Hello-Webapp: Service</name>
 
   <build>
     <plugins>
diff --git a/examples/hello-webapp/service/src/main/java/org/apache/plc4x/examples/robot/controllers/RobotController.java b/plc4j/examples/hello-webapp/service/src/main/java/org/apache/plc4x/examples/robot/controllers/RobotController.java
similarity index 100%
rename from examples/hello-webapp/service/src/main/java/org/apache/plc4x/examples/robot/controllers/RobotController.java
rename to plc4j/examples/hello-webapp/service/src/main/java/org/apache/plc4x/examples/robot/controllers/RobotController.java
diff --git a/examples/hello-webapp/webapp/pom.xml b/plc4j/examples/hello-webapp/webapp/pom.xml
similarity index 88%
rename from examples/hello-webapp/webapp/pom.xml
rename to plc4j/examples/hello-webapp/webapp/pom.xml
index 3f51385..fb1e8e8 100644
--- a/examples/hello-webapp/webapp/pom.xml
+++ b/plc4j/examples/hello-webapp/webapp/pom.xml
@@ -24,14 +24,14 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>hello-webapp</artifactId>
+    <artifactId>plc4j-hello-webapp</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-webapp-webapp</artifactId>
+  <artifactId>plc4j-hello-webapp-webapp</artifactId>
   <packaging>war</packaging>
 
-  <name>Examples: Hello-Webapp: Spring-Boot WAR</name>
+  <name>PLC4J: Examples: Hello-Webapp: Spring-Boot WAR</name>
 
   <properties>
     <start.class>org.apache.plc4x.examples.robot.Application</start.class>
@@ -71,7 +71,7 @@
               <artifactItems>
                 <artifactItem>
                   <groupId>org.apache.plc4x.examples</groupId>
-                  <artifactId>hello-webapp-client</artifactId>
+                  <artifactId>plc4j-hello-webapp-client</artifactId>
                   <version>0.4.0-SNAPSHOT</version>
                   <type>war</type>
                   <outputDirectory>${project.build.outputDirectory}/static/</outputDirectory>
@@ -83,8 +83,8 @@
         <configuration>
           <usedDependencies>
             <usedDependency>org.springframework.boot:spring-boot-starter-web</usedDependency>
-            <usedDependency>org.apache.plc4x.examples:hello-webapp-service</usedDependency>
-            <usedDependency>org.apache.plc4x.examples:hello-webapp-client</usedDependency>
+            <usedDependency>org.apache.plc4x.examples:plc4j-hello-webapp-service</usedDependency>
+            <usedDependency>org.apache.plc4x.examples:plc4j-hello-webapp-client</usedDependency>
           </usedDependencies>
         </configuration>
       </plugin>
@@ -106,7 +106,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x.examples</groupId>
-      <artifactId>hello-webapp-service</artifactId>
+      <artifactId>plc4j-hello-webapp-service</artifactId>
       <version>0.4.0-SNAPSHOT</version>
     </dependency>
 
@@ -130,7 +130,7 @@
 
     <dependency>
       <groupId>org.apache.plc4x.examples</groupId>
-      <artifactId>hello-webapp-client</artifactId>
+      <artifactId>plc4j-hello-webapp-client</artifactId>
       <version>0.4.0-SNAPSHOT</version>
       <type>war</type>
       <scope>runtime</scope>
diff --git a/examples/hello-webapp/webapp/src/main/java/org/apache/plc4x/examples/robot/Application.java b/plc4j/examples/hello-webapp/webapp/src/main/java/org/apache/plc4x/examples/robot/Application.java
similarity index 100%
rename from examples/hello-webapp/webapp/src/main/java/org/apache/plc4x/examples/robot/Application.java
rename to plc4j/examples/hello-webapp/webapp/src/main/java/org/apache/plc4x/examples/robot/Application.java
diff --git a/examples/hello-webapp/webapp/src/main/resources/application.properties b/plc4j/examples/hello-webapp/webapp/src/main/resources/application.properties
similarity index 100%
rename from examples/hello-webapp/webapp/src/main/resources/application.properties
rename to plc4j/examples/hello-webapp/webapp/src/main/resources/application.properties
diff --git a/examples/hello-world-plc4x/pom.xml b/plc4j/examples/hello-world-plc4x/pom.xml
similarity index 95%
rename from examples/hello-world-plc4x/pom.xml
rename to plc4j/examples/hello-world-plc4x/pom.xml
index fbd1b74..e327713 100644
--- a/examples/hello-world-plc4x/pom.xml
+++ b/plc4j/examples/hello-world-plc4x/pom.xml
@@ -23,12 +23,12 @@
 
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
-    <artifactId>examples</artifactId>
+    <artifactId>plc4j-examples</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>hello-world-plc4x</artifactId>
-  <name>Examples: Hello-World PLC4X</name>
+  <artifactId>plc4j-hello-world-plc4x</artifactId>
+  <name>PLC4J: Examples: Hello-World PLC4X</name>
   <description>Hello world application for PLC4X.</description>
 
   <properties>
diff --git a/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/CliOptions.java b/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/CliOptions.java
similarity index 100%
rename from examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/CliOptions.java
rename to plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/CliOptions.java
diff --git a/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java b/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
similarity index 100%
rename from examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
rename to plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
diff --git a/examples/hello-integration-edgent/src/main/resources/logback.xml b/plc4j/examples/hello-world-plc4x/src/main/resources/logback.xml
similarity index 100%
rename from examples/hello-integration-edgent/src/main/resources/logback.xml
rename to plc4j/examples/hello-world-plc4x/src/main/resources/logback.xml
diff --git a/examples/pom.xml b/plc4j/examples/pom.xml
similarity index 80%
rename from examples/pom.xml
rename to plc4j/examples/pom.xml
index 8f1edf7..21fc77c 100644
--- a/examples/pom.xml
+++ b/plc4j/examples/pom.xml
@@ -1,38 +1,38 @@
 <?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
+  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.
-
--->
+  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.plc4x</groupId>
-    <artifactId>plc4x-parent</artifactId>
+    <artifactId>plc4j</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.plc4x.examples</groupId>
-  <artifactId>examples</artifactId>
+  <artifactId>plc4j-examples</artifactId>
   <packaging>pom</packaging>
 
-  <name>Examples</name>
-  <description>Parent of all application example modules.</description>
+  <name>PLC4J: Examples</name>
+  <description>Parent of all java based application example modules.</description>
 
   <modules>
     <module>dummy-driver</module>
diff --git a/integrations/apache-calcite/pom.xml b/plc4j/integrations/apache-calcite/pom.xml
similarity index 95%
rename from integrations/apache-calcite/pom.xml
rename to plc4j/integrations/apache-calcite/pom.xml
index f0f4312..e54bfe8 100644
--- a/integrations/apache-calcite/pom.xml
+++ b/plc4j/integrations/apache-calcite/pom.xml
@@ -20,15 +20,15 @@
 
 <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">
   <parent>
-    <artifactId>integrations</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>apache-calcite</artifactId>
+  <artifactId>plc4j-apache-calcite</artifactId>
 
-  <name>Integrations: Apache Calcite</name>
+  <name>PLC4J: Integrations: Apache Calcite</name>
 
   <properties>
     <calcite-core.version>1.17.0</calcite-core.version>
diff --git a/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
similarity index 100%
rename from integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
rename to plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xBaseTable.java
diff --git a/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
similarity index 100%
rename from integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
rename to plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchema.java
diff --git a/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchemaFactory.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchemaFactory.java
similarity index 100%
rename from integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchemaFactory.java
rename to plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xSchemaFactory.java
diff --git a/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xStreamTable.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xStreamTable.java
similarity index 100%
rename from integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xStreamTable.java
rename to plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xStreamTable.java
diff --git a/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xTable.java b/plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xTable.java
similarity index 100%
rename from integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xTable.java
rename to plc4j/integrations/apache-calcite/src/main/java/org/apache/plc4x/Plc4xTable.java
diff --git a/integrations/apache-calcite/src/test/java/org/apache/plc4x/DriverManagerTest.java b/plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/DriverManagerTest.java
similarity index 100%
rename from integrations/apache-calcite/src/test/java/org/apache/plc4x/DriverManagerTest.java
rename to plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/DriverManagerTest.java
diff --git a/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4XBaseTableTest.java b/plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4XBaseTableTest.java
similarity index 100%
rename from integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4XBaseTableTest.java
rename to plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4XBaseTableTest.java
diff --git a/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java b/plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java
similarity index 96%
rename from integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java
rename to plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java
index 2edc905..a70eac7 100644
--- a/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java
+++ b/plc4j/integrations/apache-calcite/src/test/java/org/apache/plc4x/Plc4xSchemaFactoryTest.java
@@ -23,8 +23,6 @@ import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 class Plc4xSchemaFactoryTest implements WithAssertions {
 
     @Test
diff --git a/integrations/apache-calcite/src/test/resources/example.yml b/plc4j/integrations/apache-calcite/src/test/resources/example.yml
similarity index 100%
rename from integrations/apache-calcite/src/test/resources/example.yml
rename to plc4j/integrations/apache-calcite/src/test/resources/example.yml
diff --git a/integrations/apache-camel/src/test/resources/logback.xml b/plc4j/integrations/apache-calcite/src/test/resources/logback.xml
similarity index 100%
rename from integrations/apache-camel/src/test/resources/logback.xml
rename to plc4j/integrations/apache-calcite/src/test/resources/logback.xml
diff --git a/integrations/apache-calcite/src/test/resources/model.json b/plc4j/integrations/apache-calcite/src/test/resources/model.json
similarity index 100%
rename from integrations/apache-calcite/src/test/resources/model.json
rename to plc4j/integrations/apache-calcite/src/test/resources/model.json
diff --git a/integrations/apache-camel/pom.xml b/plc4j/integrations/apache-camel/pom.xml
similarity index 97%
rename from integrations/apache-camel/pom.xml
rename to plc4j/integrations/apache-camel/pom.xml
index 463d7ef..bd9da84 100644
--- a/integrations/apache-camel/pom.xml
+++ b/plc4j/integrations/apache-camel/pom.xml
@@ -23,12 +23,13 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>integrations</artifactId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-camel</artifactId>
-  <name>Integrations: Apache Camel</name>
+  <artifactId>plc4j-apache-camel</artifactId>
+
+  <name>PLC4J: Integrations: Apache Camel</name>
   <description>Integration module for integrating PLC4X into Apache Camel.</description>
 
   <properties>
diff --git a/integrations/apache-camel/src/main/docs/PLC4X.adoc b/plc4j/integrations/apache-camel/src/main/docs/PLC4X.adoc
similarity index 100%
rename from integrations/apache-camel/src/main/docs/PLC4X.adoc
rename to plc4j/integrations/apache-camel/src/main/docs/PLC4X.adoc
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Constants.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Constants.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Constants.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Constants.java
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
diff --git a/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
similarity index 100%
rename from integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
rename to plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
diff --git a/integrations/apache-camel/src/main/resources/META-INF/services/org/apache/camel/component/plc4x b/plc4j/integrations/apache-camel/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
similarity index 100%
rename from integrations/apache-camel/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
rename to plc4j/integrations/apache-camel/src/main/resources/META-INF/services/org/apache/camel/component/plc4x
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/MockDriver.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/MockDriver.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/MockDriver.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/MockDriver.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
diff --git a/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
similarity index 100%
rename from integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
rename to plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
diff --git a/integrations/apache-camel/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver b/plc4j/integrations/apache-camel/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
similarity index 100%
rename from integrations/apache-camel/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
rename to plc4j/integrations/apache-camel/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
diff --git a/integrations/apache-camel/src/test/resources/log4j2.properties b/plc4j/integrations/apache-camel/src/test/resources/log4j2.properties
similarity index 100%
rename from integrations/apache-camel/src/test/resources/log4j2.properties
rename to plc4j/integrations/apache-camel/src/test/resources/log4j2.properties
diff --git a/integrations/apache-calcite/src/test/resources/logback.xml b/plc4j/integrations/apache-camel/src/test/resources/logback.xml
similarity index 100%
rename from integrations/apache-calcite/src/test/resources/logback.xml
rename to plc4j/integrations/apache-camel/src/test/resources/logback.xml
diff --git a/integrations/apache-edgent/pom.xml b/plc4j/integrations/apache-edgent/pom.xml
similarity index 94%
rename from integrations/apache-edgent/pom.xml
rename to plc4j/integrations/apache-edgent/pom.xml
index 936b546..bf985fe 100644
--- a/integrations/apache-edgent/pom.xml
+++ b/plc4j/integrations/apache-edgent/pom.xml
@@ -23,12 +23,13 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>integrations</artifactId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-edgent</artifactId>
-  <name>Integrations: Apache Edgent</name>
+  <artifactId>plc4j-apache-edgent</artifactId>
+
+  <name>PLC4J: Integrations: Apache Edgent</name>
   <description>Integration module for integrating PLC4X into Apache Edgent.</description>
 
   <properties>
diff --git a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java b/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
similarity index 100%
rename from integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
rename to plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
diff --git a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcFunctions.java b/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcFunctions.java
similarity index 100%
rename from integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcFunctions.java
rename to plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcFunctions.java
diff --git a/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/package-info.java b/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/package-info.java
similarity index 100%
rename from integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/package-info.java
rename to plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/package-info.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcFunctionsTest.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcFunctionsTest.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcFunctionsTest.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcFunctionsTest.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
index 887ce2e..0a13907 100644
--- a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
@@ -18,10 +18,10 @@ under the License.
 */
 package org.apache.plc4x.edgent.mock;
 
-import org.apache.plc4x.java.spi.PlcDriver;
-import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.PlcConnection;
+import org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.apache.plc4x.java.spi.PlcDriver;
 
 public class MockDriver implements PlcDriver {
 
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
diff --git a/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
similarity index 100%
rename from integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
diff --git a/integrations/apache-edgent/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver b/plc4j/integrations/apache-edgent/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
similarity index 100%
rename from integrations/apache-edgent/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
rename to plc4j/integrations/apache-edgent/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
diff --git a/integrations/apache-kafka/README.md b/plc4j/integrations/apache-kafka/README.md
similarity index 100%
rename from integrations/apache-kafka/README.md
rename to plc4j/integrations/apache-kafka/README.md
diff --git a/plc4j/integrations/apache-kafka/config/sink.properties b/plc4j/integrations/apache-kafka/config/sink.properties
new file mode 100644
index 0000000..cf688b3
--- /dev/null
+++ b/plc4j/integrations/apache-kafka/config/sink.properties
@@ -0,0 +1,25 @@
+<!--=
+
+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.
+
+-->=
+name=plc-sink-test
+connector.class=org.apache.plc4x.kafka.Plc4xSinkConnector
+topics=test
+url=test:unused
+transforms=key
+transforms.key.type=org.apache.kafka.connect.transforms.ExtractField$Key
+transforms.key.field=query
\ No newline at end of file
diff --git a/plc4j/integrations/apache-kafka/config/source.properties b/plc4j/integrations/apache-kafka/config/source.properties
new file mode 100644
index 0000000..76a289e
--- /dev/null
+++ b/plc4j/integrations/apache-kafka/config/source.properties
@@ -0,0 +1,23 @@
+<!--=
+
+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.
+
+-->=
+name=plc-source-test
+connector.class=org.apache.plc4x.kafka.Plc4xSourceConnector
+topic=test
+queries=test:unused#RANDOM/foo:INTEGER,test:another#RANDOM/bar:STRING
+rate=2000
\ No newline at end of file
diff --git a/integrations/apache-kafka/pom.xml b/plc4j/integrations/apache-kafka/pom.xml
similarity index 94%
rename from integrations/apache-kafka/pom.xml
rename to plc4j/integrations/apache-kafka/pom.xml
index b9b3eea..32c6d5c 100644
--- a/integrations/apache-kafka/pom.xml
+++ b/plc4j/integrations/apache-kafka/pom.xml
@@ -22,12 +22,13 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>integrations</artifactId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-kafka</artifactId>
-  <name>Integrations: Apache Kafka</name>
+  <artifactId>plc4j-apache-kafka</artifactId>
+
+  <name>PLC4J: Integrations: Apache Kafka</name>
   <description>Integration module for integrating PLC4X into Apache Kafka (Kafka-Connect-Plugin)</description>
 
   <properties>
diff --git a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java
similarity index 95%
rename from integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java
rename to plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java
index fa2e32d..c68a1a8 100644
--- a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java
+++ b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkConnector.java
@@ -24,7 +24,10 @@ import org.apache.kafka.connect.connector.Task;
 import org.apache.kafka.connect.sink.SinkConnector;
 import org.apache.plc4x.kafka.util.VersionUtil;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 
 public class Plc4xSinkConnector extends SinkConnector {
     static final String URL_CONFIG = "url";
diff --git a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkTask.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkTask.java
similarity index 100%
rename from integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkTask.java
rename to plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSinkTask.java
diff --git a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java
similarity index 98%
rename from integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java
rename to plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java
index 4be1842..40140de 100644
--- a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java
+++ b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceConnector.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -91,7 +92,7 @@ public class Plc4xSourceConnector extends SourceConnector {
         } else {
             try {
                 // TODO
-                String config =  new Scanner(new URL(json).openStream(), "UTF-8").useDelimiter("\\A").next();
+                String config =  new Scanner(new URL(json).openStream(), StandardCharsets.UTF_8).useDelimiter("\\A").next();
                 ObjectMapper mapper = new ObjectMapper();
                 Map<String, Object> values = mapper.readValue(config, new TypeReference<Map<String, Object>>() {});
                 List<Map<String, Object>> plcs = (List<Map<String, Object>>) values.get("PLCs");
diff --git a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
similarity index 100%
rename from integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
rename to plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/Plc4xSourceTask.java
diff --git a/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/util/VersionUtil.java b/plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/util/VersionUtil.java
similarity index 100%
rename from integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/util/VersionUtil.java
rename to plc4j/integrations/apache-kafka/src/main/java/org/apache/plc4x/kafka/util/VersionUtil.java
diff --git a/integrations/apache-karaf/karaf-ads-feature/pom.xml b/plc4j/integrations/apache-karaf/karaf-ads-feature/pom.xml
similarity index 76%
rename from integrations/apache-karaf/karaf-ads-feature/pom.xml
rename to plc4j/integrations/apache-karaf/karaf-ads-feature/pom.xml
index fc75b12..a01d68d 100644
--- a/integrations/apache-karaf/karaf-ads-feature/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-ads-feature/pom.xml
@@ -22,15 +22,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-ads-feature</artifactId>
+  <artifactId>plc4j-karaf-ads-feature</artifactId>
   <packaging>feature</packaging>
 
-  <name>Integrations: Apache Karaf: ADS</name>
+  <name>PLC4J: Integrations: Apache Karaf: ADS</name>
 
   <dependencies>
     <dependency>
@@ -46,6 +46,15 @@
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.plc4x:plc4j-driver-ads</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/karaf-demo-server/pom.xml b/plc4j/integrations/apache-karaf/karaf-demo-server/pom.xml
similarity index 73%
rename from integrations/apache-karaf/karaf-demo-server/pom.xml
rename to plc4j/integrations/apache-karaf/karaf-demo-server/pom.xml
index 33992f0..d6e3d31 100644
--- a/integrations/apache-karaf/karaf-demo-server/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-demo-server/pom.xml
@@ -23,15 +23,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-demo-server</artifactId>
+  <artifactId>plc4j-karaf-demo-server</artifactId>
   <packaging>karaf-assembly</packaging>
 
-  <name>Integrations: Apache Karaf: Demo Server</name>
+  <name>PLC4J: Integrations: Apache Karaf: Demo Server</name>
 
   <dependencies>
     <dependency>
@@ -83,6 +83,13 @@
       <classifier>features</classifier>
       <type>xml</type>
     </dependency>
+
+    <!-- This is just a way of removing this dependency -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
@@ -99,6 +106,21 @@
           </bootFeatures>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.karaf.features:framework</usedDependency>
+            <usedDependency>org.apache.karaf.features:standard</usedDependency>
+            <usedDependency>org.apache.plc4x:karaf-ads-feature</usedDependency>
+            <usedDependency>org.apache.plc4x:karaf-ethernet-ip-feature</usedDependency>
+            <usedDependency>org.apache.plc4x:karaf-modbus-feature</usedDependency>
+            <usedDependency>org.apache.plc4x:karaf-s7-feature</usedDependency>
+            <usedDependency>org.apache.plc4x:karaf-simulated-feature</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml b/plc4j/integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml
similarity index 75%
rename from integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml
rename to plc4j/integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml
index b832395..b5b9584 100644
--- a/integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-ethernet-ip-feature/pom.xml
@@ -22,15 +22,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-ethernet-ip-feature</artifactId>
+  <artifactId>plc4j-karaf-ethernet-ip-feature</artifactId>
   <packaging>feature</packaging>
 
-  <name>Integrations: Apache Karaf: EtherNet/IP</name>
+  <name>PLC4J: Integrations: Apache Karaf: EtherNet/IP</name>
 
   <dependencies>
     <dependency>
@@ -46,6 +46,15 @@
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.plc4x:plc4j-driver-ethernet-ip</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/karaf-modbus-feature/pom.xml b/plc4j/integrations/apache-karaf/karaf-modbus-feature/pom.xml
similarity index 76%
rename from integrations/apache-karaf/karaf-modbus-feature/pom.xml
rename to plc4j/integrations/apache-karaf/karaf-modbus-feature/pom.xml
index f0362c0..50b0924 100644
--- a/integrations/apache-karaf/karaf-modbus-feature/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-modbus-feature/pom.xml
@@ -22,15 +22,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-modbus-feature</artifactId>
+  <artifactId>plc4j-karaf-modbus-feature</artifactId>
   <packaging>feature</packaging>
 
-  <name>Integrations: Apache Karaf: Modbus</name>
+  <name>PLC4J: Integrations: Apache Karaf: Modbus</name>
 
   <dependencies>
     <dependency>
@@ -46,6 +46,15 @@
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.plc4x:plc4j-driver-modbus</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/karaf-s7-feature/pom.xml b/plc4j/integrations/apache-karaf/karaf-s7-feature/pom.xml
similarity index 76%
copy from integrations/apache-karaf/karaf-s7-feature/pom.xml
copy to plc4j/integrations/apache-karaf/karaf-s7-feature/pom.xml
index 47f3ad2..9930826 100644
--- a/integrations/apache-karaf/karaf-s7-feature/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-s7-feature/pom.xml
@@ -22,15 +22,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-s7-feature</artifactId>
+  <artifactId>plc4j-karaf-s7-feature</artifactId>
   <packaging>feature</packaging>
 
-  <name>Integrations: Apache Karaf: S7</name>
+  <name>PLC4J: Integrations: Apache Karaf: S7</name>
 
   <dependencies>
     <dependency>
@@ -46,6 +46,15 @@
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.plc4x:plc4j-driver-s7</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/karaf-simulated-feature/pom.xml b/plc4j/integrations/apache-karaf/karaf-simulated-feature/pom.xml
similarity index 75%
rename from integrations/apache-karaf/karaf-simulated-feature/pom.xml
rename to plc4j/integrations/apache-karaf/karaf-simulated-feature/pom.xml
index 53659ed..30c72de 100644
--- a/integrations/apache-karaf/karaf-simulated-feature/pom.xml
+++ b/plc4j/integrations/apache-karaf/karaf-simulated-feature/pom.xml
@@ -22,15 +22,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-apache-karaf</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-simulated-feature</artifactId>
+  <artifactId>plc4j-karaf-simulated-feature</artifactId>
   <packaging>feature</packaging>
 
-  <name>Integrations: Apache Karaf: Simulated</name>
+  <name>PLC4J: Integrations: Apache Karaf: Simulated</name>
 
   <dependencies>
     <dependency>
@@ -46,6 +46,15 @@
         <groupId>org.apache.karaf.tooling</groupId>
         <artifactId>karaf-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.apache.plc4x:plc4j-driver-simulated</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/integrations/apache-karaf/pom.xml b/plc4j/integrations/apache-karaf/pom.xml
similarity index 87%
rename from integrations/apache-karaf/pom.xml
rename to plc4j/integrations/apache-karaf/pom.xml
index 2932009..38b6971 100644
--- a/integrations/apache-karaf/pom.xml
+++ b/plc4j/integrations/apache-karaf/pom.xml
@@ -23,15 +23,15 @@
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <artifactId>integrations</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-karaf</artifactId>
+  <artifactId>plc4j-apache-karaf</artifactId>
   <packaging>pom</packaging>
 
-  <name>Integrations: Apache Karaf</name>
+  <name>PLC4J: Integrations: Apache Karaf</name>
   <description>Integration module for integrating PLC4X into Apache Karaf.</description>
 
   <properties>
@@ -50,15 +50,6 @@
   </modules>
 
   <build>
-    <plugins>
-      <plugin>
-        <groupId>com.buschmais.jqassistant</groupId>
-        <artifactId>jqassistant-maven-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
     <pluginManagement>
       <plugins>
         <plugin>
diff --git a/integrations/apache-nifi/nifi-plc4x-nar/false-positives.xml b/plc4j/integrations/apache-nifi/nifi-plc4x-nar/false-positives.xml
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-nar/false-positives.xml
rename to plc4j/integrations/apache-nifi/nifi-plc4x-nar/false-positives.xml
diff --git a/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
similarity index 73%
rename from integrations/apache-nifi/nifi-plc4x-nar/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
index cea180e..10d2e67 100644
--- a/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
@@ -18,14 +18,14 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>apache-nifi</artifactId>
+    <artifactId>plc4j-apache-nifi</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>nifi-plc4x-nar</artifactId>
+  <artifactId>plc4j-nifi-plc4x-nar</artifactId>
   <packaging>nar</packaging>
 
-  <name>Integrations: Apache Nifi: NAR</name>
+  <name>PLC4J: Integrations: Apache Nifi: NAR</name>
 
   <properties>
     <maven.javadoc.skip>true</maven.javadoc.skip>
@@ -42,6 +42,21 @@
             <suppressionFiles>${project.basedir}/false-positives.xml</suppressionFiles>
           </configuration>
         </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-dependency-plugin</artifactId>
+          <configuration>
+            <usedDependencies>
+              <usedDependency>org.apache.plc4x:plc4j-nifi-plc4x-processors</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-api</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-driver-ads</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-driver-ethernet-ip</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-driver-modbus</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-driver-s7</usedDependency>
+              <usedDependency>org.apache.plc4x:plc4j-driver-simulated</usedDependency>
+            </usedDependencies>
+          </configuration>
+        </plugin>
       </plugins>
     </pluginManagement>
   </build>
@@ -49,7 +64,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
-      <artifactId>nifi-plc4x-processors</artifactId>
+      <artifactId>plc4j-nifi-plc4x-processors</artifactId>
       <version>0.4.0-SNAPSHOT</version>
     </dependency>
     <!-- PLC4X -->
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
similarity index 92%
rename from integrations/apache-nifi/nifi-plc4x-processors/pom.xml
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
index cc2f500..e21f1df 100644
--- a/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
@@ -18,13 +18,13 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>apache-nifi</artifactId>
+    <artifactId>plc4j-apache-nifi</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>nifi-plc4x-processors</artifactId>
+  <artifactId>plc4j-nifi-plc4x-processors</artifactId>
 
-  <name>Integrations: Apache Nifi: Processors</name>
+  <name>PLC4J: Integrations: Apache Nifi: Processors</name>
 
   <dependencies>
     <dependency>
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/BasePlc4xProcessor.java
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSinkProcessor.java
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/Plc4xSourceProcessor.java
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
diff --git a/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
similarity index 100%
rename from integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
rename to plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
diff --git a/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/pom.xml
similarity index 96%
rename from integrations/apache-nifi/pom.xml
rename to plc4j/integrations/apache-nifi/pom.xml
index 096a1a2..4875900 100644
--- a/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/pom.xml
@@ -18,14 +18,14 @@
 
   <parent>
     <groupId>org.apache.plc4x</groupId>
-    <artifactId>integrations</artifactId>
+    <artifactId>plc4j-integrations</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>apache-nifi</artifactId>
+  <artifactId>plc4j-apache-nifi</artifactId>
   <packaging>pom</packaging>
 
-  <name>Integrations: Apache Nifi</name>
+  <name>PLC4J: Integrations: Apache Nifi</name>
   <description>Integration module for integrating PLC4X into Apache Nifi.</description>
 
   <properties>
diff --git a/integrations/apache-karaf/karaf-s7-feature/pom.xml b/plc4j/integrations/pom.xml
similarity index 53%
rename from integrations/apache-karaf/karaf-s7-feature/pom.xml
rename to plc4j/integrations/pom.xml
index 47f3ad2..3df6cdd 100644
--- a/integrations/apache-karaf/karaf-s7-feature/pom.xml
+++ b/plc4j/integrations/pom.xml
@@ -8,7 +8,7 @@
   "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
+      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
@@ -16,37 +16,29 @@
   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">
 
-<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>
-    <artifactId>apache-karaf</artifactId>
     <groupId>org.apache.plc4x</groupId>
+    <artifactId>plc4j</artifactId>
     <version>0.4.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>karaf-s7-feature</artifactId>
-  <packaging>feature</packaging>
-
-  <name>Integrations: Apache Karaf: S7</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.4.0-SNAPSHOT</version>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.karaf.tooling</groupId>
-        <artifactId>karaf-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
+  <artifactId>plc4j-integrations</artifactId>
+  <packaging>pom</packaging>
+
+  <name>PLC4J: Integrations</name>
+  <description>Parent of all product specific integration modules.</description>
+
+  <modules>
+    <module>apache-camel</module>
+    <module>apache-edgent</module>
+    <module>apache-kafka</module>
+    <module>apache-nifi</module>
+    <module>apache-karaf</module>
+    <module>apache-calcite</module>
+  </modules>
 
 </project>
\ No newline at end of file
diff --git a/plc4j/pom.xml b/plc4j/pom.xml
index 9458652..a99925e 100644
--- a/plc4j/pom.xml
+++ b/plc4j/pom.xml
@@ -38,6 +38,302 @@
     <module>drivers</module>
     <module>protocols</module>
     <module>utils</module>
+
+    <module>examples</module>
+    <module>integrations</module>
   </modules>
 
+  <build>
+    <plugins>
+
+      <!-- Compile any groovy code located in "src/test/groovy" -->
+      <plugin>
+        <groupId>org.codehaus.gmavenplus</groupId>
+        <artifactId>gmavenplus-plugin</artifactId>
+        <version>1.6.2</version>
+        <executions>
+          <execution>
+            <id>compile-groovy-tests</id>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>addTestSources</goal>
+              <goal>compileTests</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!--
+        This plugin doesn't really do much, it makes sure the jacoco agent
+        is downloaded and that the path to this is saved in an environment
+        variable so we can access this later on in the build.
+      -->
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <executions>
+          <!--
+              Prepares the property pointing to the JaCoCo runtime agent which
+              is passed as VM argument when Maven the Surefire plugin is executed.
+          -->
+          <execution>
+            <id>pre-unit-test</id>
+            <phase>generate-test-sources</phase>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+            <configuration>
+              <!--
+                  Sets the name of the property containing the settings
+                  for JaCoCo runtime agent.
+              -->
+              <propertyName>surefireArgLine</propertyName>
+            </configuration>
+          </execution>
+          <!--
+              Prepares the property pointing to the JaCoCo runtime agent which
+              is passed as VM argument when Maven the Failsafe plugin is executed.
+          -->
+          <execution>
+            <id>pre-integration-test</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>prepare-agent-integration</goal>
+            </goals>
+            <configuration>
+              <!--
+                  Sets the name of the property containing the settings
+                  for JaCoCo runtime agent.
+              -->
+              <propertyName>failsafeArgLine</propertyName>
+            </configuration>
+          </execution>
+          <!--
+              Check if the unit-test-coverage is at least a certain minimum.
+          -->
+          <execution>
+            <id>check-coverage</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+            <configuration>
+              <!-- TODO: Turn this on as soon as possible. -->
+              <haltOnFailure>false</haltOnFailure>
+              <rules>
+                <rule implementation="org.jacoco.maven.RuleConfiguration">
+                  <element>BUNDLE</element>
+                  <limits>
+                    <!-- Fail the build if the instruction level coverage is below 80%. -->
+                    <limit implementation="org.jacoco.report.check.Limit">
+                      <counter>INSTRUCTION</counter>
+                      <value>COVEREDRATIO</value>
+                      <minimum>0.50</minimum>
+                    </limit>
+                    <!-- Fail the build if there are classes without any coverage. -->
+                    <limit implementation="org.jacoco.report.check.Limit">
+                      <counter>CLASS</counter>
+                      <value>MISSEDCOUNT</value>
+                      <maximum>0</maximum>
+                    </limit>
+                  </limits>
+                </rule>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!--
+        Make the surefire execute all unit-tests
+      -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!--
+            We have to slightly increase the heap-size or some tests will fail.
+            Notice the @ instead of the $ as prefix? That's late evaluation.
+          -->
+          <argLine>-Xmx256m @{surefireArgLine}</argLine>
+          <includes>
+            <include>**/*Test.java</include>
+            <include>**/*Tests.java</include>
+            <include>**/*Spec.java</include>
+          </includes>
+        </configuration>
+      </plugin>
+
+      <!--
+        Generate an OSGI compatible MANIFEST file.
+      -->
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>bundle-manifest</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>manifest</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <!--
+        Use the MANIFEST file generated by the maven-bundle-plugin.
+      -->
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+          </archive>
+        </configuration>
+      </plugin>
+
+      <!--
+        Make the failsafe execute all integration-tests
+      -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>integration-test</goal>
+              <goal>verify</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <!--
+                Notice the @ instead of the $ as prefix? That's late evaluation.
+          -->
+          <argLine>@{failsafeArgLine}</argLine>
+        </configuration>
+      </plugin>
+
+      <!--
+        Even if Maven transitively pulls in dependencies, relying on these can
+        quite often cause hard to find problems. So it's a good practice to make
+        sure everything directly required is also directly added as a dependency.
+        On the other side adding unused dependency only over-complicates the
+        the dependency graph, so the maven-dependency-plugin checks we depend on
+        what we need and only that and that runtime dependencies are correctly
+        imported with runtime scope.
+      -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>check-dependencies</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>analyze-only</goal>
+            </goals>
+            <configuration>
+              <failOnWarning>true</failOnWarning>
+              <ignoredDependencies>
+                <ignoredDependency>org.assertj:assertj-core</ignoredDependency>
+                <ignoredDependency>junit:junit</ignoredDependency>
+                <ignoredDependency>org.junit.jupiter:junit-jupiter-api</ignoredDependency>
+                <ignoredDependency>org.junit.jupiter:junit-jupiter-params</ignoredDependency>
+                <ignoredDependency>org.junit.jupiter:junit-jupiter-engine</ignoredDependency>
+                <ignoredDependency>org.junit.vintage:junit-vintage-engine</ignoredDependency>
+                <ignoredDependency>org.hamcrest:hamcrest-core</ignoredDependency>
+                <ignoredDependency>org.hamcrest:hamcrest-library</ignoredDependency>
+                <ignoredDependency>org.mockito:mockito-core</ignoredDependency>
+                <ignoredDependency>org.mockito:mockito-junit-jupiter</ignoredDependency>
+                <ignoredDependency>org.slf4j:slf4j-api</ignoredDependency>
+                <ignoredDependency>ch.qos.logback:logback-classic</ignoredDependency>
+                <ignoredDependency>org.codehaus.groovy:groovy-test-junit5</ignoredDependency>
+                <ignoredDependency>org.codehaus.groovy:groovy</ignoredDependency>
+                <ignoredDependency>com.athaydes:spock-reports</ignoredDependency>
+              </ignoredDependencies>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <!-- Dependencies common to all java modules -->
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- JUnit 4 Support -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- JUnit 5 Support -->
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-params</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-library</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-junit-jupiter</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy-test-junit5</artifactId>
+      <version>2.5.3</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
 </project>
\ No newline at end of file
diff --git a/plc4j/protocols/delta-v/pom.xml b/plc4j/protocols/delta-v/pom.xml
index f3ddfca..a06ded5 100644
--- a/plc4j/protocols/delta-v/pom.xml
+++ b/plc4j/protocols/delta-v/pom.xml
@@ -67,6 +67,11 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.elasticsearch</groupId>
+      <artifactId>elasticsearch-x-content</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.elasticsearch.plugin</groupId>
       <artifactId>transport-netty4-client</artifactId>
       <scope>test</scope>
@@ -82,6 +87,16 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <configuration>
+          <usedDependencies>
+            <usedDependency>org.pcap4j:pcap4j-packetfactory-static</usedDependency>
+            <usedDependency>de.dentrassi.elasticsearch:log4j2-mock</usedDependency>
+          </usedDependencies>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
         <version>1.6.0</version>
diff --git a/pom.xml b/pom.xml
index b1ce6e6..45e800e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,12 +166,6 @@
     <!-- Python language binding-->
     <module>plc4py</module>
 
-    <!-- Integration modules for other frameworks -->
-    <module>integrations</module>
-
-    <!-- Examples -->
-    <module>examples</module>
-
     <!-- Tools needed throughout the build -->
     <module>tools</module>
   </modules>
@@ -765,23 +759,6 @@
         </executions>
       </plugin>
 
-      <!-- Compile any groovy code located in "src/test/groovy" -->
-      <plugin>
-        <groupId>org.codehaus.gmavenplus</groupId>
-        <artifactId>gmavenplus-plugin</artifactId>
-        <version>1.6.2</version>
-        <executions>
-          <execution>
-            <id>compile-groovy-tests</id>
-            <phase>test-compile</phase>
-            <goals>
-              <goal>addTestSources</goal>
-              <goal>compileTests</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
       <!--
         ===================================
         ==                               ==
@@ -1353,27 +1330,6 @@
     -->
     <profile>
       <id>jenkins-build</id>
-      <properties>
-      </properties>
-      <build>
-        <plugins>
-          <!--TODO Remove this after fix for NVE CVS-->
-          <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>
 
     <!--
@@ -1427,294 +1383,6 @@
       </build>
     </profile>
 
-    <!--
-      This profile has java-specific plugin configurations
-      that might not apply to other languages.
-    -->
-    <profile>
-      <id>java-module</id>
-      <activation>
-        <file>
-          <exists>src/main/java</exists>
-        </file>
-      </activation>
-
-      <!-- Dependencies common to all java modules -->
-      <dependencies>
-        <dependency>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-          <scope>test</scope>
-        </dependency>
-
-        <!-- JUnit 4 Support -->
-        <dependency>
-          <groupId>junit</groupId>
-          <artifactId>junit</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <!-- JUnit 5 Support -->
-        <dependency>
-          <groupId>org.junit.jupiter</groupId>
-          <artifactId>junit-jupiter-api</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.junit.jupiter</groupId>
-          <artifactId>junit-jupiter-params</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.junit.jupiter</groupId>
-          <artifactId>junit-jupiter-engine</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.junit.vintage</groupId>
-          <artifactId>junit-vintage-engine</artifactId>
-          <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.hamcrest</groupId>
-          <artifactId>hamcrest-core</artifactId>
-          <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.hamcrest</groupId>
-          <artifactId>hamcrest-library</artifactId>
-          <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.mockito</groupId>
-          <artifactId>mockito-core</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.mockito</groupId>
-          <artifactId>mockito-junit-jupiter</artifactId>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.assertj</groupId>
-          <artifactId>assertj-core</artifactId>
-          <scope>test</scope>
-        </dependency>
-
-        <dependency>
-          <groupId>org.codehaus.groovy</groupId>
-          <artifactId>groovy-test-junit5</artifactId>
-          <version>2.5.3</version>
-          <scope>test</scope>
-        </dependency>
-      </dependencies>
-
-      <build>
-        <plugins>
-          <!--
-            Even if Maven transitively pulls in dependencies, relying on these can
-            quite often cause hard to find problems. So it's a good practice to make
-            sure everything directly required is also directly added as a dependency.
-            On the other side adding unused dependency only over-complicates the
-            the dependency graph, so the maven-dependency-plugin checks we depend on
-            what we need and only that and that runtime dependencies are correctly
-            imported with runtime scope.
-          -->
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-dependency-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>check-dependencies</id>
-                <phase>verify</phase>
-                <goals>
-                  <goal>analyze-only</goal>
-                </goals>
-                <configuration>
-                  <failOnWarning>true</failOnWarning>
-                  <ignoredDependencies>
-                    <ignoredDependency>org.assertj:assertj-core</ignoredDependency>
-                    <ignoredDependency>junit:junit</ignoredDependency>
-                    <ignoredDependency>org.junit.jupiter:junit-jupiter-api</ignoredDependency>
-                    <ignoredDependency>org.junit.jupiter:junit-jupiter-params</ignoredDependency>
-                    <ignoredDependency>org.junit.jupiter:junit-jupiter-engine</ignoredDependency>
-                    <ignoredDependency>org.junit.vintage:junit-vintage-engine</ignoredDependency>
-                    <ignoredDependency>org.hamcrest:hamcrest-core</ignoredDependency>
-                    <ignoredDependency>org.hamcrest:hamcrest-library</ignoredDependency>
-                    <ignoredDependency>org.mockito:mockito-core</ignoredDependency>
-                    <ignoredDependency>org.mockito:mockito-junit-jupiter</ignoredDependency>
-                    <ignoredDependency>org.slf4j:slf4j-api</ignoredDependency>
-                    <ignoredDependency>ch.qos.logback:logback-classic</ignoredDependency>
-                    <ignoredDependency>org.codehaus.groovy:groovy-test-junit5</ignoredDependency>
-                    <ignoredDependency>org.codehaus.groovy:groovy</ignoredDependency>
-                    <ignoredDependency>com.athaydes:spock-reports</ignoredDependency>
-                  </ignoredDependencies>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-
-          <!--
-            This plugin doesn't really do much, it makes sure the jacoco agent
-            is downloaded and that the path to this is saved in an environment
-            variable so we can access this later on in the build.
-          -->
-          <plugin>
-            <groupId>org.jacoco</groupId>
-            <artifactId>jacoco-maven-plugin</artifactId>
-            <executions>
-              <!--
-                  Prepares the property pointing to the JaCoCo runtime agent which
-                  is passed as VM argument when Maven the Surefire plugin is executed.
-              -->
-              <execution>
-                <id>pre-unit-test</id>
-                <phase>generate-test-sources</phase>
-                <goals>
-                  <goal>prepare-agent</goal>
-                </goals>
-                <configuration>
-                  <!--
-                      Sets the name of the property containing the settings
-                      for JaCoCo runtime agent.
-                  -->
-                  <propertyName>surefireArgLine</propertyName>
-                </configuration>
-              </execution>
-              <!--
-                  Prepares the property pointing to the JaCoCo runtime agent which
-                  is passed as VM argument when Maven the Failsafe plugin is executed.
-              -->
-              <execution>
-                <id>pre-integration-test</id>
-                <phase>pre-integration-test</phase>
-                <goals>
-                  <goal>prepare-agent-integration</goal>
-                </goals>
-                <configuration>
-                  <!--
-                      Sets the name of the property containing the settings
-                      for JaCoCo runtime agent.
-                  -->
-                  <propertyName>failsafeArgLine</propertyName>
-                </configuration>
-              </execution>
-              <!--
-                  Check if the unit-test-coverage is at least a certain minimum.
-              -->
-              <execution>
-                <id>check-coverage</id>
-                <phase>verify</phase>
-                <goals>
-                  <goal>check</goal>
-                </goals>
-                <configuration>
-                  <!-- TODO: Turn this on as soon as possible. -->
-                  <haltOnFailure>false</haltOnFailure>
-                  <rules>
-                    <rule implementation="org.jacoco.maven.RuleConfiguration">
-                      <element>BUNDLE</element>
-                      <limits>
-                        <!-- Fail the build if the instruction level coverage is below 80%. -->
-                        <limit implementation="org.jacoco.report.check.Limit">
-                          <counter>INSTRUCTION</counter>
-                          <value>COVEREDRATIO</value>
-                          <minimum>0.50</minimum>
-                        </limit>
-                        <!-- Fail the build if there are classes without any coverage. -->
-                        <limit implementation="org.jacoco.report.check.Limit">
-                          <counter>CLASS</counter>
-                          <value>MISSEDCOUNT</value>
-                          <maximum>0</maximum>
-                        </limit>
-                      </limits>
-                    </rule>
-                  </rules>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-
-          <!--
-            Make the surefire execute all unit-tests
-          -->
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <!--
-                We have to slightly increase the heap-size or some tests will fail.
-                Notice the @ instead of the $ as prefix? That's late evaluation.
-              -->
-              <argLine>-Xmx256m @{surefireArgLine}</argLine>
-              <includes>
-                <include>**/*Test.java</include>
-                <include>**/*Tests.java</include>
-                <include>**/*Spec.java</include>
-              </includes>
-            </configuration>
-          </plugin>
-
-          <!--
-            Generate an OSGI compatible MANIFEST file.
-          -->
-          <plugin>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>maven-bundle-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>bundle-manifest</id>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>manifest</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-
-          <!--
-            Use the MANIFEST file generated by the maven-bundle-plugin.
-          -->
-          <plugin>
-            <artifactId>maven-jar-plugin</artifactId>
-            <configuration>
-              <archive>
-                <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-              </archive>
-            </configuration>
-          </plugin>
-
-          <!--
-            Make the failsafe execute all integration-tests
-          -->
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-failsafe-plugin</artifactId>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>integration-test</goal>
-                  <goal>verify</goal>
-                </goals>
-              </execution>
-            </executions>
-            <configuration>
-              <!--
-                    Notice the @ instead of the $ as prefix? That's late evaluation.
-              -->
-              <argLine>@{failsafeArgLine}</argLine>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
     <profile>
       <id>with-jqassistant</id>
       <build>