Build from Source

Clone the POB source code repository to your development or deployment environment, and build the POB software services and applications.

Overview

This page details how to clone the POB source code repository into your development or deployment environment, and then how to compile, build and package the respective POB software services and applications ready for deployment.

Build Tools

Please ensure that the following prerequisite build tools are installed in your development or deployment environment:

  • OpenJDK 11 - open source reference implementation of Java 11. Please confirm that OpenJDK 11 (or equivalent) is installed correctly by running the following command via your command line:

$ java -version

openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
  • Apache Maven - open source build automation tool for Java. Please confirm that Apache Maven is installed correctly by running the following command via your command line:

$ mvn --version

Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.13, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "5.13.0-28-generic", arch: "amd64", family: "unix"
  • Git - open source distributed version control system. Please confirm that Git is installed correctly by running the following command via your command line:

$ git --version

git version 2.25.1

Source Code Repository

Cloning the Source Code

To clone the POB source code repository into your development or deployment environment, please run the following Git command via your command line (or your preferred Git GUI tool):

# Clone the POB GitHub public repository
$ git clone https://github.com/hyperlearningai/pob.git

# Navigate into the POB project folder
# This location will hereafter be referred to as $POB_BASE
$ cd pob

The directory into which you cloned the POB source code repository will hereafter be referred to as $POB_BASE throughout the remaining documentation.

Maven Profiles

Parent Profiles

The following table describes the Maven profiles defined in $POB_BASE/pom.xml.

Profile Name
Default Profile
Description

apps

Yes

Manages the lifecycle of all of POB's core services as well as all POB Spring Boot applications across all cloud vendors.

Application Profiles

The following table describes the Maven profiles defined in $POB_BASE/pob-apps/pom.xml.

Profile Name
Default Profile
Description

apps-multicloud

Yes

Manages the lifecycle of all POB Spring Boot applications (i.e. serverless function apps and API applications) across all cloud vendors.

apps-spring

No

Manages the lifecycle of Spring Boot applications designed for development and testing purposes, or for deployment to self-managed or Spring Cloud environments.

apps-aws

No

Manages the lifecycle of AWS Spring Boot applications designed for deployment to AWS Lambda and AWS Beanstalk apps respectively.

apps-azure

No

Manages the lifecycle of Microsoft Azure Spring Boot applications designed for deployment to Azure Function apps and Azure Web Apps respectively.

Compile and Build

Configuration

Please ensure that you have entered the correct configuration into the Spring bootstrap and application property files, appropriate to your target deployment environment, prior to running mvn package below.

Package

To compile and build POB services and applications from source, please run the following commands from your command line.

# Navigate to $POB_BASE
$ cd $POB_BASE

# Clean the project working directory
$ mvn clean

# Compile, build and package POB
# By default this will build all services and applications
$ mvn package

# If you wish to build POB's core services only, 
# then disable the "apps" Maven profile as follows.
$ mvn package -P \!apps

# If you wish to build POB's core services but only the
# apps intended for deployment to a self-managed environment
# or to Spring Cloud, then enable the "apps-spring" Maven 
# profile as follows.
$ mvn package -P apps-spring

# If you wish to build POB's core services but only the
# apps intended for deployment to AWS, then enable the 
# "apps-aws" Maven profile as follows.
$ mvn package -P apps-aws

# If you wish to build POB's core services but only the
# apps intended for deployment to Azure, then enable the 
# "apps-azure" Maven profile as follows.
$ mvn package -P apps-azure

Deployment

Assuming that mvn package completes successfully, you are now ready to deploy POB. Please follow the links below for deployment instructions specific to your target deployment environment:

  • Self Managed - deploy POB to a self-managed on-premise, public/private cloud or hybrid environment, integrated with entirely open-source self-managed software services including HashiCorp Vault and HSQLDB.

  • Microsoft Azure - deploy POB to the Microsoft Azure cloud computing platform, integrated with Azure managed services including Azure Key Vault and Azure Functions.

  • Amazon Web Services - deploy POB to the Amazon Web Services (AWS) cloud computing platform, integrated with AWS managed services including AWS Secrets Manager, Amazon S3, Amazon RDS and AWS Lambda.

Last updated