Preparing your Computer

Building a project like Apache PLC4X on multiple target operating-systems is quite a challenge, but I think we managed to make it as simple as possible.

However, when building PLC4X there are some requirements the build is expecting you to have provided. However, this greatly depends on which parts you want to build. The Java modules hereby probably have the least demanding requirements.

In order to build most Java parts of PLC4X you are required to have at least Java 8 installed on your machine. Some integration modules and some other languages however may add some additional constraints to this.

As soon as you’re building with the with-c, with-cpp or with-proxies you need to use at least Java 11 as the cmake-maven-plugin requires at least this version.

Tip
Currently, Java 11 is the sweet-spot for being able to build all parts of PLC4X.
Tip
We have tested the build with Java 8 up to Java 14 (Latest version at the time of writing this document).

If a new version comes out, please give us a little time to verify and handle any related issues. We’ll probably fix them as soon as possible. However, in the past with Oracle’s new release strategy, there have been a few bumps on the road.

Also will PLC4X build with any Maven version starting with Maven 3.3.0 however the with-c, with-cpp and with-proxies profiles require at least Maven 3.6 as the cmake-maven-plugin requires this.

Tip
Currently Maven 3.6 and above is required for being able to build all parts of PLC4X.

Profile

Description

Requirements

Builds Java API, drivers, integrations, examples

  • Git

  • LibPCAP (Optional)

with-cpp

Builds C++ API, drivers, integrations, examples

  • gcc

  • g++

with-dotnet

Builds C# and .Net API, drivers, integrations, examples

  • dotnet

with-python

Builds Python API, drivers, integrations, examples

  • python (2.7)

with-proxies

Adds proxy modules to each enabled language

  • bison

  • flex

  • python

with-docker

Adds building of Docker images

  • docker

The following pages will describe how to provide these requirements for your operating system.