Code Structure

An exploration of the POB open-source code base.

Last Updated: 27 May 2022 • Page Author: Jillur Quddus

Overview

This page is intended for software engineers who wish to gain a better understanding of the structure of the POB open-source code base.

Prerequisites

Please ensure that you have read and followed the instructions in the Build from Source and Development Environment articles respectively prior to reading this page.

Software Services

The POB open-source code base can be broadly divided into the following categories.

Configuration

The following Maven modules are relative to $POB_BASE.

Entity Model

The following Maven modules are relative to $POB_BASE.

Core Services

The following Maven modules are relative to $POB_BASE/pob-core.

Data Services

The following Maven modules are relative to $POB_BASE/pob-data.

Application Wrappers

The following Maven modules are relative to $POB_BASE/pob-apps.

Parent POM

The POB parent POM, found at $POB_BASE/pom.xml, contains the exhaustive list of all 3rd party Java dependencies directly utilised by the POB open-source project along with their version numbers. All the POB Maven modules listed above are children (or grandchildren) of the parent POM and thus inherit all configuration defined in it.

Parent Maven Profiles

In addition to dependency management, the POB parent POM also defines the following Maven profiles that can be selected based on which services you wish to build and package:

Maven Application Profiles

In addition to the Maven profiles defined in the POB parent POM, four (4) further Maven application-specific profiles are defined in $POB_BASE/pob-apps/pom.xml. These Maven profiles enable software and platform engineers to explicitly select which Spring Boot applications to compile, build and package based on the target deployment environment, as follows:

Last updated